Skip to content

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。

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