导图社区 阿里云云工作流 CloudFlow
云工作流(CloudFlow)是用来协调多个分布式任务执行的全托管 Serverless 云服务,简化开发、运行业务流程需要的任务协调、状态管理和错误处理等繁琐工作。用顺序、分支、并行等方式编排分布式任务,服务按照预设顺序协调任务执行,跟踪任务的状态转换,必要时执行用户定义的重试逻辑,确保工作流顺利完成。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
阿里云云工作流 CloudFlow
什么是Serverless工作流
Serverless Workflow 是一个用来协调多个分布式任务执行的全托管云服务。
Serverless 工作流 中,您可以用顺序、分支、并行等方式来编排分布式任务, Serverless 工作流 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行您定义的重试逻辑,以确保工作流顺利完成。 Serverless 工作流 通过提供日志记录和审计来监视工作流的执行,方便您轻松地诊断和调试应用。 Serverless 工作流 简化了开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让您聚焦业务逻辑开发。
Serverless 工作流 如何协调分布式任务,这些任务可以是函数、已集成云服务API、运行在虚拟机或容器上的程序。
基本概念
Serverless工作流(Serverless Workflow)
协调多个分布式任务执行的全托管Serverless云服务。通过Serverless工作流,您可以用顺序、分支、并行等方式来编排分布式任务,以确保流程按照设定好的顺序可靠地协调任务执行。
分布式任务
Serverless工作流中的分布式任务可以是函数、已集成云服务的API、运行在虚拟机或容器上的程序。
流程(Flow)
定义了业务逻辑描述以及流程执行所需要的通用信息。
步骤(Step)
步骤是流程中的工作单元,可以是简单的原子步骤,如任务(task)、成功(succeed)、失败(fail)、等待(wait)和传递(pass)等;也可以是复杂的控制步骤,如选择(choice)、并行(parallel)和并行循环(foreach)等。步骤的组合使用构建了复杂的业务逻辑。
父步骤
如果步骤A包含步骤B,则称步骤A为父步骤。
子步骤
如果步骤A包含步骤B,则称步骤B为子步骤。
任务步骤(task)
步骤类型之一,使用任务步骤来定义函数计算服务的函数调用信息,执行任务步骤会调用相应的函数。
传递步骤(pass)
步骤类型之一,使用传递步骤来输出常量或者将输入转换成期望的输出。该类型的步骤通常用于调试未创建任务步骤的函数的流程逻辑。
等待步骤(wait)
步骤类型之一,使用等待步骤来暂停执行流程,然后再继续执行。您可以选择一个等待的相对时间,也可以以时间戳方式指定等待结束的绝对时间。
选择步骤(choice)
步骤类型之一,使用选择步骤让流程根据条件执行不同步骤。
并行步骤(parallel)
步骤类型之一,使用并行步骤并行执行多个不同步骤。
并行循环步骤(foreach)
步骤类型之一,使用并行循环步骤并行执行多个相同的步骤。
成功步骤(succeed)
步骤类型之一,使用成功步骤提前结束一系列串行的步骤。成功步骤通常和选择步骤结合使用,在选择步骤条件满足的情况下跳转到一个成功步骤,从而不再执行其他步骤。
失败步骤(fail)
步骤类型之一,使用失败步骤提前结束一系列串行的步骤。当流程执行完失败步骤后,定义在失败步骤之后的步骤不会被继续执行,并且导致失败步骤的父步骤失败,并一直传递,最后导致流程执行失败。
流程定义语言FDL(Flow Definition Language)
用来描述和定义业务逻辑,在执行流程时,Serverless工作流服务会根据流程定义依次执行相关步骤。
定时调度
Serverless工作流支持在指定时间调度您的工作流。
产品特性
产品优势
协调分布式组件
能够编排不同基础架构、不同网络、不同语言编写的应用,抹平混合云、专有云过渡到公共云或者从单体架构演进到微服务架构的落差。
减少流程代码量
提供了丰富的控制逻辑,例如顺序、选择、并行等,让您以更少的代码实现复杂的业务逻辑。
提高应用容错性
为您管理流程状态,内置检查点和回放能力,以确保您的应用程序按照预期逐步执行。错误重试和捕获可以让您灵活地处理错误。
Serverless
根据实际执行步骤转换个数收费,执行结束不再收费。 Serverless 工作流 自动扩展让您免于管理硬件预算和扩展。
功能特性
服务编排能力
可以帮助您将流程逻辑与任务执行分开,节省编写编排代码的时间。例如图片经过人脸识别函数后,根据人脸位置剪裁图像,最后发送消息通知您, Serverless 工作流 提供了一个Serverless的解决方案,降低了您的编排运维成本。
能够协调在不同基础架构上、不同网络内,以不同语言编写的应用。应用不管是从私有云/专有云平滑过渡到混合云或公共云,或者从单体架构演进到微服务架构, Serverless 工作流 都能发挥协调作用。
内置错误处理
通过内置错误重试和捕获能力,您可以自动重试失败或超时的任务,对不同类型错误做出不同响应,并定义回退逻辑。
可视化监控
提供可视化界面来定义工作流和查看执行状态。状态包括输入和输出等。方便您快速识别故障位置,并快速排除故障问题。
支持长时间运行流程
可以跟踪整个流程,持续长时间执行确保流程执行完成。有些流程可能要执行几个小时、几天、甚至几个月。例如运维相关的Pipeline和邮件推广流程。
流程状态管理
会管理流程执行中的所有状态,包括跟踪它所处的执行步骤,以及存储在步骤之间的数据传递。您无需自己管理流程状态,也不必将复杂的状态管理构建到任务中。
应用场景
事务型业务流程编排
复杂的业务场景如电商网站、酒店和机票预定等应用通常要访问多个远程服务,并且对操作事务性语义(即所有步骤全部成功或全部失败,不存在中间状态)有较高要求。在流量较小、数据存储集中的应用中,事务性可以通过关系型数据库提供的ACID特性满足。然而在大流量场景下,为了高可用和可扩展性,业务通常选择向微服务的分布式架构方向演进。在这样的架构中提供多步骤事务性的保证通常需要引入队列和数据库来持久化消息以及展现流程状态,这类系统的开发和运维会给业务方带来额外的成本和负担。使用云工作流 可以提供长流程分布式事务保证,帮助您聚焦于自身业务逻辑。
多媒体文件处理
云工作流 可以帮助您将多个任务,如转码、截帧、人脸识别、语音识别、审核上传等,编排成一个完整的处理流程,通过 函数计算 ,提交媒体处理(IMM)任务,或自建处理器,产出一个符合业务需求的输出。各任务的执行错误异常可以被可靠的重试,较大地提升多媒体任务处理吞吐量。
基因数据处理
可以将多个批量计算分布式作业串联或并行编排,可靠地支持执行时间长、并发量大的大规模计算。如基因数据分析中将基因序列对齐,将所有染色体并行做变异分析,最终将各染色体数据聚合产出结果。 云工作流 根据指定的依赖关系提交不同CPU、内存、带宽规格的批量计算作业,提升执行可靠性,提高资源利用率,优化成本。
数据处理流水线
云工作流 可以快速搭建一个高可用的数据处理流水线(Data Pipeline)。例如,来自不同数据源的计量数据被收集到日志服务, 函数计算 的定时器定时触发 云工作流 执行, 云工作流 利用 函数计算 对多个Shard的计量数据做并行处理,并将结果分别写回日志服务;然后可以将所有Shard产生的文件进行聚合,写入表格存储,最后为您生成账单。 云工作流 支持对流程中的单个步骤失败进行重试,降低流程失败概率。 云工作流 支持动态并行任务执行,实现数据处理能力的高可扩展性。
自动化运维
自动化运维面临着步骤繁琐、时间长短不一、单机脚本可靠性低、依赖复杂等常见的挑战,另外进度无法可视化。
云工作流 + 函数计算 的流程可以很好地应对这些挑战。例如自动化部署软件,从构建Docker容器、上传容器镜像,开始并追踪各节点下拉镜像并启动新版本镜像的容器,每一步函数产生的日志会被保存到日志服务可供查询分享。基于 云工作流 的自动化工具比单机运维脚本具有高可用、自带的错误处理机制和进度图形化的特点。