3. Introduction
• Originally developed at Yahoo
• Centralised coordination service, including
configuration management, election, lock, and etc
ensemble
9. Cluster
• Three servers at least
• Add server list in conf/zoo.cfg and myid in dataDir
# zoo,cfg for zoo1
server.1=localhost:2666:3666
server.2=localhost:2667:3667
server.3=localhost:2668:3668
1
dataDir/myidconf/zoo.cfg
12. Queue
Put an item
1. Create a /znode /queue-A/item- with sequential flag
Pop an item
1. Get children [n,n+1,…] of /znode /queue-A
2. Delete /znode /queue-A/item-n
13. Lock
Acquire a lock
1. Create a /znode /lock/resource-m with ephemeral/sequential flag
2. Get children [n,n+1,…] of /znode /lock-
3. If /znode /lock-n is created in step 1, lock is acquired. Exit.
4. Watch /znode /lock-n (/znode /lock-(m-1)). When /znode /lock-n
deleted, go to step 2.
Release a lock
1. Delete the znode created in step 1.
14. Curator
• A high-level wrapper library
developed in Netflix originally
• Curator handles operation
retry
• Curator implements recipes
17. • Epoch proposal NEWEPOCH(e): e is new epoch
• ACK-E(e_curr, hist): e_curr is current epoch of follower and
hist is current operation history
• Leader proposal NEWLEADER(e, I): I is initial state derived
from operation histories in ACK-E
ZAB