znode 종류
lifecycle에 따른 option으로 Persistent / Ephermeral 을 선택할 수 있고, uniqueness으로 sequential 여부를 설정할 수 있습니다.
Persistent mode : 명시적으로 삭제하지 않는 한 지워지지 않는 파일로 볼 수 있습니다.
Ephermeral mode : zookeeper client와 session이 끊겨지면 자동으로 지워지는 개념입니다. 해당 모드로 lock이나 leader election을 구현합니다.
Sequence mode : Persistent / Ephermeral 모두 sequence mode로 만들 수 있으며, znode는 주어진 이름 뒤에 postfix로 10진수 숫자가 더 붙여집니다.
Stat
znode는 node와 node이 관한 data를 갖고있으며 이를 stat이라고 부릅니다.
- czxid : znode를 생성한 트랜잭션의 id
- mzxid : znode를 마지막으로 수정 트랜잭션의 id
- ctime : znode가 생성됐을 때의 시스템 시간
- mtime : znode가 마지막으로 변경되었을 때의 시스템 시간
- version : znode가 변경된 횟수
- cversion : znode의 자식 node를 수정한 횟수
리더선출
임의의 path /data에 클러스터 노드들을 Ephemeral-sequential 모드로 생성합니다. 5개의 서버가 있으면 각 각 /data에 create node하면 /data/node-00000, /data/node-00001, /data/node-00002 이런식으로 생성되게 됩니다. 이 중 가장 작은 수를 갖는 노드를 리더로(primary node) 정합니다
리더 recovery
각 node를 sequential하게 만들었기 때문에 000의 node 뒤의 001 노드가 backup node가 되어서 wacher로 사용하게 됩니다. watcher는 특정 노드에 생기는 이벤트를 감지하면 특정 actino를 취할 수 있습니다.