SuperAPI AI 工具集

principle-make-operations-idempotent

编程与开发

查看项目

更新于 10-28 16:18

技能介绍

用途

该技能是一项设计原则,适用于设计命令、生命周期步骤或处理循环,这些操作运行在崩溃、重启和重试成为常态的环境中。其目标是让操作无论运行多少次、上一次运行在何处停止,都能收敛到正确的最终状态。

主要能力

  • 要求每个状态变更操作回答两个问题:如果运行两次会怎样?如果上一次运行中途崩溃会怎样?
  • 主张从当前存在的状态推导每一步,而不是从上一次运行意图做什么来推导。具体做法是读取当前状态、与目标比较、只应用差异。这样写出的步骤可以安全重复,因为重复执行时已无剩余工作。
  • 要求运行遗留的任何东西(锁、临时文件、半写记录、已认领任务)都能被下一次运行识别为过期。判断过期应依据在上一次运行可能停止的任何位置都成立的证据,而不仅是常见情况。
  • 提供示例做法:写入临时路径后重命名到位,或按内容而非创建顺序比较产物。

使用方式

该技能以测试形式给出判断标准:

  1. 如果连续运行两次会怎样?
  2. 如果上一次运行在每个可能点都崩溃会怎样?
  3. 重新执行是否收敛到同一最终状态?

如果任一答案取决于遗留了什么状态,则该操作需要增加一个协调步骤。

适用场景

适用于命令、生命周期操作和处理循环的设计,这些操作运行在崩溃、重启和重试正常发生的环境中。当部分状态变更会影响下一次运行结果时,每次重启都会变成调试过程,此时该原则尤为相关。

限制

资料未提供关于具体实现语言、平台、工具或代码示例的更多细节。