Chapter 5 Official Docs Note

第 5 章 Temporal 文档

第 5 章回到 durable execution 的核心:Workflow 恢复依赖 Event History,replay 要求同一历史产生同一决策。

官方锚点

本章必须带走的事实

Event History 是完整有序日志

Event History 记录 Workflow Execution 生命周期中已经发生的一切关键事件。

Workflow API 调用产生 Command

Workflow Definition 调用 Activity 或 Timer 等 API 时,会向 Temporal Service 发出 Command。

Command 映射为 Event

Temporal Service 执行 Command 对应的状态转移,并把结果持久化为 Event。

Replay 重建状态

Worker 崩溃后,Temporal 根据 Event History replay Workflow 代码,恢复到崩溃前的执行状态。

Workflow 必须确定性

给定同一份历史,Workflow 代码必须作出同样决策,否则恢复会和历史不匹配。

外部世界放进 Activity

网络调用、数据库、文件 I/O 等外部操作应放在 Activity 中,Activity 结果在 replay 时复用。

本章对应的执行链

  1. Workflow 代码发出调度 Activity 或启动 Timer 的 Command。
  2. Temporal Service 将 Command 处理成持久化 Event。
  3. Event History 保留已经发生的事实顺序。
  4. Worker 崩溃后重新从代码开头执行 Workflow。
  5. Replay 使用历史事件而不是重新执行外部动作。
  6. 确定性代码让恢复路径与原历史保持一致。

结尾自检

  1. Command 和 Event 的职责分别是什么?
  2. 为什么 replay 不是重新做一遍外部动作?
  3. 为什么 Workflow 里直接读取随机数或当前外部状态会危险?
  4. Activity 结果在 replay 中如何被使用?