加入收藏 | 设为首页 | 会员中心 | 我要投稿 平顶山站长网 (https://www.0375zz.cn/)- 分布式云、数据处理、媒体处理、图像分析、基础存储!
当前位置: 首页 > 站长资讯 > 评论 > 正文

大流行期间IT人员倦怠的八个建议

发布时间:2021-02-13 14:06:11 所属栏目:评论 来源:互联网
导读:服务器1(myid=1)启动,当前只有一台服务器,无法完成Leader选举 服务器2(myid=2)启动,此时两台服务器能够相互通讯,开始进入Leader选举阶段 1.每个服务器发出一个投票 服务器1 和 服务器2都将自己作为Leader服务器进行投票,投票的基本元素包括:服务器的my
  • 服务器1(myid=1)启动,当前只有一台服务器,无法完成Leader选举
  • 服务器2(myid=2)启动,此时两台服务器能够相互通讯,开始进入Leader选举阶段

1.每个服务器发出一个投票

服务器1 和 服务器2都将自己作为Leader服务器进行投票,投票的基本元素包括:服务器的myid和ZXID,我们以(myid,ZXID)形式表示。初始阶段,服务器1和服务器2都会投给自己,即服务器1的投票为(1,0),服务器2的投票为(2,0),然后各自将这个投票发给集群中的其他所有机器。

2.接受来自各个服务器的投票

每个服务器都会接受来自其他服务器的投票。同时,服务器会校验投票的有效性,是否本轮投票、是否来自LOOKING状态的服务器。

3.处理投票

收到其他服务器的投票,会将别人的投票跟自己的投票PK,PK规则如下:

  • 优先检查ZXID。ZXID比较大的服务器优先作为leader。
  • 如果ZXID相同的话,就比较myid,myid比较大的服务器作为leader。服务器1的投票是(1,0),它收到投票是(2,0),两者zxid都是0,因为收到的myid=2,大于自己的myid=1,所以它更新自己的投票为(2,0),然后重新将投票发出去。对于服务器2呢,即不再需要更新自己的投票,把上一次的投票信息发出即可。

4.统计投票

每次投票后,服务器会统计所有投票,判断是否有过半的机器接受到相同的投票信息。服务器2收到两票,少于3(n/2+1,n为总服务器5),所以继续保持LOOKING状态

  • 服务器3(myid=3)启动,继续进入Leader选举阶段

跟前面流程一致,服务器1和2先投自己一票,因为服务器3的myid最大,所以大家把票改投给它。此时,服务器为3票(大于等于n/2+1),所以服务器3当选为Leader。服务器1,2更改状态为FOLLOWING,服务器3更改状态为LEADING;

  • 服务器4启动,发起一次选举。

此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。选票信息结果:服务器3为3票,服务器4为1票。服务器4并更改状态为FOLLOWING;

  • 服务器5启动,发起一次选举。

同理,服务器也是把票投给服务器3,服务器5并更改状态为FOLLOWING;

  • 投票结束,服务器3当选为Leader

服务器运行期间的Leader选举

zookeeper集群的五台服务器(myid=1-5)正在运行中,突然某个瞬间,Leader服务器3挂了,这时候便开始Leader选举~

 

ZooKeeper集群是一主多从的结构:

  • 如果是写入数据,先写入主服务器(主节点),再通知从服务器。
  • 如果是读取数据,既读主服务器的,也可以读从服务器的。

ZooKeeper如何保证主从节点数据一致性

我们知道集群是主从部署结构,要保证主从节点一致性问题,无非就是两个主要问题:

  • 「主服务器挂了,或者重启了」
  • 「主从服务器之间同步数据」~

Zookeeper是采用ZAB协议(Zookeeper Atomic Broadcast,Zookeeper原子广播协议)来保证主从节点数据一致性的,ZAB协议支持「崩溃恢复和消息广播」两种模式,很好解决了这两个问题:

  • 崩溃恢复:Leader挂了,进入该模式,选一个新的leader出来
  • 消息广播:把更新的数据,从Leader同步到所有Follower

Leader服务器挂了,所有集群中的服务器进入LOOKING状态,首先,它们会选举产生新的Leader服务器;接着,新的Leader服务器与集群中Follower服务进行数据同步,当集群中超过半数机器与该 Leader服务器完成数据同步之后,退出恢复模式进入消息广播模式。Leader 服务器开始接收客户端的事务请求生成事务Proposal进行事务请求处理。

10、面试官:Leader挂了,进入崩溃恢复,是如何选举Leader的呢?你讲一下ZooKeeper选举机制吧

「小菜鸡的我:」

服务器启动或者服务器运行期间(Leader挂了),都会进入Leader选举,我们来看一下~假设现在ZooKeeper集群有五台服务器,它们myid分别是服务器1、2、3、4、5,如图:

(编辑:平顶山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读