1. 课程导论:任务调度平台与 Temporal 的关系、课程目标与学习路径
1.1 为什么需要任务调度平台?
在现代分布式系统中,业务逻辑往往不是一次性的请求-响应,而是由多个步骤组成的长期运行流程。例如:订单创建后需要 30 分钟未支付自动取消、用户注册后发送欢迎邮件序列、每日凌晨的数据报表生成与推送。这些场景都需要一个可靠的任务调度与编排平台来管理执行顺序、重试策略、状态持久化和错误处理。
核心痛点: 传统 Cron 定时任务 + 消息队列的组合在面对复杂编排、长时间运行、状态回溯和跨服务协调时,代码复杂度急剧上升,且缺乏统一的可见性与治理能力。
1.2 从传统调度到 Temporal 编排
下表对比了传统任务调度方案与基于 Temporal 的编排方案在关键维度上的差异:
| 维度 | 传统方案(Cron + MQ + 数据库状态机) | Temporal 编排方案 |
|---|---|---|
| 执行模型 | 定时触发 + 异步消息驱动 | 工作流(Workflow)作为一等公民,代码即编排 |
| 状态持久化 | 依赖外部数据库,需手动管理状态表 | 自动事件溯源(Event Sourcing),工作流状态完全可恢复 |
| 重试与补偿 | 需自行实现重试队列和 Saga 补偿逻辑 | 内置指数退避重试、定时器、子工作流补偿 |
| 可见性 | 分散的日志和监控指标 | Web UI / CLI / OpenAPI 统一查看所有工作流执行历史 |
| 跨语言支持 | 通常绑定单一语言生态 | Go、Java、Python、TypeScript 等 SDK 原生支持 |
1.3 Temporal 在任务调度平台中的定位
Temporal 不是一个简单的任务队列,而是一个分布式、可扩展、容错的工作流引擎。在任务调度平台中,Temporal 承担以下核心角色:
- 编排层(Orchestrator): 定义任务执行的 DAG(有向无环图)或顺序流程,控制步骤间的依赖与并行。
- 状态管理层(State Manager): 通过 Event History 记录每个工作流的完整执行轨迹,支持任意时间点的恢复与查询。
- 调度执行层(Scheduler + Executor): 内置定时器(Timer)和 Cron 支持,结合 Worker 池实现分布式任务执行。
- 治理与观测层(Governance & Observability): 提供 OpenAPI 接口,允许外部系统动态创建、暂停、重置、查询工作流。
1.4 课程目标
本课程旨在帮助学员掌握以下核心能力:
- 理解 Temporal 核心模型: 工作流(Workflow)、活动(Activity)、Worker、命名空间(Namespace)、任务队列(Task Queue)的概念与交互。
- 掌握 OpenAPI 集成: 如何通过 Temporal 的 OpenAPI 规范动态创建、查询、信号(Signal)、查询(Query)和终止工作流。
- 构建生产级任务调度平台: 结合 Temporal 的 Cron 调度、定时器、重试策略和 Saga 模式,实现可靠的业务编排。
- 实战演练: 从零搭建一个基于 Temporal + OpenAPI 的订单超时处理与通知调度系统。
1.5 学习路径与章节规划
课程共分为 6 个模块,30 个章节,循序渐进地从基础概念到高级实战:
| 模块 | 章节范围 | 核心内容 |
|---|---|---|
| 模块一:基础入门 | 第 1-5 章 | 任务调度概念、Temporal 环境搭建、第一个工作流 |
| 模块二:核心机制 | 第 6-12 章 | 工作流与活动生命周期、重试与超时、定时器与 Cron |
| 模块三:OpenAPI 集成 | 第 13-18 章 | OpenAPI 规范解读、客户端生成、动态工作流管理 |
| 模块四:高级编排模式 | 第 19-24 章 | Saga 补偿、子工作流、信号与查询、并发控制 |
| 模块五:生产化实践 | 第 25-28 章 | 监控与告警、多租户、数据加密、性能调优 |
| 模块六:综合实战 | 第 29-30 章 | 订单超时调度平台完整实现与部署 |
1.6 预备知识
为获得最佳学习体验,建议学员具备以下基础:
- 至少熟悉一门编程语言(Go / Java / Python / TypeScript 均可)
- 了解基本的 REST API 概念(HTTP 方法、状态码、JSON)
- 对分布式系统的基本概念(如 CAP 理论、消息队列、状态机)有初步认识
- 本地已安装 Docker 和 Docker Compose(用于快速启动 Temporal Server)
💡 提示: 如果你对 Temporal 完全陌生,不用担心。模块一将从零开始搭建开发环境并运行第一个工作流,后续章节会逐步深入。建议在学习过程中保持 Temporal Web UI(默认 http://localhost:8233 )打开,直观观察工作流状态变化。