并发执行变成串行_支持乱序执行的Raft协议

896a7f70be7a0d4a3138c3ccf4d656ad.png
我们近期针对阿里发布的ParallelRaft协议,做了进一步的规约与(初步)验证。论文投稿到《软件学报》专刊。论文初稿与相关代码链接见文末。

[2020.11.20更新] 这份工作按专刊要求,初审之后要在“中国软件大会2020”上报告。我们报告rehearsal的视频发布在B站:

支持乱序执行的Raft协议-rehearsal视频​www.bilibili.com
614da0c2c711c75b7d81784dd2a1a2fd.png

[2020.10.23更新] 近期我们这份工作被收录到TLA+的官方案例中了,编号是“77”。详见:https://github.com/tlaplus/Examples 。

论文摘要

PolarFS 是阿里巴巴开发的分布式文件系统,它实现了分布式共识协议 Raft 的一种变体,称为 ParallelRaft.ParallelRaft 突破了 Raft 中顺序提交、顺序执行的限制,允许状态机乱序执行用户命令。然而,文献表明,ParallelRaft 并未开源,仅有简短的文字描述,更缺乏严格的形式化规约。更进一步,它的正确性也尚未经过必要的数学论证或形式化检验。本文旨在为 ParallelRaft 提供严格的形式化规约并证明其正确性。

具体而言,本文的主要贡献包括:首先,为了理清 ParallelRaft 与 Raft 之间的关系,我们提出了允许乱序提交、顺序执行的 ParallelRaft-SE(Sequential Execution)协议,并建立了从ParallelRaft-SE 到 Multi-Paxos 的精化关系。其次,我们发现现有的 ParallelRaft 描述忽略了可能会违反状态一致性的"幽灵日志"问题。因此,我们在 ParallelRaft-SE 的基础上提出了 ParallelRaft-CE(Concurrent Execution)协议。ParallelRaft-CE限制了 ParallelRaft-SE 在乱序提交阶段的并行度,从而避免了"幽灵日志"问题。我们证明了 ParallelRaft-CE 的正确性。最后,我们使用 TLA+给出了 ParallelRaft-SE 和 ParallelRaft-CE 的形式化规约,并使用 TLC 模型检验工具验证了从 ParallelRaft-SE 到 Multi-Paxos 的精化关系以及 ParallelRaft-CE 的正确性。

相关信息

  • TLA+代码仓库
    • 论文初稿见:/doc/2020.8-jos.pdf
  • 阿里ParallelRaft论文信息:
    • Wei Cao, Zhenjun Liu, Peng Wang, Sen Chen, Caifeng Zhu, Song Zheng, Yuhui Wang, and Guoqing Ma. 2018. PolarFS: an ultra-low latency and failure resilient distributed file system for shared storage cloud database. Proc. VLDB Endow. 11, 12 (August 2018), 1849–1862. DOI:https://doi.org/10.14778/3229863.3229872

注:题图来自Raft原始论文。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值