Zookeeper

214 阅读1分钟

定义

基于观测者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,接受观察者的注册,一旦数据状态发生变化,Zookeeper将负责通知Zookeeper上注册的观察者做出反应。

  1. Leader + Followers
  2. 半数以上节点存活,Zookeeper集群就能正常服务
  3. 全局数据一致:每个Server保存一份相同的副本
  4. 更新请求顺序进行
  5. 数据更新原子性
  6. 实时性

选举机制

半数机制:集群中半数以上机器存活,集群可用。

节点类型

持久(Persistent):客户端与服务器端断开连接后,创建的节点不删除 短暂(Ephemeral):客户端与服务器端断开连接后,创建的节点删除

监听器原理

  1. 开启main()线程
  2. 在main线程中创建Zookeeper客户端,创建两个线程:网络连接通信(connet)和监听(listener)
  3. 通过connet将注册的监听事件发送给Zookeeper
  4. 将监听事件添加到Zookeeper的注册监听器列表中
  5. Zookeeper监听到有数据或路径变化后,将消息发送给listener
  6. listener调用process()方法

常见监听

  • 监听节点数据的变化:get path
  • 监听子节点增减 ls path

CAP法则

分布式系统中的一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)

ZAB协议

Zookeeper Atomic Broadcast,保持分布式事务一致性

Zookeeper符合强一致性、高可用性。