<small id='woFy3'></small> <noframes id='YqdCN'>

  • <tfoot id='KuqRTenIJj'></tfoot>

      <legend id='Yx2SZNnv'><style id='UvPwkEA'><dir id='W6pV'><q id='gywmS0P'></q></dir></style></legend>
      <i id='QhrtbODKCW'><tr id='LyR6pug'><dt id='LBIM6PSv9x'><q id='VeNmT'><span id='U8k0iM'><b id='M427aK'><form id='lf2iWZJTk'><ins id='fjzoL6'></ins><ul id='3eEulMwS7'></ul><sub id='CPWrix'></sub></form><legend id='Bw7ND4zV'></legend><bdo id='mLeF'><pre id='sD1dwfTY'><center id='dzcHUuIZ'></center></pre></bdo></b><th id='m9PjI'></th></span></q></dt></tr></i><div id='4z2B1HsC'><tfoot id='hQMcO5q'></tfoot><dl id='Q4ghK3'><fieldset id='hPEAO6vUQ'></fieldset></dl></div>

          <bdo id='p5VOBnZC'></bdo><ul id='pwb4Ym'></ul>

          1. <li id='m59F'></li>
            登陆

            Zookeeper技能内情——深化探求Leader推举进程

            admin 2019-11-01 309人围观 ,发现0个评论

            概要

            1. 什么时候 leader 选举
            2. 选举的过程
            3. 脑裂

            ZK 集群中,服务器节点,有 3 中角色:

            Leader:ZK 集群工作机制的核心:

            • 调度者:集群内部各个服务节点的调度者
            • 事务请求:事务请求的唯一Zookeeper技能内情——深化探求Leader推举进程调度和处理者,保证集群事务处理的顺序性

            Follower:

            • 非事务请求:Follower 直接处理非事务请求,对于事务请求,转发给 Leader
            • Proposal 投票:Leader 上执行事务时,需要 Follower 投票,Leader 才真正执行
            • Leader 选举投票

            Observer:ZK 3.3.0+ 版本开始引入,提升 ZK 集群的非事务处理能力

            • 非事务请求:Follower 直接处理非事务请求,对于事务请求,转发给 Leader

            Observer 跟 Follower 的区别:

            1. Follower 参与投票:Leader 选举、Proposal 提议投票(事务执行确认)
            2. Observer 不参与投票:只用Zookeeper技能内情——深化探求Leader推举进程于提供非事务请求的处理

            Leader 选举时机

            下面任何一种情况,都会触发 Leader 选举:

            1. 启动时,集群服务器刚启动
            2. 运行时,Leader 崩溃

            服务器的状态流转:

            过程

            Leader 选举过程,本质就是广播优先级消息的过程,选出数据最新的服务节点,选出优先级最高的服务节点,基本步骤:

            1. 各个服务器节点,广播自己的优先级标识 (sid,zxid)
            2. 服务器节点收到其他广播消息后,跟自己的优先级对比,自己优先级低,则变Zookeeper技能内情——深化探求Leader推举进程更当前节点投票的优先级(sid,zxid) ,并广播变更后的结果
            3. 当任意一个服务器节点收到的投票数,超过了法定数量(quorum),则,升级为 Leader,并广播结果。

            关于sid和zxid的详解:

            1. 服务器节点的优先级标识:(sid,zxid)
            2. 优先比较 zxid (事务 ID),其次比较sid(服务器ID)
            3. sid (服务器 ID) 是节点配置文件中设定的
            4. 当前服务器上的 zxid 是什么时候设定的?是在 Leader 执行事务过程中,向当前服务器同步的?如何活的当前服务器上的 Zookeeper技能内情——深化探求Leader推举进程zxid?

            如何应对网络延迟:

            1. 由于网络延时,节点得不到足够多广播信息时,会做出错误的投票判断,纠正过程更耗时
            2. 选举过程中,服务器节点会等待一Zookeeper技能内情——深化探求Leader推举进程定时间,再广播投票信息,时间间隔一般设定为 200 m牛仔裤s
            3. 上面 Leader 选举,采取事件触发 Push 方式 广播消息,称为 快速 Leader 选举,因为之前的 Leader 选举,采用 Pull 方式,每隔 1s 拉取一次。

            分布式系统 Leader 选举:脑裂

            脑裂(split brain):服务器集群的 2 个子集,能够同时独立选举 Leader,并正常运行,形成 2 个集群。

            解决办法:

            • Leader 选举的法定Zookeeper技能内情——深化探求Leader推举进程数量(quorum),超过正常集群的半数。
            • Leader 选举的必要条件:节点数量 > 法定数量。

            转自:http://ningg.top/zookeeper-lesson-2-leader-election/

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP