从问题出发
先看普通后端在超时、重试、进程崩溃、重复请求下为什么会重复扣款或丢任务。
Durable Execution 不是一个“重试库”。它是一种把业务代码执行过程持久化的运行时设计:每个会产生副作用或不确定结果的步骤都被记录下来;故障发生后,运行时重新进入函数,但已经完成的步骤不会重新执行,而是从日志恢复结果。
本教程参考 Restate 的公开文档和仓库结构,但目标不是复刻 Restate。Restate 是一个生产级分布式系统,包含复制日志、分区处理器、元数据一致性、服务协议、SDK、多语言运行时和运维工具。这里我们会保留核心思想,用一个教学版实现让你真正摸到机制。
学完以后,你会得到:
| 产物 | 说明 |
|---|---|
| 一套概念模型 | 能说清楚 Journal、Invocation、Durable Step、Timer、Virtual Object、Workflow 的关系 |
| 多个小 Demo | 每个 Demo 对应一个机制,不把所有复杂度一次塞给你 |
| 一个可运行系统 | examples/durable-mini 里包含 FastAPI 后端、MySQL、React 前端 |
| 一份工程判断 | 知道教学版和 Restate 生产版差在哪里,扩展时该补哪些能力 |
Durable Execution 的关键不是“失败后再跑一遍”,而是“失败后用已经提交的执行历史恢复到正确位置”。
如果你只用普通重试,代码会重新调用外部 API、重新写数据库、重新发消息。Durable Execution 则要求运行时把这些步骤的结果作为事实记录下来,重试时先查询事实,再决定是否继续执行。