定义
基于观测者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,接受观察者的注册,一旦数据状态发生变化,Zookeeper将负责通知Zookeeper上注册的观察者做出反应。
- Leader + Followers
- 半数以上节点存活,Zookeeper集群就能正常服务
- 全局数据一致:每个Server保存一份相同的副本
- 更新请求顺序进行
- 数据更新原子性
- 实时性
选举机制
半数机制:集群中半数以上机器存活,集群可用。
节点类型
持久(Persistent):客户端与服务器端断开连接后,创建的节点不删除 短暂(Ephemeral):客户端与服务器端断开连接后,创建的节点删除
监听器原理
- 开启main()线程
- 在main线程中创建Zookeeper客户端,创建两个线程:网络连接通信(connet)和监听(listener)
- 通过connet将注册的监听事件发送给Zookeeper
- 将监听事件添加到Zookeeper的注册监听器列表中
- Zookeeper监听到有数据或路径变化后,将消息发送给listener
- listener调用process()方法
常见监听
- 监听节点数据的变化:get path
- 监听子节点增减 ls path
CAP法则
分布式系统中的一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)
ZAB协议
Zookeeper Atomic Broadcast,保持分布式事务一致性
Zookeeper符合强一致性、高可用性。