diff --git a/consensus/raft-ConfChange.md b/consensus/raft-ConfChange.md index b3446b36..fa83d333 100644 --- a/consensus/raft-ConfChange.md +++ b/consensus/raft-ConfChange.md @@ -10,9 +10,11 @@ 你可能会想到把“配置”当成 Raft 中的“特殊日志”。由此,成员动态变更的问题不就变成了**配置日志一致性问题么?**。 -但成员变更有个特殊性,如果处理方式不当/网络故障,可能会导致两个多数派(变更前的多数派 C~old~(旧配置)和变更的多数派 C~new~(新配置))之间不存在相交的成员,这样就产生两个 Leader 在各自认为的“多数派”中工作的问题。 +但成员变更有个特殊性,如果处理方式不当,可能会导致两个多数派(变更前的多数派 C~old~(旧配置)和变更的多数派 C~new~(新配置))之间不存在相交的成员,这样就产生两个 Leader 在各自认为的“多数派”中工作的问题。 -如图 6-21 所示,3 个节点的集群扩展到 5 个节点,直接扩展可能会造成 Server1 和 Server2 构成 C~old~ 的多数派,Server3、Server4 和 Server5 构成 C~new~ 的多数派。因为这两个多数派不存在相交的成员,所以有可能在一个日志索引上会提交两个不同的日志项,从而导致协议冲突,影响 Raft 的安全性。 +如图 6-21 所示,3 个节点被同时添加到集群,同时添加多个节点可能会造成 Server1 和 Server2 构成 C~old~ 的多数派,Server3、Server4 和 Server5 构成 C~new~ 的多数派。 + +这两个多数派不存在相交的成员,所以有可能在一个日志索引上会提交两个不同的日志项,从而导致协议冲突,影响 Raft 的安全性。 :::center ![](../assets/raft-ConfChange.png)