The problem of coordination process in the distributed system is always a big challenge. The ZooKeeper is trying to solve this problem in a more general way.
The key components of ZooKeeper are illustrated as follows:
Wait-Free: ZooKeeper do not use locks for coordinations. Lock-free can achieve faster processing time, since the slow process cannot block other normal processes.
Order guarantee: Writes are linearizable (strongest guarantee), FIFO client ordering of all operations.
Watch mechanism: enable clients to see the updates on objects.
Different from previous work, ZooKeeper is a more general approach, which enable users implement their own primitives by exposing ZooKeeper's API. It is more like a coordination kernel.
In order to guarantee the operations satisfy linearzability, ZooKeeper incorporates with a leader-based atomic broadcast protocol called Zab. However, this atomic broadcast protocol also has shortcomings. Specifically, the atomic broadcast limits the throughput performance of ZooKeeper, when the size of ensemble increases.
ZooKeeper is a general coordination mechanism, and works well in many kinds of applications in or outside Yahoo!. I think it will still has impacts in next 5-10 years.
No comments:
Post a Comment