ZooKeeper 主要特点记录 和主要应用场景

ZK 特点

ZooKeeper通过自有的ZAB协议实现了多个节点的分布一致性,在此基础上,ZK还实现了如下特性:
1. version:每一个节点,拥有自身节点的修改版本、acl版本、子节点增删的版本,这三个版本有利于实现ZK集群的原子性,实现锁的功能
2. 对节点更改的监听watcher:watcher是通知一次后就作废的,需要反复注册,注册后,可以监听多种节点的事件,实现ZK集群的推消息,及时更新数据
3. 顺序节点:ZK的节点对子节点拥有一份顺序的记录,如果创建同名的顺序节点的话,会按计数器顺序创建多个有序的节点
4. 临时节点:临时节点在会话结束(不是TCP断开)的时候就会一并删除,并且节点删除的事件可以通过watcher监听到,这对于需要知道其他节点状态的需求很有用
5. ACL 权限控制列表:通过ACL,可以分割应用,实现对节点操作的角色分类
6. Observer角色:除了leader、follower外,ZK还有Observer角色,这个角色不参与投票,只同步数据,可以用来处理读请求

Zk抽象出的角色

  1. 消息发布与订阅:利用ZK的watcher,ZK可以用来实现消息的订阅与发布,有需求的客户端通过watcher监听节点数据变化,如果有服务器更新了节点,客户端可以及时得知
  2. 分布式系统节点检测:利用ZK 临时节点的特性,ZK可以为其他分布式系统提供心跳检测的功能
  3. 分布式系统的协调者:利用Zk的一致性和顺序节点的特性,将顺序节点抽象为FIFO队列,那么Zk就可以利用顺序,完成分布式系统各节点的协调工作。
  4. 集群的广播工具:利用ZK的watcher特点,ZK的节点信息可以为其他集群提供广播消息的功能,也可以做到分组广播
  5. 元数据存储器:ZK本身作为一个高可靠的集群,节点内可以存储小量数据,这个特点使它可以称为其他集群的配置源,如果配置变动,集群总是可以通过监听事件及时得知

ZK的应用

  1. 负载均衡:即可以通过ZK作为元数据存储IP,方便IP修改,也可以利用ZK做协调者,协调各节点
  2. 获得全局唯一命名:利用ZK作为协调者,通过顺序节点的特性,得到唯一的命名,可以作为一个主键生成方法
  3. master选举:利用ZK作为协调者,并发对一个节点的创建只有一个会成功,那么这个节点的反复创建删除,就成了master选举的过程
  4. 分布式队列:利用ZK协调者的角色,借助顺序节点实现的队列
  5. 分布式读写锁:利用ZK作为协调者,借助顺序节点,将多个读写请求排队,后面节点监听前面节点的删除事件来实现进入临界区的操作。其中读节点需要监听它前面的写节点,写节点需要监听它前一个节点

猜你喜欢

转载自blog.csdn.net/lqadam/article/details/79569239