0
  1. 7 个成员集群,其中一个是领导者。
  2. 领导者尝试复制日志(一些写入)
  3. 发生网络分区。分别为 3 名和 4 名成员。
  4. 领导者最终进入少数派分区
  5. Leader 只达到 2 个 Follower → 复制失败

在这种情况下会发生什么?

据我了解:2 个追随者应用了“错误”写入,当网络分区修复时,他们将用多数领导者的历史记录覆盖该写入。但这违反了线性化。

4

1 回答 1

2

您将复制与承诺混淆了。仅将条目复制到该集群的少数部分不会破坏线性化。重要的是何时认为该更改已提交。由于分区少数方的领导者无法将更改复制到集群的大多数人,因此它永远不会提交更改,也永远不会向客户端确认更改已被持久化。此外,未提交的更改将永远不会应用于任何节点上的状态机。因此,在修复分区时覆盖未提交的更改不会破坏任何保证。

commitIndex仅当领导者在仅复制到少数集群后增加并确认写入时,保证才会被打破。

于 2017-06-01T17:55:07.580 回答