Temporal部署指南:集群架构、服务器部署流程、部署细节及Temporal UI配置

这篇具有很好参考价值的文章主要介绍了Temporal部署指南:集群架构、服务器部署流程、部署细节及Temporal UI配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、集群架构

操作部署前请仔细阅读 03 Temporal 详细介绍 篇

2、Temporal Server 部署流程

原理是:启动前先用 dockerize 生成一遍实际使用的配置,然后再启动Server本体

Self-hosted Temporal Cluster guide | Temporal Documentation

新建应用

app:编辑temporal-eco - 云效应用 - temporal-eco

数据库:temporal_eco 和 temporal_eco_vis 

数据库 Schema 创建及数据初始化

涉及系统环境变量

TEMPORAL_STORE_DB_NAME
TEMPORAL_STORE_DB_HOST
TEMPORAL_STORE_DB_PORT
TEMPORAL_STORE_DB_USER
TEMPORAL_STORE_DB_PWD
TEMPORAL_VISIBILITY_STORE_DB_NAME
TEMPORAL_VISIBILITY_STORE_DB_HOST
TEMPORAL_VISIBILITY_STORE_DB_PORT
TEMPORAL_VISIBILITY_STORE_DB_USER
TEMPORAL_VISIBILITY_STORE_DB_PWD

参考 链接 和 v1.12.0 Makefile

# in https://github.com/temporalio/temporal git repo dir

export SQL_PLUGIN=mysql

export SQL_HOST=mysql_host

export SQL_PORT=3306

export SQL_USER=mysql_user

export SQL_PASSWORD=mysql_password

  

./temporal-sql-tool create-database -database temporal

SQL_DATABASE=temporal ./temporal-sql-tool setup-schema -0.0

SQL_DATABASE=temporal ./temporal-sql-tool update -schema-dir schema/mysql/v57/temporal/versioned

  

./temporal-sql-tool create-database -database temporal_visibility

SQL_DATABASE=temporal_visibility ./temporal-sql-tool setup-schema -0.0

SQL_DATABASE=temporal_visibility ./temporal-sql-tool update -schema-dir schema/mysql/v57/visibility/versioned

集群部署

frontend history matching 在创建服务时选 GRPC 服务,worker 选择其他 (它在某个版本后不会暴露 GRPC 端口),然后客户端服务用 GRPC + 公司的服务发现连到 frontend 即可

Shards 数量

参考链接,确定数量为 4k = 4096。Shards 数量一旦确定,后续无法改变(唯一无法改变的配置)。Shards are very lightweight. There are no real implications on the cost of clusters. We (Temporal) have tested the system up to 16k shards.

组件数量及资源量

推荐值(v)参考链接

组件

数量

推荐 CPU 资源量

推荐内存资源量

frontend344Gi
history588Gi
matching344Gi
worker244Gi

测试环境数量及资源量

组件

数量 = floor(v/2)

推荐 CPU 资源量 = floor(v/4)

推荐内存资源量 = floor(v/4)

frontend111Gi
history222Gi
matching111Gi
worker111Gi

生产环境数量及资源量

组件

数量 = floor(v/2)

推荐 CPU 资源量 = floor(v/2)

推荐内存资源量 = floor(v/2)

frontend122Gi
history244Gi
matching122Gi
worker122Gi

对接外部应用的 Mesh 地址

update_at

${unit}--master.app.svc

2023.05.04temporal-frontend--master.temporal-eco.svc.cluster.local:80

3、部署细节

