stateright:实现分布式系统的模型检查器

2021-06-06 23:48:37

正确实现分布式算法,例如PaxoS和RAFT共同协议是众所周知的难以到期的固有的非etermism,例如由网络设备的消息传播。 Stationight是一种锈病演员库,旨在通过提供嵌入式型号检查器,用于探索系统行为(演示)的UI和轻量化器运行时来解决此问题。它还具有可用于线性化学测试仪,可以在模型检查器中运行,以获得比类似解决方案更详尽的测试覆盖范围。

Stateight包括各种例子,如单一法令PaxoScluster和一个抽象的两相犯罪。

#两阶段提交3资源管理器.Cargo运行 - 释放 - 示例2PC检查3#PaxoS群集带3个客户端.Cargo运行 - 释放 - 示例3#单副本(不可加制)注册3个客户端。货物运行 - 释放 - 示例单拷贝寄存器检查3#具有2个客户端的可直链分布式寄存器(ABD算法)。 #(请耐心等待这个,因为检查需要更长的时间)货物运行 - 释放 - 示例性直线化 - 注册检查2

传递探索CLI参数会导致每个示例在端口3000上本地旋转staterightExplorer Web UI,允许您浏览系统行为:

货物运行 - 释放 - 示例2PC Explorecargo运行 - 释放 - 示例PaxoS Explorecargo - 释放 - 示例单拷贝寄存器Explorecargo运行 - 释放 - 示例性直线可爱注册探索

将Spawn CLI参数传递给利用ActorFunctionality的示例将导致每个都使用包含的运行时产生演员,通过UDP传输JSON消息:

货物运行 - 释放 - 示例PaxoS SpawnCargo运行 - 释放 - 示例单拷贝寄存器SpawnCargo运行 - 刷新 - 示例性可直接的 - 寄存器产卵

用于捕获演员消息历史的损失/无损复制/非复制网络的模型,以捕获Actor消息历史,以防止一个预期的一致性模型。

可选的网络适配器,为一对演员之间的消息提供无损非重复的OrderedVirtual通道。

在与其他演员的库相反,Stateright使您能够formallyverify正确性新书的实施,并与模型跳棋如TLC为TLA +的对比度,implementedusing Stateright系统也可以真正的网络上没有被reimplementedin不同的语言运行。

欢迎贡献!请转牌,向您的FROWS推动更改,并发送PULLREQUEST.除非在PLUT请求中明确说明,否则在麻省理工学院许可证下共享所有贡献。

Stateight是版权所有2018 jonathannadal和其他贡献者。它是在麻省理工学院执照下提供的。

为避免需要一个JavaScript包管理器,所以staterightexplorer使用以下JavaScript依赖项的stateright存储库(StateRight RepositoryIncludes):

Knockoutjs是版权所有2010史蒂文桑德森,The Knockout.js团队和其他贡献者。它是在mitlicense下提供的。