Zookeeper相关原理解析

本文深入解析Zookeeper的选举机制,包括初始化及运行期间的选举过程,阐述了Zookeeper如何保证数据一致性,强调了选举过程中节点状态变化及投票逻辑。同时,介绍了Zookeeper的watcher机制,详细讲解了一次性触发、事件封装和异步发送等特性,以及客户端与服务器之间的交互流程。
摘要由CSDN通过智能技术生成

一、Zookeeper节点的4种状态:
      LEADING:说明此节点已经是leader节点,处于领导者地位的状态,差不多就是一般集群中的master。但在zookeeper中,只有leader才有写权限,其他节点(FOLLOWING)是没有写权限的,可以读

      LOOKING:选举中,正在寻找leader,即将进入leader选举流程中

      FOLLOWING:跟随者,表示当前集群中的leader已经选举出来了,主要具备以下几个功能点             

                向leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息)

                接收leader消息并进行处理;

                接收client发送过来的请求,如果为写请求,会发送给Leader进行投票处理,然后返回client结果。

      OBSERVING:OBSERVING和FOLLOWING差不多,但不参加投票和选举,接受leader选举后的结果

二、Zookeeper中Leader选举

初始化
当启动初始化集群的时候,server1的myid为1,zxid为0   server2的myid为2,zxid同样是0,以此类推。此种情况下zxid都是为0。先比较zxid,再比较myid

服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的myid大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的myid最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的myid大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
服务器5启动,后面的逻辑同服务器4成为小弟
当选举机器过半的时候,已经选举出leader后,后面的就跟随已经选出的leader,所以4和5跟随成为leader的server3

所以,在初始化的时候,一般到过半的机器数的时候谁的myid最大一般就是leader

运行期间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值