RAFT一致性算法关于成员变更(membership change)问题讨论

本文讨论了RAFT一致性算法在成员变更时的场景、问题及解决方案。分析了停机变更、在线变更的优缺点,提出了Learner角色作为优化点。进一步介绍了RAFT论文提出的joint consensus方案,保证成员变更过程中的集群可用性。最后强调了阅读原始论文的重要性。
摘要由CSDN通过智能技术生成

什么场景需要变量

正常情况下,我们最多接触的是RAFT中选举Leader,并正常提交数据的过来。并且了解leader或者follower出现故障之后,如何恢复的过程。今天讨论的场景,是关于成员变更。例如:A、B、C三台机器,A机器负载比较高,需要更强的A1机器顶上。这时候,需要用到成员变更。原来的集群A、B,C,换成A1,B,C。

变成的方式

方案一:停掉A,增加A1。
方案二:增加A1,停掉A。
方案三:直接对成员更新其配置(例如需要在原来三个集群中,增加两个成员)

存在的问题

以上两种方式,都可以达到更换机器的目的。但存在的问题也比较明显,无论是方案一还是二,都存在一个可用性问题。

对于方案一

先停掉A的时候,如果B或者C机器中任何一台出现故障,则集群不可用。相当于此时为单点。

对于方案二

增加了机器A1到集群中,此时,A、B、C中的Leader需要向A1同步数据较长时间,A1这段时间无法提交日志。如果此时,A、B、C中任何一台机器坏掉,则此时,集群因为是四台机器,需要三台机器达成共识才能对外服务。假设此时B为主,A挂掉,如果客户端提交一个日志,则B必须把日志提交到A1,B,C均成功才能认为群集达成共识。而此时A1的日志还没有顺序写到最新,所以无法响应最新的日志写入,所以集群此时不可用

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值