使用 TLA+ 设计和证明 Abaco 自动伸缩器的属性
1. 安全与不安全的示例行为
RevisionNumberInv 是 Abaco 操作的关键属性。Abaco 服务于科研社区,是科研工作流程的一部分,满足其基础设施和计算需求。科研成果的可靠性和可重复性依赖于使用正确版本的软件。
以下是两个示例行为的状态序列快照,假设系统中只有一个参与者(actor)和一个工作者(worker):
- 行为 A :
1. 在 t0 时刻为初始状态。
2. 在 t1 时刻,使用参与者当前的镜像版本号 r1 创建一个工作者。
3. 在 t2 时刻,工作者开始执行消息,状态从 IDLE 变为 BUSY。
4. 在 t3 时刻,Abaco 收到 HTTP 参与者更新请求,参与者的版本号从 r1 变为 r2,状态从 READY 变为 UPDATING IMAGE。
5. 在 t4 时刻,工作者完成当前执行,状态从 BUSY 变为 IDLE。
6. 在 t5 时刻,自动伸缩器决定删除工作者,因为工作者使用的镜像版本号与参与者当前的镜像版本号不同。工作者的状态变为 SHUTDOWN REQUESTED,并向工作者的命令队列发送“SHUTDOWN”命令消息。
7. 在 t6 时刻,工作者删除完成,状态重置为‘−’,版本号重置为 r0,时间戳重置为 t0。
8. 在 t7 时刻,创建工作者。如果使用参与者当前的镜像版本号 r2 创建工作者,则满足 RevisionNumberInv;如果使用旧版本号 r1,则违反该安全属性。
9. 在 t8 时刻,当工作者使用正确的镜像版本号创建后,参与者的
超级会员免费看
订阅专栏 解锁全文
36

被折叠的 条评论
为什么被折叠?



