分布式系列:分布式系统之聊聊选举算法

本文介绍了分布式系统中的三种选举算法:Bully算法以其简单的ID最大值原则选举主节点,适合节点数量稳定的系统;Raft算法基于投票机制,遵循“少数服从多数”,在Kubernetes的etcd组件中被采用;ZAB算法是Zookeeper的选举算法,结合了数据ID,确保数据的新鲜度。每种算法都有其适用场景和优缺点。
摘要由CSDN通过智能技术生成

在分布式系统中采用的是主从架构,也就是有一个主节点,若干个从节点。主节点可以执行读写操作,从节点只执行读操作。采用这种一主多从的方案,可以有效保证了数据的一致性(哪怕不是强一致性,也能有效保证最终一致性)。

在开源的Redis,MongoDB,Zookeeper等软件中也都采用了的选举算法,常用的选举算法有以下三种:Bully算法,Raft算法,ZAB算法。

1、Bully算法

Bully算法是一种简单直接的算法,因为它的选举原则是取ID的最大值作为主节点。在Bully算法中,有两种节点角色:普通节点和主节点。初始化的时候,所有节点都是普通节点。当主节点挂掉了,才会发起下一轮选举。

在选举中,有三种消息,分别是Election消息,用于发起选举。Alive消息,对Elelction消息的回复。Victory消息是选主成功后向其他节点发送的通知消息。选举过程如下:

  • 集群中每个节点判断一下自己的节点ID是否为存活节点中最大,如果是则直接发送Victory消息,宣布自己为主节点。
  • 如果自己不是最大的ID节点,则向比自己大的节点发送Election消息,等待其他节点回复。
  • 在指定时间内没有收到其他节点Alive信息,则认为自己是主节点,然后向其他节点发送Victory消息,宣布自己是主节点。如果收到比自己ID大的节点Alive消息,则等待其他节点发送Victory消息。
  • 如果收到比自己节点ID小的消息,则回复Alive消息,告诉对方重新选举。

该算法简单易于实现,但是当频繁有节点加入或退出,会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值