Raft协议--成员变更--06

一、常规处理成员变更存在的问题

  1. 我们先将成员变更请求当成普通的写请求,由领导者得到多数节点响应后,每个节点提交成员变更日志,将从旧成员配置(Cold)切换到新成员配置(Cnew)。
  2. 但每个节点提交成员变更日志的时刻可能不同,这将造成各个服务器切换配置的时刻也不同,这就有可能选出两个领导者,破坏安全性。

1.1、案例

在这里插入图片描述

如图,蓝色代表新的配置。绿色代表老的配置。Old状态有三台机器Server1、2、3。 New加入两台server4、5。

考虑以下这种情况:集群配额从3 台机器变成了5 台,可能存在这样的一个时间点(红色箭头),两个不同的领导者在同一个任期里都可以被选举成功(双主问题),一个是通过旧的配置,一个通过新的配置。

1. 在箭头那个时候,发起leader选举
	1. server1、2使用老配置,他们之中的一个会被当选为leader。
	2. 3、4、5使用新的配置,他们之中的一个会被当选为leader。

1.2、出现双主的场景

  1. 成员变更存在的问题是增加或者减少的成员太多了,导致旧成员组和新成员组没有交集,因此出现了双主。

二、解决方案(只需要保证不会让新或者旧配置单独作出决定就行)

  1. 每次成员变更只允许增加或删除一个成员(如果要变更多个成员,连续变更多次)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值