跳转至

Durable Runtime

内存 checkpoint 能暂停,但进程退出后会丢失。Stage 12 把两类状态放入 SQLite:

  • SqliteGraphCheckpointStore:保存 state、next node、steps 和 interrupt value;
  • SqliteDurableTaskStore:保存 task、worker lease、result/error 与 append-only events。

恢复流程

enqueue(taskId)
  → worker claim + lease
  → progress events
  → completed / failed

worker 崩溃
  → lease 到期
  → task 回到 pending
  → 新 worker claim

同一个 task ID 再次提交相同 kind/payload 会返回已有任务;不同 payload 会报幂等冲突, 避免网络重试悄悄执行另一份工作。

Graph interrupt 也可以在关闭数据库、重新创建 Store 后使用同一 checkpoint ID resume。 Graph 节点本身仍需做到可重试:外部副作用应带幂等键,不能假设“节点只执行一次”。

教学版面向单机和清晰的事务边界。生产队列还需要 heartbeat、dead-letter queue、调度公平、 指标告警和多 worker 竞争测试。