分区下的筏复制

时间:2017-06-01 12:37:50

标签: consensus raft

  1. 7个成员集群,其中一个是领导者。
  2. 领导者尝试复制日志(一些写入)
  3. 发生网络分区。分别为3名和4名成员。
  4. 领导者以少数群体分区结束
  5. 领导者只有2个粉丝→复制失败
  6. 在这种情况下会发生什么?

    根据我的理解:2名粉丝已经应用了一个"坏"写入,当网络分区修复时,它们将覆盖多数领导者历史记录中的写入。但这违反了线性化。

1 个答案:

答案 0 :(得分:2)

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

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