乐趣区

关于腾讯云:技术架构解密-应用与服务编排工作流-ASW

<img src=”https://main.qcloudimg.com/raw/f16dd23519567f4d48aa7c284cf37f62.jpg” width=”700″/>

腾讯云利用与服务编排工作流 ASW(Application Service Workflow)是新一代计算架构体系下的服务编排解决方案,用来协调分布式工作执行的编排产品。在利用与服务编排工作流中设定好工作执行步骤,能够将多个腾讯云服务按步骤进行调度,实现各种业务利用场景。能简化开发和运行业务流程所须要的工作协调、状态治理以及错误处理等繁琐工作,更简略、更高效的构建利用。像胶水一样粘合云上各种产品和服务,提供面向用户场景的端到端解决方案。

01. 利用与服务编排工作流 ASW 背景介绍

<img src=”https://main.qcloudimg.com/raw/19fee1dce4817561398ed6ef109bdf4b.jpg” width=”700″/>

随着云计算技术的倒退和提高,函数即服务(FaaS)、无服务(Serverless)等新一代技术计划越来越多的成为用户上云的首选解决方案。无服务并不是指开发者没有服务,而是指开发者应用的来说,不必更多的去思考服务器的相干内容,无需再去思考服务器的规格大小、存储类型、网络带宽、主动扩缩容问题;同时,也无需再对服务器进行运维了,无需一直的打零碎补丁、利用补丁、无需进行数据备份、软件配置等工作了。

Serverless 在开发便捷性、高性能、弹性扩缩容、部署便捷性、老本等方面具备人造的劣势。用户从以前须要购买计算实例,部署利用程序代码的应用模式,逐步转变为基于函数做面向最终业务的开发。腾讯云 Serverless 函数计算产品 – 云函数(Serverless Cloud Function,SCF),十分不便的提供面向单次申请或事物的解决能力;而云函数本身的运行、扩缩绒、部署等,均有 Serverless 服务提供商解决,对用于层面通明。随着 Serverless 架构利用的越来越多,越来越广,很多用户也逐步将越来越多的业务以 Serverless 的形式进行部署。

此时,多个云函数和其余云服务之间的编排组合便成为了新的技术挑战。为了解决泛滥原子服务的串联和编排需要,ASW 应运而生。

ASW(Application Service Workflow) 以工作流的模式,对包含云函数在内的云服务进行对立编排,反对程序、并行、循环、失败重试、异样捕捉、输入输出解决等性能,真正做到面向开发者的最终场景,从输出到输入,端到端提供解决方案。

举例来说,开发者想要实现一个视频字幕 OCR 的性能,在没有 ASW 的状况下,须要手工将视频帧采集、视频图像截取、图像保留、OCR 接口调用、后果保留等解决节点进行组合串联。这可能波及到一系列的运维、扩容、监控、失败解决等逻辑的开发和组件对接,而应用 ASW 工作流,用户不须要思考,只须要依照最终场景,应用 TCSL 语言编写工作流即可疾速实现业务上线。

工作流提供 TCSL 语言(Tencent Cloud States Language),一种基于 Json 的结构化语言,用来形容和定义工作流中的业务逻辑。该语言灵便不便,可写出可读性强、易于保护的状态机定义代码。语言兼容亚马逊 Step Functions 的 ASL 语法。提供工作节点(Task)、传递节点(Pass)、抉择节点(Choice)、并行节点(Parallel)、循环节点(Map)。

02. 技术挑战解析

在设计并实现这样一个极为灵便的工作流零碎时,须要思考的问题很多;本局部将从数据量、可观测性、架构弹性等角度剖析。

1. 工作流 ASW 产品是一个数据密集型产品。

用户串联的所有微服务,数据均须要通过 ASW 进行转发或传递。同时有大批量数据在 ASW 外部进行流转。此时,CPU 的负载并不是最高的,内存、网络等波及大量数据 IO 的硬件,会首先是性能瓶颈。这也要求 ASW 产品在设计时,须要谨慎的抉择数据库中间件、存储中间件等。

依照设计要求,每天 100 亿次执行,对应着会产生 100 亿次执行记录数据;会产生远超 100 亿的执行历史记录数据。这些数据特点为写入数量远大于查问数量、程序写入、须要做过期逻辑。

对于执行数据咱们采取的解决方案是应用 Redis 来程序写入执行数据,开发专门的清洁工程序,负责过期数据清理。后续可进一步革新,应用原生反对过期逻辑的数据中间件上。对于执行历史记录,ASW 应用 腾讯云日志服务 CLS 来存储海量执行记录。

