Demo 总览
这一部分把最终系统拆成四个小机制。每个 Demo 都回答一个具体问题,最后自然拼成教学版 Durable Execution runtime。
四个 Demo 的递进关系
| Demo | 解决的问题 | 新增关键数据 |
|---|---|---|
| 01 幂等入口 | 重复 HTTP 请求不要创建多个流程 | idempotency_key |
| 02 步骤 Journal | 已完成副作用不要重复执行 | journal_entries |
| 03 崩溃恢复与重放 | 进程中断后继续后续步骤 | status, attempt_count |
| 04 持久计时器 | 等待不依赖进程内存 | PENDING_TIMER, fire_at |
最小运行时接口
最终我们只暴露两个业务侧 API:
python
payment = ctx.run("charge-payment", lambda: charge_card(order))
ctx.sleep("settlement-wait", seconds=5)这两个 API 覆盖 Durable Execution 最核心的两个动作:
| API | 持久化的是什么 |
|---|---|
run | 副作用或非确定性操作的结果 |
sleep | 未来某个时间点继续执行的意图 |
为什么先不做 SDK 和服务协议
Restate 的生产版通过 SDK 和 Server 双向流式通信,让业务服务可以部署在任意进程、容器或 serverless 平台。教学版直接在 FastAPI 进程内调用 Python 函数,这样你能把注意力放在 Journal 语义上。
等你掌握后,可以在扩展章节把 handler 拆成独立 HTTP 服务,再实现一个小型 service protocol。