一、资源隔离
每个 Worker 会设置一个 Task Queue 以及配置信息,通过 Task Queue 可以实现业务间的隔离,绑定同一个 Task Queue 可以作为云效上的一个服务组,支持扩缩容,可以通过队列内任务的情况以及服务组机器的负载情况调整容器数量
![](https://i-blog.csdnimg.cn/blog_migrate/abde31b757f9f704dad369a0c689360a.png)
二、可用性介绍
1、temporal 的架构设计
Workflow可以把它理解为Workflow的一次执行;WorkflowExecutions是Temporal执行的最小逻辑单元
每个Execution都拥有一个本地状态,并且对这个状态具有独占访问权,也就是其他Workflow是不能直接访问的。同时Workflow之间是并行去执行的,之间互不影响,如果Workflow之间需要通信的话,会通过消息传递的方式来进。
Q:数以百万的WorkflowExecution执行会存在资源消耗或者不足的情况吗?
A:Workflow Execution是非常轻量级的,消耗的资源非常小。例如,一个WorkflowExecution如果被挂起(假设处于等待状态),其实这个时候WorkflowExecution根本不会消耗任何计算资源
2、可重入流程运行
在执行一个Workflow的时候,这个Workflow只执行一次,直到完成。也就是无论你把这个Workflow设置成执行几秒还是几年,无论系统负载如何,无论发生任意故障,都不会影响Workflow的执行。挂掉会自动重启,失败会自动重试。
3、为什么是 temporal
- 基于事件溯源的容错能力
- 会根据我们的重试策略自动进行重试
- 如果执行能力不足,则就只需要加 worker 节点即可提高系统的分布式能力