分布式选举协议:Bully

一 Bully算法

Bully算法是一种相对简单的选举算法,他的核心思想就是选举一个ID最大的进程作为Master。

它在选举的过程中,主要包括以下三种消息类型:

# Election: 表示发起一次选举消息

# Answer: 如果该进程处于存活状态,则对选举消息进行响应的消息

# Coordinate: 选举胜利者向其他进程发送的选举成功的消息

二 选举流程

2.1 发生选举的时机

# 进程收到Master节点失效的消息(没有Master了需要重新选举Master)

# 进程从失败中恢复(比如Master节点失效了,最后恢复了,因为他的ID是最大的,所以他又会重新选举)

2.2 进程P选举的流程

2.2.1 进程P的ID最大,他会向其他节点发送Coordinator消息,宣布自己是Master,常见场景比如之前的Master恢复或者Master失败后,当前进程的ID最大

2.2.2 如果P进程的ID不是最大的,则向比它大的进程发送Election消息,即选举消息

情况一: 收到比它ID大的进程的应答

假设Node A挂掉了,然后当前进程是Node B, 然后Node B向比自己大的进程发送Election消息。

如果它向Node C发送消息,则收到Node C返回的Answer消息,则Node B选举失败,等待接收其他节点的Coordinator消息;

情况二: 没有收到比它ID大的进程的应答

Node D向比自己ID大的Node A发送Election消息,但是Node A没有回复,则没有向Node D返回Answer消息,因为Node D没有收到Answer消息,则Node D就会向其他节点广播Coordinator消息,宣布自己是Master

2.2.3 如果进程P收到ID比自己小的进程的Election消息,它会返回每一个Answer消息;并且他自己也启动选举流程,向比它更高ID的进程发送Election消息

假设Node B向比它ID大的Node C发送Election消息,Node C返回Answer消息,Node B等待被其他其他发送Coordinator消息;然后Node C也启选举进程,向比自己大的Node D发送Election消息,然后返回Answer消息,则Node C等待被其他其他发送Coordinator消息。

2.2.4 如果进程P收到其他进广播的Coordinator消息,那么他就会把发送这条Coordinator消息的进程看作为Master进程

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫言静好、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值