分布式系统很难正确建模、测试、调试和教学。他们的教科书定义,通常以复制状态机的形式给出,简明扼要,但如果天真地转换为可运行的实现,则容易引入编程错误。
在这项工作中,我们提出分布式协议组合器(DPC),一种声明性编程框架,旨在弥合规范和分布式系统可运行实现之间的差距,并促进其建模、测试和执行。DPC基于最先进的逻辑,用于组成系统验证。DPC的贡献在于它是一个新的程序级原语家族,它有助于用较小的组件构建大型分布式系统,简化最常见的异步消息传递通信模式的使用,并为系统的测试和用户友好的动态验证提供了机制。本文描述了框架设计背后的主要思想,并介绍了它在Haskell中的实现。我们通过一系列特征示例介绍DPC,并在文献中的一些分布式协议上展示它。
本文扩展了我们之前的会议出版物(Andersen&Sergey,2019a) 通过对协议及其实现的随机测试的探索,以及对协议的有界模型检查的额外案例研究。