用途
该技能适用于设计命令、生命周期步骤或处理循环的场景,这些操作运行在崩溃、重启和重试属于常态的环境中。其目标是让操作无论运行多少次、上一次运行在哪里停止,都能收敛到正确的状态。
主要能力
- 要求每个会改变状态的操作回答两个问题:如果运行两次会怎样?如果上一次运行中途崩溃会怎样?
- 提供幂等设计的核心思路:从当前存在的状态推导每一步,而不是从上一次运行打算做什么来推导。具体做法是读取当前状态、与目标比较、只应用差异。这样写出的步骤可以安全重复,因为重复执行时已无剩余工作。
- 要求运行遗留物(锁、临时文件、半写入记录、已认领任务等)能被下一次运行识别为过期。过期判断应基于在上一次运行可能停止的任何位置都成立的证据,而不仅是常见情况。
- 给出示例做法:写入临时路径再重命名到位,或按内容而非创建顺序比较产物。
- 提供三项自检:连续运行两次会怎样?上一次运行在每个可能点崩溃会怎样?重新执行是否收敛到同一最终状态?
使用方式
在设计与审查命令、生命周期操作和处理循环时应用该原则。对每个会改变状态的操作,用上述三项自检进行验证。如果任一答案取决于遗留了什么状态,则该操作需要增加对账步骤。
适用场景
适用于运行环境存在崩溃、重启和重试的各类操作设计,包括命令、生命周期步骤和处理循环。
限制
资料未提供该技能的具体安装方式、依赖平台、代码示例或收费信息。