集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。
Client1作为配置管理应用:
Zookeeper很容易实现这种集中式的配置管理。
来看具体的例子:
新增三个Client,模拟真实系统的应用。
Client1作为配置管理应用:
创建config znode,设置配置的默认值:
获取配置的默认值:
通过手动输入新的配置来模拟配置管理里配置的更改:
再来看Client2和Client3:
获取ZkWatcher实例;
通过zk.exists监听"/root/config" znode;
启动后获取默认的配置;
来看ZkWatcher的实现:
初始化时对ZooKeeper进行实例化。
从ZooKeeper里获取最新的配置信息;
再次通过zk.exists()方法监听znode,因为ZkWatcher监听一次事件改变后会失效,必须要再次配置监听。
Client3和Client2的实现一致。
启动ZooKeeper服务器,来看运行的结果:
使用ZooKeeper的好处就是可以将整个系统中的配置集中管理,只需在一个地方更改,所有的系统中的应用都会被ZooKeeper通知更改,不用再对每个应用一一更改。