ZooKeeper – Initial Thoughts

Recently I have been doing a lot of work with ZooKeeper. so I wanted to take a chance to express some opinions on using.

ZooKeeper is an open source config management server.  It boasts the ability to be used for several purposes:

  • Presence Protocol
  • Server / Config Management
  • Leader Election

My initial reactions tell me that ZooKeeper does in fact achieve it’s purpose of providing those services. It is able to do that because of the design that was used when it was being created.  ZooKeeper was designed to allow for high throughput and high availability.  Keeping that purpose in the forefront of the developers minds allowed then to tailor the implementation to achieve those goals.

ZooKeeper is easy to use.  Within a short amount of time of downloading and installing the base package we were able to have a basic ZooKeeper ensemble up and running.  The learning curve of implementing ZoKeeper was not harsh… it uses simple get and set commands.  The learning curve for us was on understanding how to setup proper watches and acl’s.

As they boast – it is incredibly light weight.  Initial tests proved very snappy response rates.  By default you are only able to save a key/value that is less then 1MB in total size – which forces you to keep its usage to that of a lightweight config based server.  Yahoo boasts impressive load results from their tests and when performing our own load tests against even a single server – we saw great numbers on throughput… In Asynchronous mode we saw about 3K create/set operations per second and roughly 6K get operations per second.

So – in an effort to keep the post short – my conclusion is that ZooKeeper – although young – is a great project with a lot of potential for high read config management solutions.