Skip to content

Durable Execution从零到一实现一个可恢复的工作流运行时

用 Restate 的核心思想做蓝本,学习 Journal、幂等、重放、计时器、分区与状态一致性,并用 React + FastAPI + MySQL 写出一个教学版系统。

这套教程学什么

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 则要求运行时把这些步骤的结果作为事实记录下来,重试时先查询事实,再决定是否继续执行。

Teaching project inspired by Restate's public architecture and documentation.