技术架构解密 - 应用与服务编排工作流 ASW
文章图片
腾讯云应用与服务编排工作流 ASW(Application Service Workflow)是新一代计算架构体系下的服务编排解决方案,用来协调分布式任务执行的编排产品。在应用与服务编排工作流中设定好任务执行步骤,可以将多个腾讯云服务按步骤进行调度,完成各种业务应用场景。能简化开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,更简单、更高效的构建应用。 像胶水一样粘合云上各种产品和服务,提供面向用户场景的端到端解决方案。
01. 应用与服务编排工作流 ASW 背景介绍
文章图片
【技术架构解密 - 应用与服务编排工作流 ASW】随着云计算技术的发展和进步,函数即服务(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 系统架构
文章图片
ASW 整体架构包含如下部分:前端+SDK、权限服务、调度服务、模板服务、执行器以及为了支撑整体运行的外部底座设施和中间件。
各个模块各司其职,相互配合,在性能、可拓展性、成本间取得了很好的平衡。下面来分别简要介绍每一个模块的核心作用。
- 权限服务
- 对控制台来的用户进行鉴权,校验用户账户中,是否有ASW需要的角色等;
- 状态机运行时,涉及到调用云上资源,则需要获取临时秘钥。
- 模板服务
- 调度服务
- 执行器
04. 架构演进方向 目前的架构可在大流量背景下,提供稳定、可观测、弹性的服务,但在如下几个方面依旧可以进一步优化。包括但不限于:资源隔离、私有化、成本降低等。
一张图快速读懂「腾讯云 ASW 工作流」
文章图片
识别下方 二维码,即可加入腾讯云 ASW 交流群。
文章图片
One More Thing 立即体验腾讯云 Serverless Demo,领取 Serverless 新用户礼包 腾讯云 Serverless 新手体验 。
推荐阅读
- GIS跨界融合赋能多领域技术升级,江淮大地新应用成果喜人
- 深入浅出谈一下有关分布式消息技术(Kafka)
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- 2月2日日课总结(基因技术)
- NAT(网络地址转换技术)
- 云原生微服务技术趋势解读
- 国家重点支持的高新技术领域(一)
- 数据技术|一文了解Gauss数据库(开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比)
- Python爬虫技术要学到什么程度才可以找到工作()
- 年薪30万的Java架构师必会的springboot面试题