概述
Temporal Server 是高度可伸缩的和多租户的,能够同时运行数百万个工作流。它使用各种分片技术来确保内部的可伸缩性。它还能够通过在多个主机上运行多个实例进行水平扩展。
Server本身并不执行应用程序代码,而是使用队列、计时器和数据库跟踪应用程序的状态。
服务端拓扑架构
“服务器”本身实际上是四个服务和一个数据库的集群
Server的实例可以作为独立进程运行,也可以在一个或多个物理或虚拟机上分组为共享进程。但是对于正在运行的环境,要确保每个服务都是独立运行的,因为它们都有不同的向外扩展需求,因此故障排除变得更容易。
Frontend Service
Frontend Service 暴露了一个强类型的Proto API,应用程序使用它来连接到服务器。
Frontend Service 负责所有入站调用,包括由远程集群发起的多集群复制相关调用。
它与Matching服务、History服务、Worker服务和数据库交互。
它使用grpcPort 7233来承载服务处理程序。它使用6933端口与其他主机进行成员相关的通信。
History service
History服务管理工作流状态转换。该服务可以通过拥有多个实例进行内部扩展。
它与Frontend服务、Matching服务和数据库交互。
它使用grpcPort 7234来托管服务处理程序。它使用6934端口进行成员相关的通信。
Worker service
Worker服务运行复制队列、系统工作流的后台处理,以及1.5.0以上版本的Kafka可见性处理器。
它与Frontend服务对话。
它使用grpcPort 7239来托管服务处理程序。它使用6939端口进行成员相关的通信
DataBase
支持Cassandra、MySQL和PostgreSQL模式,因此可以用作服务器的数据库。
数据库存储任务、工作流数据、事件和可见性数据。