elasticsearch的master选举机制

 

对比其它中间件选主机制:

redis集群原理

kafka入门

Zookeeper总结

 

ES选举算法

常用的选举算法有比较简单的Bully算法和复杂而强大的Paxos算法。

Bully算法

每个节点有一个唯一ID,然后对集群中所有的节点ID进行排序,选取其中最小的ID所属的节点作为Master。
Bully算法的问题: 假设当前Master因为负载过重而假死,然后ID第二大的被选举为新的Master,这时旧的Master恢复然后又被选举为Master然后又会因为负载过重而假死......

Paxos算法

Paxos实现起来非常复杂,但非常强大,尤其在什么时机,以及如何进行选举方面的灵活性比简单的Bully算法有很大的优势,因为在现实生活中,存在比网络链接异常更多的故障模式。


ES使用的是Bully算法,并对其做了一些优化:

  • 每个节点结算最小的ID,把它选举为临时Master,然后对该master进行投票;
  • 每个节点收集票数,当票数大于指定的法定个数时,成为Master,然后对加入的节点进行集群信息广播。

流程

 

posted @ 2019-02-05 21:09  daniel456  阅读(3520)  评论(0编辑  收藏  举报