0、Temporal 是什么
Temporal是一个微服务编排平台,它使开发人员能够在不牺牲生产力或可靠性的情况下构建可扩展的应用程序。Temporal 服务器以弹性的方式执行应用程序逻辑单元,工作流,自动处理间歇故障,并重试失败的操作。(翻译自 Temporal 的 GitHub 主页)
1、Temporal 的架构设计
这里有一些概念:
- Starter:发起工作流的进程
- Worker:执行 Workflow 和 Activity 的进程
-
Temporal Server:记录工作流的状态、分发活动任务(已经部署完成,使用者暂时无需关心)
- Workflow:工作流
- Activity:具体活动事件节点
- Namespace:命名空间,用于业务资源的隔离
- TaskQueue:任务队列
2、工作原理
在业务模块当中按规则编写 Workflow 流程以及其具体的 Activity,并注册到 worker 当中,启动 worker,当外部⽤户触发 Workflow,Temporal 编排 workflow 形成⼀系列的 task 送到队列中,worker 去队列取任务,执⾏后将结果返回给Temporal。
举一个银行的流程示例:
由四部分组成Starter、Temporal Server、Worker、Bank。
- Starter:工作流的创建者/发起者
- Temporal Server:存储所有工作流的数据、状态的中间件,整个工作依赖于该 server
- Worker:实际进行逻辑处理的执行者,就像我们连接 Redis、kafka 一样
- Bank:官方给的示例,可以理解为 DB
具体的流程描述:
- 启动Temporal Server。(已启动无需关心)
- 启动 Worker 监听 Temporal Server,循环获取待执行的工作流。
- Starter 创建一个工作流,封装参数,调用 sdk 的 api 发送到 Temporal Server。
- Worker 拉取到工作流开始逻辑处理。
3、适用场景
工作流通常适用于,有状态的、异步、长时间执行、依赖服务不可靠、稳定性差等特性的业务场景,比较典型的场景包括
- 视频、音频、图片处理工作流
- 订单、审批流程
- 数据处理流水线,如自动提问
- 自动化运维
4、结语
本文详细介绍了 Temporal 里的几个核心概念,如果有想法就来快速试试吧 >> 02 快速上手(Quick Start)篇,更多详细资料参考 >> 03 Temporal 详细介绍 篇或 官网。