共识算法:从日志记录到随机化的全面解析
1. 领导者驱动共识算法的终止性与性能
领导者驱动共识算法在终止性方面表现出色。由于 epoch - change 原语的单调性和一致性,且算法仅在先前活动的、时间戳较小的 epoch 共识实例中止后才初始化新实例,因此满足调用格式良好的 epoch 共识实例序列的要求。根据底层 epoch - change 原语的最终领导属性,存在一个具有时间戳 ts 和领导者进程 ℓ 的 epoch,使得不再有新的 epoch 启动,且 ℓ 是正确的。该算法仅在 epoch - change 原语启动另一个 epoch 时才中止 epoch 共识实例,所以在启动 epoch (ts, ℓ) 之后,epoch 共识实例 ep.ts 的终止条件意味着每个正确的进程最终会在实例 ep.ts 中进行 ep - 决策,并紧接着进行 uc - 决策。
性能方面,“领导者驱动共识”算法的复杂度完全取决于底层 epoch - change 和 epoch 共识原语的实现复杂度,因为该算法不直接通过点对点链接抽象或广播抽象进行消息通信。
2. 日志记录共识
在故障恢复模型中,我们引入了日志记录统一共识抽象,它依赖于上一节的“领导者驱动共识”算法,并对 epoch - change 和 epoch 共识抽象进行扩展以适应故障恢复模型。
2.1 日志记录统一共识的规范
日志记录统一共识抽象是对统一共识抽象的小修改,通过放宽终止属性并消除完整性属性得到。具体来说,只有从不崩溃的正确进程需要进行决策,且一个进程可以多次决策。这在故障恢复模型中是不可避免的。
超级会员免费看
订阅专栏 解锁全文
822

被折叠的 条评论
为什么被折叠?



