FAQ: mmp3 协议与epaxos的差异: 包含间接依赖才能保证线性一致性 #4
-
mmp3 跟 epaxos 有个不同的地方, instance 复制到 replica 时要记录所有依赖的instance, 包括间接依赖的. 这是mmp3 保证 线性一致性的一个条件, 读过epaxos的同学可能会漏掉这个细节导致无法证明线性一致性. 例如下面这个容易出现疑问的 case:
这里有个容易漏掉的细节是, t5 时, 在 R3 上记录的 A, 应记录 也就是说, 间接依赖的 instance 都应被记录到一个 instance 的依赖集( 如果没有这个细节, 最终形成的依赖关系是:
通过比较每个 instance 的依赖集的大小和column index,最终执行顺序是ABC, 违反了Linearizability的原则: A 在 C 提交之后被propose, 应该在C之后被apply. 加入这个间接依赖的约束后, t5时间A的依赖应为
此时B被先 apply, 剩下
欢迎进讨论区:DD |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
Answered |
Beta Was this translation helpful? Give feedback.
Answered