It took me a while to understand the concept of Zookeeper and it took me another some to understand how to use it for the task that I had begun with. This post is intended to help others cross the bridge faster.
Dynamic Configuration Management for today’s system comes with all the nitty-gritties that are involved with a distributed environment. A distributed environment is relatively unreliable, with problems like network failures, clock synchronization, and it becomes the responsibility of each server to keep track of correctness of current configuration. These problems are the motivation behind configuration and coordination systems.This particular post looks at Zookeeper as a configuration management tool. A short and good course on ZookeeperSetup: A zookeeper cluster with 5 servers. A java wrapper that uses zookeeper to keep track of configuration changes. For our purposes we used the Curator framework.Read zookeeper multi-server setup on a single host for setting up zookeeper cluster.In your java project include the dependency for the curator framework. Initializing connection to Zookeeper ensemble
Creating a new znode
Setting data of a znode
Deleting a znode
Get children and set the given watcher on the node
Get Data of the node and set a watcher on the node
Zookeeper works on the idea of client setting watches on znodes. Whenever the znode changes, the watch is triggered, that is, the client is notified.We should have a class that implements the Watcher interface. This class should implement the process method. This is called if and when the corresponding changes occur.
Its important to note that watches are one time event and if its required to continue monitoring the changes the watch needs to be set again. All the read operations like getData(), getChildren() and exists() have the option of setting a watch. These watches are triggered on the corresponding changes.That’s all for getting the configuration management with zookeeper up and running.