zhoutian_car_tt
2021-09-15 10:13
采纳率: 0%
浏览 28

为什么需要集群Leader的“选举机制”,“顺位继承”不香吗?

  • 我们知道,对于类似zookeeper这种强一致性分布式服务框架,需要一种保证任意时刻只有一个Leader存在的机制。不过我有个疑问,为什么一定要用“选举机制”来保证呢?什么ZAB协议,什么Serverid,Zxid,Epoch这些东西,不复杂吗?
  • 我的想法是能否用类似“顺位继承”机制来代替,具体算法是:任意一个节点在加入集群的时候就获得一个唯一序号,并且每个节点都保存一份最新的序号列表、当前Leader序号、自己的序号。最先成为Leader的序号最小,当Leader挂了,集群存活的节点之间无需“选举”,都自动认为比该Leader的序号大的下一个序号所在的节点成为下一任Leader,这就是所谓的“顺位继承”。至于节点进入集群时的序号生成算法,选择就太多了,如:随机、自增、按节点自身的资源权重进行计算(比如自身的资源CPU、内存、硬盘比其他节点高,自身生成的序号就可以更靠近当前Leader的序号)等等都可以。
  • 当然,这种依赖“序号”的顺位继承机制也是有缺陷的,比如当前Leader的序号可能会一直变大,最终用尽,到时候需要一种序号重排的算法为集群里的所有节点进行序号重排。但是比起“选举”所消耗的资源和时间,我认为“顺位继承”显然是更香的。
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • CSDN专家-微编程 2021-09-15 10:34

    选举可以保证能从集群中找出一个最优的服务晋升为Leader继续处理事务和调度等一系列职责

    打赏 评论

相关推荐 更多相似问题