P03 设计报告模板
1. 模拟器与复现
- 语言/版本、OS、随机种子:
- 节点数、tick/超时、消息/磁盘故障模型:
- 运行命令、日志和 checker 版本:
2. Raft 不变量
为每条不变量填写状态字段、代码位置、测试和故障下的可观察证据。
| 不变量 | 状态/代码位置 | 测试历史 | 证据 |
|---|---|---|---|
| 任期单调 | |||
| 日志匹配 | |||
| 已提交日志不丢 |
3. Put 生命周期图
画出 Put(k,v) 从客户端 ID/重试、分片路由、leader Start、复制/提交、状态机 apply、响应,到配置迁移时 ownership 变化的完整路径。
4. 安全性与活性
- 分区时哪些请求必须拒绝/重试:
- 何种网络/磁盘假设下最终能选主:
- 读路径为何线性一致:
- 重复 RPC 如何幂等:
5. 分片迁移协议
列出配置版本、冻结、导出、导入、确认、清理的状态和幂等键;说明旧组/新组任一崩溃时如何恢复。
6. 故障与性能
记录至少两个公开故障和一个自选故障的事件时间线;报告基线、消息数、延迟、日志/快照/迁移空间和局限。
7. 个人贡献与引用
列出成员的提交、测试和 walkthrough;标注 Raft 论文、课程材料、开源代码和生成式工具来源。