Chapter 1 Official Docs Note

第 1 章 Temporal 文档

第 1 章把 Workflow 的编排职责与 Activity 的外部行动职责分开:Workflow 决定下一步,Activity 执行真实世界动作,结果再回到 Event History。

官方锚点

本章必须带走的事实

Activity 是普通函数或方法

Activity 执行一个清楚定义的动作,可以短也可以长,例如调用服务、发邮件、处理文件或写入外部系统。

Activity 可以非确定性

Activity 代码可以包含外部调用和非确定性逻辑,但官方建议 Activity 设计成 idempotent。

Workflow 负责编排

Workflow 代码调度 Activity、等待结果,并把完成结果作为后续决策依据。

Worker 执行 Activity 代码

Activity Function 由 Worker Process 执行,完成后 Worker 把结果返回 Temporal Service。

结果进入 Event History

Activity 完成会产生 ActivityTaskCompleted 等事件,成为 Workflow Execution 历史的一部分。

大动作应拆小

较大的功能应拆成多个 Activities,便于恢复失败、设置较短 timeout 和实现幂等。

本章对应的执行链

  1. BreadPromiseWorkflow 收到 BakeryRequest。
  2. Workflow 调度 RequestDeliveryCartActivity,而不是自己直接调用车行。
  3. Worker 从 Task Queue 取到 Activity Task 并执行外部登记。
  4. Activity 返回 cart-17 之类的结果。
  5. Temporal Service 把完成事件和结果写入 Event History。
  6. Workflow 根据已记录结果继续调度 ConfirmClinicReceiptActivity。

结尾自检

  1. 为什么外部请求不应直接写进 Workflow 主逻辑?
  2. Activity 完成后,后续 Workflow 应信任 Worker 变量还是 Event History?
  3. 为什么一个过大的 Activity 会让失败恢复变难?
  4. Activity 可以非确定性,为什么仍然推荐幂等?