产品详细介绍

Temporal 是一个专注于“持久化执行(Durable Execution)”的开源平台,帮助开发团队构建在各种故障场景下依然能够持续运行、不丢进度的应用程序。它通过将业务逻辑建模为工作流(Workflow)和活动(Activity),自动管理状态持久化、重试、超时、定时任务和信号通信,让分布式系统中的失败变得“无关紧要”。

在传统分布式系统中,开发者需要自己处理网络抖动、API 调用失败、服务崩溃、进程重启等问题,编写大量补偿逻辑、重试机制和状态对账代码。Temporal 将这些复杂性下沉到平台层:

  • 工作流(Workflow):用你熟悉的编程语言(如 Java、Go、TypeScript 等)直接编写业务逻辑,Temporal 会在每一步自动捕获和持久化状态。一旦发生故障,工作流可以从上次成功的步骤精确恢复执行,无需人工干预。
  • 活动(Activity):对外部系统调用、长耗时任务、人机交互等操作进行封装。活动天然具备自动重试、超时控制和错误恢复能力,避免因第三方 API 或网络问题导致业务中断。
  • Temporal Service:作为核心服务端组件,负责持久化工作流状态、调度任务、管理任务队列、处理信号与定时器等。你可以选择自建开源版本,或使用官方托管的 Temporal Cloud 服务。

借助 Temporal,应用可以:

  • 在服务重启、容器迁移、节点故障时保持业务进度不丢失;
  • 自动从失败点恢复,无需人工排查日志和手动补单;
  • 清晰观测每个工作流实例的当前状态、历史步骤和执行结果;
  • 以代码的方式表达复杂业务流程,而不是依赖脆弱的脚本和临时补丁。

Temporal 特别适合以下场景:

  • AI 与智能体(Agents、MCP、AI Pipelines):编排复杂的 AI 推理与训练流水线,确保在长时间运行和多服务协作中依然可靠;
  • 金融与支付流程:如跨账户转账、结算清分、风控审批等,要求强一致性和可恢复性;
  • 订单处理与物流:订单生命周期管理、库存锁定、发货与回执等多步骤流程;
  • 云基础设施编排:自动化部署、扩缩容、资源回收等长流程操作;
  • 人机协同(Humans-in-the-Loop):在流程中自然插入人工审批、确认或补充信息,而不需要额外拼接临时工作流。

通过将“可靠性”和“状态持久化”内建到平台层,Temporal 让团队可以专注于业务逻辑本身,加快功能交付速度,同时显著降低运维与故障处理成本。

简单使用教程

以下是基于 Temporal 的一个简化使用流程,帮助你快速理解从开发到运行的大致步骤:

  1. 选择部署方式

    • 若希望完全自管,可部署开源版 Temporal Service(通常依赖数据库和队列系统)。
    • 若希望快速上线并减少运维,可使用官方托管的 Temporal Cloud
  2. 安装 SDK 与开发环境

    • 根据团队技术栈选择对应的 Temporal SDK(如 Java、Go、TypeScript 等)。
    • 在项目中引入 SDK 依赖,配置连接到 Temporal Service 或 Temporal Cloud 的地址和凭证。
  3. 编写工作流(Workflow)代码

    • 将一个完整业务流程(例如:下单→支付→发货→通知用户)写成一个工作流函数或类。
    • 在工作流中只描述业务步骤和调用顺序,不需要自己写重试、补偿和状态持久化逻辑。
    • 工作流代码应保持“确定性”(同样的输入和历史事件,执行结果一致),以便 Temporal 能安全地重放和恢复。
  4. 定义活动(Activity)并实现外部调用

    • 将访问外部服务、数据库操作、长耗时任务、人机交互等封装为 Activity。
    • 在 Activity 上配置重试策略(最大重试次数、退避时间等)和超时设置。
    • 在工作流中通过 SDK 调用这些 Activity,Temporal 会自动处理失败重试和错误恢复。
  5. 启动 Worker 进程

    • 编写并启动 Worker 程序,注册需要执行的 Workflows 和 Activities。
    • Worker 通过任务队列从 Temporal Service 拉取任务,执行对应的工作流步骤和活动。
    • 可根据负载水平水平扩展多个 Worker 实例,实现高可用和高吞吐。
  6. 触发工作流执行

    • 在你的应用服务中,通过 Temporal SDK 启动一个新的工作流实例,传入业务参数(如订单 ID、用户信息等)。
    • 每个工作流实例都有唯一 ID,便于后续查询状态、发送信号或取消执行。
  7. 处理人机交互与外部事件(可选)

    • 若流程中需要人工审批或外部系统回调,可使用 Temporal 的 Signal 机制。
    • 外部系统或前端在用户操作后,通过 SDK 或 API 向指定工作流实例发送信号,工作流即可在等待点继续执行。
  8. 监控与排错

    • 使用 Temporal 提供的 Web UI 或相关工具,查看每个工作流实例的当前状态、历史事件和执行时间线。
    • 遇到异常时,可直接在 UI 中定位失败步骤,而无需在分散的日志中反复搜索。
    • 如有需要,可通过重新运行、重放或补偿逻辑来修复特定流程实例。

通过以上步骤,你可以在现有技术栈中逐步引入 Temporal:先从一个关键长流程或高失败率场景开始,将其改写为 Temporal 工作流,利用平台内建的持久化执行能力,逐步提升系统整体的可靠性与可观测性。