生产环境如何部署:Temporal Platform production deployments | Temporal Documentation

  • 支持 Cassandra、MySQL 和 PostgreSQL(版本见链接),需要确定与 TiDB 的兼容性

  • 数据库 Schema 升级

  • 通过指标来进行系统性能监控与调优

  • Server 拓扑中的不同服务特性不同,最好独立部署

    • the Frontend service is more CPU bound

    • the History and Matching services require more memory

  • Server 的一些数据大小限制

  • what-is-the-recommended-setup-for-running-cadence-temporal-with-cassandra-on-production

    • Frontend: Responsible for hosting all service api. All client interaction goes through frontend and mostly scales with rps for the cluster. Start with 3 instances of 4 cores and 4GB memory.

    • History: This hosts the workflow state transition logic. Each history host is running a shard controller which is responsible for activating and passivating shards on that host. If you provision a cluster with 4k shards then they are distributed across all available history hosts within the cluster through shard controller. If history hosts are scalability bottleneck, you just add more history hosts to the cluster. All history hosts form its own membership ring and shards are distributed among available nodes in the hash ring. They are quite memory intensive as they host mutable state and event caches. Start with 5 history instances with 8 cores and 8 GB memory.

    • Matching: They are responsible for hosting TaskQueues within the system. Each TaskQueue partition is placed separately on all available matching hosts. They usually scale with the number of workers connecting for workflow or activity task, throughput of workflow/activity/query task, and number of total active TaskQueues in the system. Start with 3 matching instances each with 4 cores and 4 GB memory.

    • Worker: This is needed for various background logic for ElasticSearch kafka processor, CrossDC consumers, and some system workflows (archival, batch processing, etc). You can just start with 2 instances each with 4 cores and 4 GB memory.

    • Number of history shards is a setting which cannot be updated after the cluster is provisioned. For all other parameters you could start small and scale your cluster based on need with time but this one you have to think upfront about your maximum load

    • Temporal server consists of 4 roles. Although you can run all roles within same process but we highly recommend running them separately as they have completely different concerns and scale characteristics. It also makes it operationally much simpler to isolate problems in production. All of the roles are completely stateless and system scales horizontally as you spin up more instances of role once you identify any bottleneck. Here are some recommendations to use as a starting point:

  • 接入 SSO

  • 打指标到 Prometheus

  • 如何配置 Grafana Dashboard

  • 是否部署至 K8s 的讨论

4、Temporal UI 部署流程

https://temporal-eco-ui.pek01.in.zhihu.com/namespaces/default/workflows


步骤详细遇到问题
本地部署

 
基础环境
  • apt install nodejs

  • apt install npm

  • npm install pnpm -g

  • apt-get install -y nodejs

  • /usr/bin/node -v

  • npm install n -g

  • n stable # 更新到稳定版本


安装依赖

(会产出temporal web 所需要的前端环境及代码)

安装最新的 temporal server

  • pnpm install

  • pnpm start

构建 ui-server

  • pnpm run build:local

  • pnpm run build:cloud

前端环境问题:nodejs、npm、pnpm

  • 本地安装部署,前端环境及代码整体打包到线上

pnpm build:server 生成 assets 文件,否则报 ui/assets 的 all:assets 找不到

Temporal UI requires Temporal v1.16.0 or later

第三方依赖

(产出通信所需的 proto 文件)

  • make install

  • make build-grpc

grpc 依赖 protobuf 协议(指定了依赖的代码路径)

  • 配置submodule,产出 proto 文件

尝试启动
  • go build -o ui-server ./cmd/server/main.go

  • ./ui-server start

然后切到自建的 temporal server 上,再次启动
需关注文件
  • package.json/script # pnpm 执行脚本文件

  • ./env  # 映射环境配置

    • 默认 dev 环境,package.json/script

    • "start": "pnpm run dev:local -- --open"

    • "dev:local": ". ./.env && VITE_TEMPORAL_UI_BUILD_TARGET=local vite dev --port 3000"

  • config/base.yaml # 依赖 temporal server 地址

  • config/development.yaml # 暴露页面端口

目前  temporal server 地址 是写死在 temporal ui 代码库里的(但一般应该不会变)

已做了动态配置生成

线上部署

git clone git@git.in.zhihu.com:xujialong01/temporal-eco-server.git

配置 ui-server 服务地址

外部包导入个人仓库,加快下载

与 UI 版本对齐(temporal server upgrade)

参考资料

Temporal Platform production deployments | Temporal Documentation文章来源地址https://www.toymoban.com/news/detail-759070.html

