CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代
企业应用从微服务架构向Serverless(无服务器)架构演进,开启了无服务器时代,面向无服务器计算领域的Workflow也应运而生。CNCF为了给业界提供一种标准方法,建立100%由社区贡献者驱动的Serverless Workflow开源社区,携手社区伙伴,以更全面的规范、更丰富的元素,赋能企业产品化,并有效解决厂商锁定等问题,推进无服务器计算领域的发展。
华为云作为CNCF Serverless Workflow社区的官方合作伙伴,联合2012实验室华为元戎团队在函数工作流优化、版本兼容等多方面提供了优质高效的改进建议。在2021年10月的KubeCon NA 2021(North America)活动中,Tihomir Surdilovic社区领导人介绍了CNCF Serverless Workflow的开源合作伙伴,华为是2021年度CNCF Serverless Workflow 社区贡献排名榜前五中唯一的国内厂商。
工欲善其事,必先利其器
许多Serverless应用程序是由系列函数组成,这些函数可能会根据不同的事件触发器依次执行、并行执行或在分支中执行,我们称之为函数工作流。为了使Serverless 平台正确执行 Serverless 应用程序的函数工作流,应用程序开发人员需要对系列函数进行编排,如何支持应用开发人员简单快速进行函数编排,需要定义一套完整、易用的工作流规范。
就像在微服务架构中,只需要编写Workflow定义的JSON,就可以完成对不同业务流程的调度、编排与自动化,同时国际工作流管理联盟(Workflow Management Coalition,WfMC)还对微服务的Workflow定义了一套完整的参考规范,以使不同厂商的微服务工作流产品之间可以平滑地交换工作单元。
当下,Serverless大行其道,各个大厂纷纷下场布局。Workflow作为其工具链中的一部分,每个厂商都有一套自己的服务接口,当某一厂商暂停服务或者用户想要更换厂商时,这种各自为政的模式导致用户陷入被厂商锁定、移植困难、成本高甚至需要重构系统的艰难境地。
因此,如同WfMC为微服务的Workflow定义参考规范一样,Serverless Workflow也急需一种完整的标准方法和参考规范来打破各大厂商闭门造车的局限。
集众人之长,成Serverless之利
为了给业界提供一种标准方法,CNCF在2020年7月成立了Serverless Workflow 社区,与社区贡献者一起共同构建、完善Serverless Workflow 规范,以促进Serverless应用程序在不同厂商平台之间的可移植性。该社区的开源项目包括:基于DSL的工作流规范、为编程语言提供SDK等,同时与CNCF其他项目也有深度的合作,比如CloudEvents, OpenAPI等。
CNCF Serverless Workflow规范针对无服务技术领域,所以关注点会在事件驱动应用、函数或微服务。CNCF Serverless Workflow规范是一种用于微服务、事件和函数编排的工作流语言规范,可以通过YAML或JSON的格式描述和定义工作流,具有以下优势:
• 基于通用的、声明式的思想提炼语言,更容易表达
目前,工作流语言分为四个类型(如下图所示),CNCF Serverless Workflow 规范是一种基于通用的、声明性的思路提炼出的工作流规范,且支持通过YAML或JSON的格式描述和定义工作流,更容易表达像functions, events, retries这些无服务器技术领域的元素。
四类工作流语言
• 支持强大的、业界通用的控制流逻辑
CNCF Serverless Workflow规范本身提供了非常强大的控制流逻辑,包括了大多数业界支持的核心功能,如顺序执行,以便用户可以定义流水线。在顺序执行的基础上,用户也可以定义并行的执行,如并行调用函数或微服务。另外,也支持使用不同种类的循环结构执行数据库循环调用之类的工作流。此外,重试、错误处理、工作流的手工干预,还有诸如等待和恢复之类的标准能力都被CNCF Serverless Workflow的规范所支持。
为解决实践中业务级的问题,CNCF Serverless Workflow规范增强了诸多重要功能:自动重试、密钥和常量;定义可插拔的表达语言,以便用户可以插入自己选择的表达语言;不同类型的超时,如全局超时或分支超时等;短时和长时工作流的支持;工作流执行期间的补偿处理,如撤销已经成功完成的工作或状态;休眠,如等待某种事件或状态。此外,CNCF Serverless Workflow规范还提供了继续属性的功能,针对工作流在达到云平台运行限制后被迫停止,用户可以编排继续属性,停止当前工作流实例,启动新的工作流实例执行停止前的状态。
工作流逻辑说明图示
• 提供自定义拓展能力
除了上述核心的控制流逻辑,CNCF Serverless Workflow规范也提供了自定义扩展能力。目前社区规范提供两个拓展:关键性能指标和限流。
用户可以通过关键性能指标的扩展能力(如工作流的整体指标、事件的消费与生产指标、函数使用指标、工作流状态指标等)定义工作流,使用自定义指标衡量工作流的性能,对性能和成本进行增强。此外,用户也能够通过限流的拓展能力对调用进行速率的限制,这在无服务器领域尤为重要,比如函数调用并发的限制、调用事件数量的限制、工作流状态总数的限制、工作流执行期间转换的限制等。
拓展能力说明图示
• 功能更全面,能支持更多复杂场景
CNCF Serverless Workflow Specification支持更多元素,比如:CloudEvent、OpenAPI、AsyncAPI、GraphQL、gRPC等开源事件和服务标准的集成。在功能方面,支持建模人工决策、定义超时和重试、定义并行执行逻辑和循环、做出基于数据或事件的决策、定义回调、编写强大的表达式、设置秘密和常量等。在应用方面,支持广泛的复杂场景,比如:网上车辆拍卖、网上订餐、付款处理、数据分析、错误通知、持续集成和部署等。
所以CNCF Serverless工作流规范更加全面,能支持更多复杂场景,也具备产品化更多新特性的潜力。基于CNCF Serverless Workflow 规范本身的优势,不仅能有效避免厂商锁定,也能助力企业创新。目前,已有国内外企业关注并使用此规范产品化。
CNCF群策群力,华为云竭诚尽智
从KubeCon NA 2021大会发布的各项数据可以看出,当前社区处于初期快速的成长阶段。2021年全年,10多家不同公司参与社区贡献,社区整体取得了显著的成就,工作流规范也已更新至0.8版本。
社区在2021全年总共有500合入的PR、2K commits, CNCF Serverless Workflow Specification有超过200个新星关注的增长,去年实现了新星关注的100%增长,同时,社区的各类社交平台也受到广泛关注。在2021年KubeCon EU大会中,共计300+人参与CNCF Serverless Workflow项目的办公时间;190+人参加了2021年KubeCon NA北美大会社区项目的办公时间。
作为社区官方合作伙伴,以及CNCF Serverless Workflow的开源合作伙伴,华为云联合2012实验室华为元戎团队,提供持续的技术能力支撑,主要贡献包括:
1. Action支持重试和错误处理已合并到0.7版本;
2. 支持分支内部进行编排的想法,已被社区采纳,并规划在0.9版本中实现;
3. 发现并提出规范版本之间兼容性不足的问题,社区确认从0.8版本之后会确保向后兼容;
4. 帮助社区在0.7和0.8版本的发布做出了贡献,包括审查与规范相关的设计文档,审阅社区新提交的PR(拉取请求)和Issue.
作为 CNCF Serverless Workflow 社区官方合作伙伴,华为云与社区伙伴携手并进,共同推动无服务器计算领域的发展。
FunctionGraph Workflow——更上一层楼
在繁荣向上的社区生态中,华为云以CNCF Serverless Workflow 规范为标准,联合2012实验室华为元戎团队共同打造了华为云FunctionGraph Workflow,为用户提供函数流管理功能,并支持可视化拖拽式的函数编排。
在使用FunctionGraph Workflow时,用户无需进行二次开发,只要通过可视化拖拽的方式,即可将多个独立的无服务器函数用顺序、分支、并行等方式轻松快速地编排一个完整的应用。
FunctionGraph Workflow 可视化编排示意图
同时,FunctionGraph Workflow提供监控和管理平台,用于诊断和调试应用,支持跟踪每次执行的状态,执行中的输入输出等,快速定位故障,用户可以轻松配置重试,处理异常分支。
FunctionGraph Workflow 监控管理平台示意图
目前,FunctionGraph Workflow 已应用于事务型业务流程编排、多媒体文件处理、数据处理流水线等场景。面向未来,华为云期望通过不断的技术突破,将华为云开源引擎打造为 CNCF Serverless Workflow 社区的默认实现,形成应用社区 Serverless Workflow规范产品化案例,并在社区内部共享。
- 点赞
- 收藏
- 关注作者
评论(0)