我说一下我的解决方案: 首先由于分区的原因,如果 leader 在多的一个分区,合并的时候有可能因为 follower term 更大而导致重新选举,从而造成超时。 因此可以让 leader 在收到 resp 的时候,如果发现 follower 的 term 比自己大,不立刻退位,而是忽略这个消息。这样的结果就是: 1、follower 拥有最新的日志:那么 follower 就可能当选 leader,这样会短暂出现脑裂现象,但是在旧 leader 收到新 leader 的一个心跳之后,由于新 leader term 大于旧 leader,旧 leader 就会退位 2、follower 没有拥有最新的日志,那么我们让它在收到足够多的 reject 的时候更新自己的 term(有可能更新一次 term 之后还是更大,但是由于 reject 消息是超过多半发送的,所以迟早能更新到正确的 term) 这样子能保证分区之后能平滑过渡 leader 或者不进行 leader 更改,不知道有没有潜在的 corner case,如果存在的话请联系我一下