Abstract
背景:分布式系统很难正确实现,因为它们必须同时处理并发和故障:机器可能在任意点崩溃,网络可能重新排序、丢弃或复制数据包。此外,它们的行为通常过于复杂,无法进行详尽的测试。这些系统中的错误导致关键数据丢失和不可接受的服务中断。
本文:Verdi
任务:在 Coq 中实现和形式化验证分布式系统的框架
方法:Verdi 将具有不同故障的各种网络语义形式化,开发人员在验证其实现时选择最合适的故障模型
意义:使开发人员能够首先在理想化的故障模型下验证他们的系统,然后将得到的正确性保证转移到更现实的故障模型而无需任何额外的证明负担,从而减轻了验证负担
实验:
展示了 Raft 状态机复制算法的第一个机械检查的线性化证明,以及经过验证的主备份复制系统和键值存储的实现。
效果:这些经过验证的系统提供与未经验证的等效系统类似的性能。