Zookeeper 简介
时间:2018-02-26 14:44:10
参考:
- 《从Paxos到Zookeeper分布式一致性原理与实践》 --倪超
Zookeeper 简介#
Zookeeper 特性#
Zookeeper大致有下面几个特性,对Zookeeper的运用也都是运用这些特性解决实际的问题:
-
节点类型:
- 临时节点:客户端和服务端之间的Session过期之后节点会自动消失。
- 持久节点:创建节点之后,节点就会一直存在,除非手动删除。
- 临时顺序节点:拥有临时节点的特性,同时会根据创建的顺序给节点添加一个编号(编号作为节点名字的一部分)。
- 持久顺序节点:拥有持久节点的特性,同时会根据创建的顺序给节点添加一个编号(编号作为节点名字的一部分)。
-
Watcher机制:节点数据变更注册时,监听该节点的的Watcher都会被通知。子节点列表变化监听该节点的Watcher也会被通知。
-
多个客户端同时创建一个节点,保证只有一个客户端可以创建成功。
-
对于有N台服务器组成的集群,保证有小于等于(N/2)-1 台服务器不能提供服务时,集群的数据仍然保持完整。
Zookeeper 应用场景#
分布式系统配置文件动态更新#
利用Zookeeper的可靠性,以及Watcher机制。把配置数据保存在Zookeeper的节点下,系统启动的时候,从数据节点读取配置信息,同时在数据节点注册Watcher,之后当配置数据变更的时候系统就会得到通知,从而实现配置参数动态变更。
分布式系统的悲观锁#
系统创建同一个临时节点(防止客户端出现网络问题,或者客户端断开后节点一直存在,而导致死锁问题),创建成功的获取锁,任务执行完成之后删除节点,创建不成功的监听父节点列表变更事件,收到变更通知之后重新尝试创建。
分布式队列:#
- 系统在父节点下创建临时顺序节点。
- 获取父节点的子节点列表。如果创建的节点是最小节点,则执行业务逻辑。如果创建的节点不是最小的节点,则监听创建节点前面那一个节点的变更事件。
- 收到通知之后重复步骤2。
全局唯一ID#
需要Id的时候就在节点下创建 job-
的顺序子节点,然后会返回带包含编号的节点名字,这个名字就可以作为一个Id使用。
Master 选举#
参与选举的节点同时创建一个临时顺序节点,创建成功的节点为Master,其余节点监听节点变化,如果Master挂掉,则重新执行选举。