开发者社区> 问答> 正文

nacos 的raft可能长时间两个leader并存的情况,如何处理

要把旧的leader变成follower的前提条件是新leader的term更大。

但是旧leader在变成follower之前,是一直认为自己是leader,就可以处理请求,term就一直增加。

如果新leader的term增加速度更慢的话,新旧两个leader就可能一直共存。

上面说的有点抽象,我下面详细说下:

nacos的raft并不是严格意义上的raft,一个写请求是leader直接成功的,并不需要半数以上的确认。所以旧leader是可以一直认为自己是leader的。

leader变成follower的唯一条件是收到心跳,但是收到心跳还是要判断term的,所以term就成为关键了。

只要旧leader有写请求过来,虽然这个时候不会有其他的follower转发请求过来,但是他本身是会收到鞋请求的,流量不一定均匀,旧leader的流量可能和新leader的流量差不多,就会一直两个leader并存了。

展开
收起
一人吃饱,全家不饿 2021-02-01 20:02:09 1578 0
来自:阿里开源
1 条回答
写回答
取消 提交回答
  • 这种情况是两个leader,网络分区下无法自动将为Follower,一个写请求到leader就成功,这个是基于客户端会一直心跳上报,这种情况下有多个leader也没关系。并不是所有写请求都会到leader就成功的,要求强一致性的写请求会同步写Follower。

    2021-02-01 20:02:34
    赞同 展开评论 打赏
问答分类:
问答地址:
来源圈子
更多
收录在圈子:
+ 订阅
阿里巴巴相信开源的世界里人人贡献代码,人人获得收益,共同创造一个互帮互利的社区,促进技术进步和发展。
问答排行榜
最热
最新

相关电子书

更多
Nacos架构&原理 立即下载
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载