让操作具备幂等性
该原则的核心是:设计操作时,使其无论运行多少次、从哪个起点开始,都能收敛到正确的状态。每一个会改变状态的操作都应回答两个问题:“如果它运行两次会怎样?如果上一次运行中途崩溃了会怎样?”
为什么重要:命令、生命周期操作和处理循环所处的运行环境,崩溃、重启与重试都是常态。如果残留的部分状态会改变下一次运行的结果,那么每次重启都会变成一场调试。
模式要点:
- 收敛式启动:扫描已有状态,清理陈旧产物,接管(adopt)仍活跃的会话。
- 基于内容的清理:按内容等价性比较,而非按创建顺序比较。
- 自愈锁:使用基于 PID 的过期锁检测。
- 幂等调度:失败的工作能被干净地重新生成,每轮循环后重新生成新的输入。
检验方式:
- 如果它连续运行两次会怎样?
- 如果上一次在每一个可能的点崩溃会怎样?
- 重新执行是否收敛到同一个终态?
如果任一答案是“取决于遗留了什么状态”,那么这个操作就需要一个对账(reconciliation)步骤。
分类判定:该技能聚焦于命令、生命周期与处理循环在崩溃、重启、重试下的状态收敛设计原则,属于通用工程实践范畴,暂未提供更具体的平台或使用步骤。