Distributed coordination with Apache Zookeeper
igvita.com
igvita.com
In my view, Zookeeper's biggest shortcoming is that it doesn't support dynamic membership. That is to say that the Zookeeper nodes themselves are not self-organizing, you have to specify the ip addresses of all Zookeeper cluster members. Issue 107 [1] tracks this deficiency.
I don't mean to be totally negative. I really respect what the zk team has done and it's a fantastic tool that is often and unfortunately overshadowed by Hadoop. I think a small, reliable, coordination cluster providing atomic distributed primitives is an excellent distributed system architecture. Obviously Google and Yahoo have had success with it. I just recently learned that Ceph takes a similar approach.
Zookeeper feels like they spent a lot of time re-implementing Erlang's node and communication system in Java. In their design doc, they talk at length about how messages are guaranteed to be delivered in-order (and they seem very proud of this fact).
I think Zookeeper could be implemented in Erlang with 1/5th the code and 5x the reliability of what they have now.