MGR的新主选举算法,在节点版本一致的情况下,其实也挺简单的。首先比较权重,权重越高,选为新主的优先级越高。如果权重一致,则会进一步比较节点的server_uuid。server_uuid越小,选为新主的优先级越高。所以,在节点版本一致的情况下,会选择权重最高,server_uuid最小的节点作为新的主节点。节点的权重由group_replication_member_weight决定,该参数是MySQL5.7.20引入的,可设置0到100之间的任意整数值,默认是50。但如果集群节点版本不一致,实际的选举算法就没这么简单了。下面,我们结合源码具体分析下。代码实现逻辑新主选举算法主要会涉及三个函
MGR的新主选举算法,在节点版本一致的情况下,其实也挺简单的。首先比较权重,权重越高,选为新主的优先级越高。如果权重一致,则会进一步比较节点的server_uuid。server_uuid越小,选为新主的优先级越高。所以,在节点版本一致的情况下,会选择权重最高,server_uuid最小的节点作为新的主节点。节点的权重由group_replication_member_weight决定,该参数是MySQL5.7.20引入的,可设置0到100之间的任意整数值,默认是50。但如果集群节点版本不一致,实际的选举算法就没这么简单了。下面,我们结合源码具体分析下。代码实现逻辑新主选举算法主要会涉及三个函
zookeeper的leader选举存在两个阶段,一个是服务器启动时leader选举,另一个是运行过程中leader服务器宕机。在分析选举原理前,先介绍几个重要的参数。服务器ID(myid):编号越大在选举算法中权重越大事务ID(zxid):值越大说明数据越新,权重越大逻辑时钟(epoch-logicalclock):同一轮投票过程中的逻辑时钟值是相同的,每投完一次值会增加选举状态:LOOKING:竞选状态FOLLOWING:随从状态,同步leader状态,参与投票OBSERVING:观察状态,同步leader状态,不参与投票LEADING:领导者状态1、服务器启动时的leader选举每个节点
zookeeper的leader选举存在两个阶段,一个是服务器启动时leader选举,另一个是运行过程中leader服务器宕机。在分析选举原理前,先介绍几个重要的参数。服务器ID(myid):编号越大在选举算法中权重越大事务ID(zxid):值越大说明数据越新,权重越大逻辑时钟(epoch-logicalclock):同一轮投票过程中的逻辑时钟值是相同的,每投完一次值会增加选举状态:LOOKING:竞选状态FOLLOWING:随从状态,同步leader状态,参与投票OBSERVING:观察状态,同步leader状态,不参与投票LEADING:领导者状态1、服务器启动时的leader选举每个节点