外观
长任务中断后,怎样恢复而不重复执行?
标准回答
在明确边界保存任务状态与已确认结果,恢复时识别哪些步骤已完成;对有副作用的动作使用幂等键、结果查询或补偿,避免重跑整个任务。
关键机制
- 检查点保存阶段、输入版本、调用编号与状态;不能只保存最后一句聊天,因为那不足以恢复执行语义。
- 发起操作、操作成功和本地记账之间可能发生崩溃。应结合业务幂等与对账解决,不能仅依靠一个内存布尔值。
- 等待用户确认或外部回调时挂起,并明确恢复入口、超时和取消;重新开始时校验原目标是否仍有效。
通俗例子
设备已开始升级,但服务在保存结果前重启。恢复后先按 requestId 查询升级状态,确认后续阶段,而不是再次下发完整升级命令。
易混淆点
检查点不等于所有外部操作“恰好执行一次”。实际系统通常用可恢复记录与幂等构造可控效果。
参考资料
内容来源
- Android 技术札记 · 原条目
durable-agent