Zookeeper

Zookeeper 功能说明
zookeeper 是一个分布式应用程序协调服务;它提供的功能有:命名服务、配置
管理、集群管理、分布式锁、队列管理。

 

命名服务:在 zookeeper 的文件系统里创建一个目录可与下游程序约定好路径,
通过路径即能互相探索发现。

 


配置管理:在做应用服务器集群的时候;可以将项目修改的配置文件全部放到
zookeeper 上面,保存到 zookeeper 的某个目录节点中,然后相关程序对这个目
录节点进行监听,一有配置文件发送变化,那么每个应用程序都将收到通知,然
后从 zk 里面获取最新配置文件同步到应用服务器上。

 

集群管理:在应用服务器集群的时候;是否有集群节点加入或退出的时候,
zookeeper 可以感知并通知其它应用服务器知晓当前各个集群节点的在线状态。
所有机器约定在父目录下创建临时目录节点,然后监听父目录节点的子节点变化
消息。一旦有机器挂掉,该机器与 zookeeper 的连接断开,其所创建的临时目录
节点被删除,所有其他机器都收到通知:某个兄弟目录被删除。

 

分布式锁:zookeeper 上的一个 znode 看作是一把锁,通过 createznode 的方式来
实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端
也即拥有了这把锁。用完删除掉自己创建的 distribute_lock 节点就释放出锁。(关
于分布式锁,可以使用 redis 的 setnx 命令来实现也是一种方法)


队列管理:第一种同步队列:当一个队列的成员都聚齐时,这个队列才可用,否
则一直等待所有成员到达(在约定目录下创建临时目录节点,监听节点数目是否
是要求的数目)。第二种队列按照 FIFO 方式进行入队和出队操作。


Zookeeper 工作原理
Zookeeper 的核心是原子广播,这个机制保证了各个 Server 之间的同步。实现这
个机制的协议叫做 Zab 协议。Zab 协议有两种模式,它们分别是恢复模式(选主)
和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab 就进入了恢复模式,
当领导者被选举出来,且大多数 Server 完成了和 leader 的状态同步以后,恢复
模式就结束了。状态同步保证了 leader 和 Server 具有相同的系统状态。

posted @ 2018-11-17 20:06  ng-xixi  阅读(122)  评论(0编辑  收藏  举报