
关于
掌握基于 Temporal 的工作流编排架构,涵盖基本设计决策、弹性模式和构建可靠分布式系统的最佳实践。
name: workflow-orchestration-patterns description: "掌握基于 Temporal 的工作流编排架构,涵盖基本设计决策、弹性模式以及构建可靠分布式系统的最佳实践。" risk: unknown source: community date_added: "2026-02-27"
工作流编排模式
掌握基于 Temporal 的工作流编排架构,涵盖基本设计决策、弹性模式以及构建可靠分布式系统的最佳实践。
适用场景
- 处理工作流编排模式相关的任务或流程
- 需要工作流编排模式的指导、最佳实践或检查清单
不适用场景
- 任务与工作流编排模式无关
- 需要此范围之外的其他领域或工具
使用说明
- 明确目标、约束条件和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作的步骤和验证方法。
- 如需详细示例,请打开
resources/implementation-playbook.md。
何时使用工作流编排
理想使用场景(来源:docs.temporal.io)
- 多步骤流程:跨机器/服务/数据库
- 分布式事务:需要全有或全无的语义
- 长时间运行的工作流(数小时到数年):具有自动状态持久化
- 故障恢复:必须从最后成功的步骤恢复
- 业务流程:预订、订单、活动、审批
- 实体生命周期管理:库存跟踪、账户管理、购物车工作流
- 基础设施自动化:CI/CD 流水线、资源配置、部署
- 人机协作系统:需要超时和升级处理
不适用场景
- 简单的 CRUD 操作(使用直接 API 调用)
- 纯数据处理管道(使用 Airflow、批处理)
- 无状态请求/响应(使用标准 API)
- 实时流处理(使用 Kafka、事件处理器)
关键设计决策:Workflows 与 Activities
基本规则(来源:temporal.io/blog/workflow-engine-principles):
- Workflows = 编排逻辑和决策制定
- Activities = 外部交互(API、数据库、网络调用)
Workflows(编排)
特征:
- 包含业务逻辑和协调
- 必须是确定性的(相同输入 → 相同输出)
- 不能执行直接的外部调用
- 状态在故障时自动保留
- 即使基础设施故障也能运行数年
示例工作流任务:
- 决定执行哪些步骤
- 处理补偿逻辑
- 管理超时和重试
- 协调子工作流
Activities(外部交互)
特征:
- 处理所有外部系统交互
- 可以是非确定性的(API 调用、数据库写入)
- 包含内置超时和重试逻辑
- 必须是幂等的(调用 N 次 = 调用一次)
- 短暂存活(通常为秒到分钟)
示例 Activity 任务:
- 调用支付网关 API
- 写入数据库
- 发送邮件或通知
- 查询外部服务
设计决策框架
是否涉及外部系统?→ Activity
是否为编排/决策逻辑?→ Workflow
核心工作流模式
1. Saga 模式与补偿
目的:实现具有回滚能力的分布式事务
模式(来源:temporal.io/blog/compensating-actions-part-of-a-complete-breakfast-with-sagas):
对于每个步骤:
1. 在执行之前注册补偿操作
2. 执行该步骤(通过 Activity)
3. 失败时,按逆序(LIFO)运行所有补偿操作
示例:支付工作流
- 预留库存(补偿:释放库存)
- 收取费用(补偿:退款)
- 履行订单(补偿:取消履行)
关键要求:
- 补偿操作必须是幂等的
- 在执行步骤之前注册补偿
- 按逆序运行补偿
- 优雅地处理部分失败
2. 实体工作流(Actor 模型)
目的:代表单个实体实例的长期运行工作流
模式(来源:docs.temporal.io/evaluate/use-cases-design-patterns):
- 一个工作流执行 = 一个实体(购物车、账户、库存项)
- 工作流在实体生命周期内持续存在
- 接收信号以进行状态变更
- 支持查询当前状态
示例用例:
- 购物车(添加商品、结账、过期)
- 银行账户(存款、取款、余额查询)
- 产品库存(库存更新、预留)
优势:
- 封装实体行为
- 保证每个实体的一致性
- 天然的事件溯源
3. 扇出/扇入(并行执行)
目的:并行执行多个任务,聚合结果
模式:
- 生成子工作流或并行 Activities
- 等待所有完成
- 聚合结果
- 处理部分失败
兼容工具
Claude CodeCursor
标签
运维部署

