2017-06-01 67 views
0
  1. 7个成员集群,其中之一是领导者。
  2. 领导尝试复制日志(某些写入)
  3. 发生网络分区。 3名和4名成员。
  4. 负责人在少数分区结束
  5. 负责人只达到2名追随者→复制失败

在这种情况下会发生什么?分区下的筏复制

据我所知:2名追随者已经应用了一个“不好”的写法,当网络分区修补时,他们将覆盖与大多数领导者的历史写作。但是这违反了线性化。

回答

2

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

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