2. 工作流产品须要提供足够的可观测性

工作流 ASW 是面向用户最终场景的解决方案,每一个工作流,都是用户的一个业务,工作流的抖动或不可用,会导致用户业务间接受损。因而,提供必要的可观测性是非常必须的。须要提供每秒启动执行次数、执行胜利次数、执行失败次数、执行耗时等指标。这些数据,须要从 ASW 的执行代码中进行上报。尽管埋点并不艰难,然而应答如此微小的数据量,也同样是个不小的挑战。

对于可观测性要求,ASW 应用 腾讯云监控 CM。对执行过程中产生的指标数据进行收集整理。别离提供启动执行次数、执行胜利次数、执行失败次数、执行耗时 4 个指标的监控、告警、Dashboard 可视化能力。

最初,思考到随时可能到来的流量洪峰,须要零碎整体有足够的弹性来应答。工作流产品,部署在私有云上,会有不可预期的流量洪峰到来,因而要求整体技术架构有足够好的横向拓展能力,以应答流量挑战。

弹性方面,ASW 应用 腾讯云容器服务 TKE,针对流量洪峰,配置 HPA 策略,应用 TKE 提供的监控来观测容器本身运行状态,同时,所有服务也都是基于容器进行部署的。

03. 利用与服务编排工作流 ASW 零碎架构

<img src=”https://main.qcloudimg.com/raw/ee03124490c7eaa24bf694ada0667196.jpg” width=”700″/>

ASW 整体架构蕴含如下局部:前端 +SDK、权限服务、调度服务、模板服务、执行器以及为了撑持整体运行的内部底座设施和中间件。

各个模块各司其职,相互配合,在性能、可拓展性、老本间获得了很好的均衡。上面来别离简要介绍每一个模块的核心作用。

  • 权限服务

次要性能蕴含两局部:

  1. 对控制台来的用户进行鉴权,校验用户账户中,是否有 ASW 须要的角色等;
  2. 状态机运行时,波及到调用云上资源,则须要获取长期秘钥。

权限服务的第二个外围性能就是换票和票据缓存、过期、更新等逻辑。其中执行器调用权限服务的申请量,可达每天数十亿次。

  • 模板服务

用于和控制台、SDK 进行交互,对模板数据进行增删改查治理。用户的创立、编辑状态机的申请,均由模板服务提供反对。该模块因为次要和用户侧交互,并发量并不会特地大。

  • 调度服务

用户通过控制台或 SDK,发动执行(调用 StartExecution)接口时,通过腾讯云 API 转发后,流量会达到调度器,由调度器进行入参校验、TCSL 代码获取、负载平衡、生成 ExecutionQRN、写入执行数据等操作后,将申请发送给负载平衡模块抉择出的某个执行器来理论运行一个状态机。因用户的外围逻辑均依赖启动执行性能,因而要求有足够的性能和弹性。其余性能还波及到进行执行、获取执行状态、获取执行列表、执行器心跳查看等。

  • 执行器

ASW 外围运行模块,只和调度器进行交互,提供启动执行、进行执行等 API。启动执行的过程包含 TCSL 语法校验、input 参数校验、TCSL 语法解析并创立有向无环图、状态机节点间输入输出解决、RPC 调用云服务等。并须要依据启动执行时的参数,将执行历史记录数据(每个 Node 的输出和输入)上报到内部数据中间件。因 ASW 我的项目和 腾讯云智天枢人工智能服务平台 TI Matrix 我的项目共用执行器,因而除云 SDK 外,还反对 K8s 相干的服务调用。

04. 架构演进方向

目前的架构可在大流量背景下,提供稳固、可观测、弹性的服务,但在如下几个方面仍旧能够进一步优化。包含但不限于:资源隔离、私有化、老本升高等。

一张图疾速读懂「腾讯云 ASW 工作流」

<img src=”https://main.qcloudimg.com/raw/afd5ace5211ca216709aa14ba1d8e75f.png” width=”700″/>

辨认下方 👇 二维码,即可退出腾讯云 ASW 交换群。

<img src=”https://main.qcloudimg.com/raw/22821ff9d923fd60056f2313db287a79.png” width=”400″/>


One More Thing

立刻体验腾讯云 Serverless Demo,支付 Serverless 新用户礼包 👉 腾讯云 Serverless 老手体验。

退出移动版