常见的Leader选举机制
常见的Leader选举机制
1、投票制
- 投票制的一般流程
在集群启动或Leader宕机时,会先比较所有实例的事务号,以具有最新事务的实例作为Leader,若多个实例都有最新的事务号,则从中随机取一个(或根据实例ID选取最大或最小的,看具体实现)作为Leader,Follower再从新的Leader中同步事务。总结来说,有以下几点
1、 对比事务号,取最新事务号的
2、 若多个实例的事务号都是最新的,则按照一定的规则选(随机/实例ID最大(ZK)/实例ID最小(Neo4j)) - 常见的用投票制的组件
1、Zookeeper,Zookeeper的事务号又叫ZXID,若ZXID相同,myid大的作为Leader;
2、Neo4j,Neo4j官网没有介绍因果集群的Leader选举机制,但介绍了HA集群的Master选举机制,和Zookeeper不同的是,在transaction ID一致的情况下,ha.server_id最低的会被选举为Master
2、借助ZK
- 流程
Zookeeper有一种临时节点,所有的实例都去Zookeeper中创建路径相同的临时节点,创建成功的就是新的Leader。 - 常见的借助ZK选举Leader的组件
1、Kafka,Kafka所有的Broker都会尝试在Zookeeper的/controller路径下创建临时节点,成功创建的那个broker就会成为leader,其他的broker就会成为follower
其他组件待补充