![896a7f70be7a0d4a3138c3ccf4d656ad.png](https://i-blog.csdnimg.cn/blog_migrate/b4440a3922ffac8311a55140d38334d1.jpeg)
我们近期针对阿里发布的ParallelRaft协议,做了进一步的规约与(初步)验证。论文投稿到《软件学报》专刊。论文初稿与相关代码链接见文末。
[2020.11.20更新] 这份工作按专刊要求,初审之后要在“中国软件大会2020”上报告。我们报告rehearsal的视频发布在B站:
支持乱序执行的Raft协议-rehearsal视频www.bilibili.com![614da0c2c711c75b7d81784dd2a1a2fd.png](https://i-blog.csdnimg.cn/blog_migrate/6796c8feb51a243d2299a24780c69564.jpeg)
[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原始论文。