zookeeper中的角色:
1:领导者(leader)
负责进行投票的发起和决议,更新系统状态
2:学习者
①跟随者:Follower:接受客户端的请求并向客户端返回结果,在选举过程中参与投票
②观察者:Observer:接受客户端的请求并像客户端返回结果,在选举过程中不参与投票。设置观察者的目的为了扩展系统,提高读取效率
3:客户端
请求调用方。
zookeeper中每个server在工作中的三种状态
(1)LOOKING:当前Server不知道leader是谁,正在搜寻。
(2)LEADING:当前Server即为选举出来的leader。
(3)FOLLOWING:leader已经选举出来,当前Server与之同步。
zookeeper的watch机制实现原理
zookeeper的watch机制,也就是发布订阅模式,采用一种推拉组合的方式设计实现。服务器一旦感知到主题的变化,会“推”事件类型和节点信息给订阅的客户端,但并不包括具体的变更内容,因此这个事件本身是轻量的。客户端收到事件后,会主动像服务器“拉”取变更的数据。
zab协议
Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播)。
Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。
Zookeeper 客户端会随机的链接到 zookeeper 集群中的一个节点,如果是读请求,就直接从当前节点中读取数据;如果是写请求,那么节点就会向 Leader 提交事务,Leader 接收到事务提交,会广播该事务,只要超过半数节点写入成功,该事务就会被提交。
Zab 协议的特性:
1)Zab 协议需要确保那些已经在 Leader 服务器上提交(Commit)的事务最终被所有的服务器提交。
2)Zab 协议需要确保丢弃那些只在 Leader 上被提出而没有被提交的事务。
参考博客 https://blog.csdn.net/gs80140/article/details/51496925
zookeeper watch机制:https://blog.csdn.net/z69183787/article/details/53023578