到了这里,关于Temporal部署指南:集群架构、服务器部署流程、部署细节及Temporal UI配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis持久化说明及其单台Linux服务器搭建Redis集群架构

    说明:RDB快照主要以二进制文件的形式进行存储数据,主要以文件名dump.rdb进行存储,主要设置redis.conf里面设置’save 60 1000’命令可以开启, 表示在60秒内操作1000次进行一次备份数据。在客户端执行save(同步)和bgsave(异步操作)。 redis.conf 启动redis相关命令 说明:主要把文件生

    2024年02月10日
    浏览(59)
  • minio集群部署,4台服务器+1台nginx

    分布式Minio里所有的节点需要有同样的access秘钥和secret秘钥,即:用户名和密码 分布式Minio存放数据的磁盘目录必须是空目录 分布式Minio官方建议生产环境最少4个节点,因为有N个节点,得至少保证有N/2的节点才能可读,保证至少N/2+1的节点才能可写。这里只是作演示搭建,只

    2024年02月15日
    浏览(57)
  • 概述、搭建Redis服务器、部署LNP+Redis、创建Redis集群、连接集群、集群工作原理

    Top 案例1:搭建redis服务器 案例2:常用命令限 案例3:部署LNP+Redis 案例4:创建redis集群 1.1 具体要求如下 在主机redis64运行redis服务 修改服务运行参数 ip 地址192.168.88.64 服务监听的端口6364 redis服务的连接密码为 tarenaplj 1.2 方案 准备1台新虚拟机,要求如表-1所示。   1.3 步骤 实

    2024年02月12日
    浏览(84)
  • 网站架构演变、LNP+Mariadb数据库分离、Web服务器集群、Keepalived高可用

    目录 day02 深入理解程序的数据存储 验证 配置NFS服务器 配置代理服务器 配置名称解析 程序将文字数据保存到数据库中 程序将非文字数据(如图片、视频、压缩包等)保存到相应的文件目录中 验证 发一篇文章,文章内容包含文字和图片 在数据库中查看文字数据。在最新的一

    2024年02月20日
    浏览(46)
  • Palworld服务器怎么搭建?(帕鲁主机部署详细指南)

    对于《幻兽帕鲁》的玩家们来说,能够亲手搭建属于自己的服务器无疑是一种令人向往的体验。想象一下,与自己的小伙伴们在这个专属且充满冒险气息的游戏空间中畅游,探索未知的领域,共同创造属于你们的精彩故事,这无疑是一种无与伦比的乐趣。 本文将为大家详细介

    2024年02月21日
    浏览(57)
  • CIFS协议入门指南:快速部署文件共享服务器

    数据来源  本文涉及NTFS权限的知识,不熟悉的可以先看这篇文章         通过网络提供文件共享服务,提供文件下载和上传服务(类似于FTP服务器)         方法: 文件夹右键属性 -- 共享 -- 开启共享 -- 设置共享名 -- 设置共享权限         注:            

    2024年02月12日
    浏览(51)
  • (十)服务器K8S集群部署SpringBoot项目实战

    可以在 https://start.spring.io/网站准备一个项目,这里作为k8s的学习所以springboot项目中准备一个简单的访问接口即可。 1.更新系统软件包: 2.安装 OpenJDK 11: 3.验证 Java 安装: 4.配置环境变量 5.使环境变量生效 1.可以在 https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin

    2024年02月12日
    浏览(49)
  • 如何将项目部署到服务器:从选择服务器到维护应用程序的全流程指南

    将项目部署到服务器是一个重要的技能,对于开发人员来说,它是必不可少的。在本文中,我将介绍一些关于如何将项目部署到服务器的最佳实践。 一、选择服务器 在部署项目之前,你需要先选择一个适合你的服务器。如果你已经有一个可用的服务器,你可以直接使用它,

    2024年02月05日
    浏览(59)
  • Cenos7 搭建Minio最新版集群部署服务器(一)

                                                      ------      道 | 法 | 术 | 器 | 势     ------                             多台服务器间免密登录|免密拷贝 Cenos7 搭建Minio集群部署服务器(一) Cenos7 搭建Minio集群Nginx统一访问入口|反向动态代理(二)  Nginx正向代理与反向

    2024年02月12日
    浏览(39)
  • Centos7 x86服务器一键部署ES集群/单机shell

            由于日常的实施工作中经常用到单机或者集群的es,每次都手动部署感觉很麻烦,于是抽空写了一个一键部署脚本,通过简单指定集群名称、节点ip、端口等几个配置参数后自动部署es单机或者集群数据库 该安装包实现利用给定参数安装单机版或者集群版es数据库,指

    2023年04月11日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包