学习路线
这套教程按“先建立直觉,再拆架构,再写代码”的顺序组织。不要一开始就跳到最终项目,否则很容易把 Durable Execution 误解成“后台任务表 + retry_count”。
你需要的背景
默认你已经了解:
| 能力 | 要求 |
|---|---|
| 后端开发 | 能读懂 HTTP API、数据库事务、后台任务 |
| Python | 能看懂 FastAPI、SQLAlchemy 的基础写法 |
| 前端 | 能运行 Vite + React 项目 |
| 数据库 | 知道主键、唯一索引、事务、JSON 字段 |
| 分布式系统 | 不要求深入,但知道重试、幂等、超时、崩溃这些问题 |
推荐阅读顺序
- 读 什么是 Durable Execution,理解它解决的问题。
- 读 Restate 架构拆解,建立生产级系统的组件地图。
- 跟着 Demo 总览 逐步实现机制。
- 阅读 目标项目设计,再运行
examples/durable-mini。 - 最后看 扩展方向,判断教学版如何继续演进。
本教程和 Restate 的关系
Restate 的公开资料把它描述为位于客户端和服务之间的 durable runtime:服务里写普通 handler,Server 负责 Invocation 生命周期、Journal、状态、通信、计时器和恢复。它的关键特征包括:
| Restate 能力 | 本教程如何处理 |
|---|---|
| Replicated durable log | 用 MySQL 表模拟单节点持久日志 |
| Partition Processor | 用一个后台 worker loop 模拟处理器 |
| SDK context actions | 用 DurableContext.run() 和 DurableContext.sleep() 模拟 |
| Virtual Objects / Workflows | 用 workflow id 与 invocation id 做简化建模 |
| Exactly-once communication | 只实现入口幂等和步骤去重,不实现跨服务 exactly-once |
| Cluster failover | 解释原理,但教学代码只覆盖单节点恢复 |
课程的工程取舍
本教程不会把教学版写成一个“看起来很完整但没人能读懂”的小框架。我们会刻意做三件事:
- 表结构直白:你可以直接看 MySQL 表理解运行时状态。
- 控制抽象层数:核心逻辑集中在
engine.py,方便调试。 - 暴露限制:每章都会说明当前 Demo 没解决的问题,以及下一章为什么需要新机制。