Skip to content

学习路线

这套教程按“先建立直觉,再拆架构,再写代码”的顺序组织。不要一开始就跳到最终项目,否则很容易把 Durable Execution 误解成“后台任务表 + retry_count”。

你需要的背景

默认你已经了解:

能力要求
后端开发能读懂 HTTP API、数据库事务、后台任务
Python能看懂 FastAPI、SQLAlchemy 的基础写法
前端能运行 Vite + React 项目
数据库知道主键、唯一索引、事务、JSON 字段
分布式系统不要求深入,但知道重试、幂等、超时、崩溃这些问题

推荐阅读顺序

  1. 什么是 Durable Execution,理解它解决的问题。
  2. Restate 架构拆解,建立生产级系统的组件地图。
  3. 跟着 Demo 总览 逐步实现机制。
  4. 阅读 目标项目设计,再运行 examples/durable-mini
  5. 最后看 扩展方向,判断教学版如何继续演进。

本教程和 Restate 的关系

Restate 的公开资料把它描述为位于客户端和服务之间的 durable runtime:服务里写普通 handler,Server 负责 Invocation 生命周期、Journal、状态、通信、计时器和恢复。它的关键特征包括:

Restate 能力本教程如何处理
Replicated durable log用 MySQL 表模拟单节点持久日志
Partition Processor用一个后台 worker loop 模拟处理器
SDK context actionsDurableContext.run()DurableContext.sleep() 模拟
Virtual Objects / Workflows用 workflow id 与 invocation id 做简化建模
Exactly-once communication只实现入口幂等和步骤去重,不实现跨服务 exactly-once
Cluster failover解释原理,但教学代码只覆盖单节点恢复

课程的工程取舍

本教程不会把教学版写成一个“看起来很完整但没人能读懂”的小框架。我们会刻意做三件事:

  1. 表结构直白:你可以直接看 MySQL 表理解运行时状态。
  2. 控制抽象层数:核心逻辑集中在 engine.py,方便调试。
  3. 暴露限制:每章都会说明当前 Demo 没解决的问题,以及下一章为什么需要新机制。

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