Temporal 与 Airflow 怎么选
结论先行
以代码为中心、长时间运行、需要强持久化和重试的业务工作流(订单、支付、审批),选 Temporal。以定时调度和数据管道为主、需要 DAG 可视化、回填和丰富 Operator,选 Airflow。
两者都能编排任务,但 Temporal 更像“工作流运行时”,Airflow 更像“批处理调度器”。
核心差异
| 维度 |
Temporal |
Airflow |
| 定位 |
持久化工作流引擎 |
数据管道调度平台 |
| 编排方式 |
代码定义 Workflow/Activity |
Python DAG |
| 状态 |
事件历史持久化,可恢复 |
元数据库记录任务状态 |
| 长时间运行 |
强项,可运行数天/数月 |
适合定时批处理 |
| 重试 |
Activity 级重试策略 |
Task 级重试 |
| 可视化 |
Web UI 查看事件历史 |
DAG 图、甘特图 |
| 回填 |
不以内置回填为核心 |
原生 backfill |
| 生态 |
SDK 为主 |
大量 Provider/Operator |
| 适用场景 |
业务编排、微服务 Saga |
ETL、报表、定时任务 |
怎么选
- 订单履约、支付对账、人工审批:Temporal。
- 每天定时跑 ETL、同步数据:Airflow。
- 需要按日期回填历史数据:Airflow。
- 工作流要运行数天并保证不丢状态:Temporal。
- 团队以 Python 数据工程为主:Airflow。
- 需要和微服务代码紧密结合:Temporal。
注意
- Temporal 的 Workflow 代码必须确定性,不能用随机数/当前时间等非确定性操作。
- Airflow 的 DAG 解析在 scheduler 中执行,避免在顶层做重 IO。
- 两者都需要高可用数据库和监控。
- 任务要幂等,重试和回填才不会产生重复数据。
- 不要用 Airflow 编排长时间等待人工审批的业务流程,也不要用 Temporal 做大规模日期回填。
相关命令