Temporal
活跃简介
Temporal 是一个分布式可靠的持久执行平台,通过自动重试和状态管理把 Agent 工作流从临时脚本升级为可观测的生产系统。
核心特性
- 持久工作流执行 — 工作流以事件溯源方式持久化存储,进程崩溃后可从中断点恢复执行
- 自动重试与超时 — 内置可配置的重试策略、超时和指数退避机制,无需手写容错代码
- 多语言 SDK — 提供 Go、Java、TypeScript、Python、.NET、PHP 等官方 SDK
- 活动子工作流 — 支持 Activity、子工作流、Saga、补偿等组合模式
- 可视化与历史回放 — 通过 Web UI 查看工作流执行历史、状态和调用栈
- 跨服务事务 — 通过 Saga/Compensation 模式保障分布式事务一致性
适用场景
💡 在生产环境中可靠地编排多步 LLM Agent 任务,自动处理网络超时和模型限流
💡 用代码而非 YAML 定义长时运行的工作流,支持跨天甚至跨周的执行跨度
💡 通过 Activity 调用外部 API 并自动重试失败请求
💡 把多个微服务编排成 Saga 模式,自动补偿失败的下游调用
💡 通过 Web UI 回放任意历史工作流执行以排查问题
优势与不足
✅ 优势
- • 活跃维护,近期持续更新
- • 社区热度高(22.3k stars)
- • 开源许可证友好(MIT)
分类
快速开始
# 启动本地 Temporal 开发服务器
brew install temporal
temporal server start-dev
# 安装 Go SDK
go get go.temporal.io/sdk
# 编写一个简单的工作流(workflow.go)
package workflow
import (
"time"
"go.temporal.io/sdk/workflow"
)
func GreetingWorkflow(ctx workflow.Context, name string) (string, error) {
ao := workflow.ActivityOptions{StartToCloseTimeout: time.Second * 10}
ctx = workflow.WithActivityOptions(ctx, ao)
var result string
err := workflow.ExecuteActivity(ctx, ComposeGreeting, name).Get(ctx, &result)
return result, err
}
# 启动 Worker 并发起工作流执行
go run worker/main.go
temporal workflow start --task-queue greeting-tasks --type GreetingWorkflow --input '"World"'