配置信息管理
在当前的分布式系统的环境下,已经离不开zookeeper(或者类似的分布式系统管理协调方案)这样的类似方案了。分布式系统的协调管理框架简化了我们对于分布式系统的管理以及部署。
问题背景
试想一下,当在几台机器上进行配置信息的管理已经是一件比较麻烦的事儿了,例如配置mycat集群,一个配置文件就需要复制多份。假如有一个服务器集群,成百上千台,加入需要更新配置怎么办?难道需要到每一台服务器上去执行更新吗?这样的话太过繁琐而且容器出错。既然zookeeper可以存储数据,那么能不能利用zookeeper来进行集群的配置管理呢?
需要解决的问题
zookeeper上需要能够存储我集群所需要的的东西
而且当数据发生更新的时候需要能够通知到我的客户端
原理
我们知道zookeeper的client是可以对节点进行监控的,当节点发生变动的时候,client会收到事件通知和变动的内容;基于此,我们可以让client都在zk上注册一个watch事件,监控某个Znode,当这个Znode发生变化的时候,就通知client节点发生了变化,触发响应的事件。就是利用zk节点可以监控以及通知的特点,一发生修改,就立即通知。
把配置信息存储到zk的节点中,为每个应用添加zk节点监听。一旦相关的配置属性发生变化,所有的服务节点都可以及时监听到这种变化以及获得变化后的值。