Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

对于加入节点的成员变更,如下图所示,在 5 节点 3 副本的集群中加入节点 6 后除了增加一个数据组 6(数据组成员 {6,3,4})外,数据组 1 和数据组 2 发生了成员替换。数据组 1 中新加入的节点 6 替换了节点 3,数据组成员由 {1,2,3} 变成了 {1,2,6};数据组 2 中新加入的节点 6 替换了节点 4,数据组成员由 {2,3,4} 变成了 {2,6,3}。

Image RemovedImage Added


对于删除节点的成员变更,在 5 节点 3 副本的集群中移除节点 3 后除了删除了一个数据组 3(数 据组成员 {3,4,5})外,数据组 1 和数据组 2 发生了成员替换。数据组 1 中节点 4 替换了节点 3,数据组成员由 {1,2,3} 变成了 {1,2,4};数据组 2 中节点 5 替换了节点 3,数据组成员由 {2,3,4} 变成了 {2,4,5}。

Image RemovedImage Added

增加节点涉及原有 Raft 组的成员替换、并增加一个 Raft 数据组(直接新增 Raft 组并进行选举)。删除节点涉及原有Raft组的成员替换、并删除一个 Raft 数据组(等数据迁移完后进行删除)。Raft 组的成员替换不可以直接执行,否则可能会产生脑裂现象。为了解决这一问题,需要原有 Raft组内先增加新成员,再删除旧成员。

...