Temporal 简介
Temporal 是一个开源的分布式工作流编排平台,用于构建可靠、可扩展的后台业务逻辑。
核心思想:让你像写普通代码一样写长时间运行、需要容错的业务流程,不用自己处理失败重试、状态持久化等复杂问题。
🎯 解决什么问题?
传统异步任务的痛点:
❌ 任务执行到一半,服务器崩了 → 状态丢失
❌ 跨多个服务的流程 → 难以追踪
❌ 失败重试逻辑 → 自己写很麻烦
❌ 长时间运行的任务(几小时/几天)→ 难以维护
Temporal 的解决方式:
✅ 自动持久化状态 → 崩了继续跑
✅ 工作流可视化 → 清晰追踪
✅ 内置重试/超时机制 → 开箱即用
✅ 支持运行数天/数月的工作流 → 无压力
🏗️ 核心概念
🔷 Workflow(工作流)
业务流程的主体逻辑,可以运行很长时间,状态自动持久化。
@workflow.defn
class OrderWorkflow:
@workflow.run
async def run(self, order_id: str):
# 即使这里运行几天,中间重启也没问题
await workflow.execute_activity(process_payment, order_id)
await workflow.execute_activity(ship_order, order_id)
await workflow.execute_activity(send_notification, order_id)
🔷 Activity(活动)
具体执行的单个任务单元,比如调用 API、写数据库等。
@activity.defn
async def process_payment(order_id: str):
# 实际执行的业务逻辑
result = await payment_service.charge(order_id)
return result
🔷 Worker(工作者)
执行 Workflow 和 Activity 的进程,可以水平扩展。
🔷 Temporal Server
负责调度、持久化状态、管理任务队列的核心服务。
🏛️ 整体架构
你的代码 (Workflow + Activity)
↓
[ Worker 进程 ] ←──── 可水平扩展
↓ ↑
[ Temporal Server ] ←── 调度 + 状态管理
↓
[ 数据库 ] ←────────── 持久化 (PostgreSQL/Cassandra)
[ Web UI ] ←──────────── 可视化监控
⚡ 核心特性
💡 典型使用场景
🆚 与同类工具对比
🚀 快速感受一下
# 一个等待30天后发送邮件的工作流
@workflow.defn
class OnboardingWorkflow:
@workflow.run
async def run(self, user_id: str):
# 发送欢迎邮件
await workflow.execute_activity(send_welcome_email, user_id)
# 等待7天(服务重启也不影响!)
await asyncio.sleep(timedelta(days=7))
# 发送使用技巧
await workflow.execute_activity(send_tips_email, user_id)
# 再等23天
await asyncio.sleep(timedelta(days=23))
# 发送付费转化邮件
await workflow.execute_activity(send_upgrade_email, user_id)
💬 总结
Temporal 的核心价值:"让复杂的分布式业务流程,像写本地代码一样简单可靠"
适合业务逻辑复杂、步骤多、需要容错的场景
在 AI Agent、微服务编排领域越来越流行
学习曲线稍陡,但一旦掌握,能解决大量工程难题
官网:temporal.io | GitHub:temporalio/temporal