函数工作流
函数工作流(Function Flow,简称 FnF)是一个用来协调多个分布式任务执行的全托管 Serverless 云服务,致力于简化开发和运行业务流程所需要的任务协调、状态管理以及错误处理等繁琐工作,让用户聚焦业务逻辑开发。用户可以用顺序、分支、并行等方式来编排分布式任务,FnF 会按照设定好的顺序可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。
产品优势
协调分布式组件
FnF 能够编排不同基础架构、不同网络、不同语言编写的应用,抹平混合云、专有云过渡到公共云或者从单体架构演进到微服务架构落差。
减少代码量
FnF 能帮您管理应用程序的逻辑,支持多种控制原语,例如顺序,分支,并行等,尽量减少您在业务中实现重复的编排代码。
提高容错性
FnF 为您管理流程状态、设置检查点和流程重启,以确保您的应用程序按照预期逐步执行。内置? try/catch、重试和回滚功能可以自动处理异常错误。
Serverless
FnF 根据实际执行步骤转换个数收费,执行结束不再收费,FnF 自动扩展让您免于管理硬件预算和扩展。
精心打造的功能
服务编排能力
FnF 可以帮助您将流程逻辑与任务执行分开,支持多种控制原语,例如顺序,分支,并行等,内置错误重试和捕获能力,节省编写编排代码的时间。
流程状态管理
FnF 会管理流程执行中的所有状态,包括跟踪它所处的执行步骤,以及存储在步骤之间的输入输出。您无需自己管理流程状态,也不必将复杂的状态管理构建到任务中。
协调分布式组件
FnF 能够协调在不同基础架构上,不同网络内,以不同语言编写的应用。应用不管是从私有云/专有云平滑过渡到混合云或公共云,或者从单体架构演进到微服务架构,FnF 都能发挥协调作用。
支持长时间运行流程
FnF 可以跟踪整个流程,持续长时间执行确保流程执行完成。有些流程可能要执行数个小时、数天、甚至几个月等,例如运维相关的 Pipeline,邮件推广流程等。
可视化监控
FnF 提供可视化界面来定义工作流和查看执行状态。状态包括输入和输出等。方便您快速识别故障位置,并快速排除故障问题。
运维全托管和按需付费
FnF 可以将运维人员从基础设施维护解放出来,提供了安全的、高可用的、高容错的和高持久的服务。用户只需支付步骤转换费用,不使用不产生费用。
领军客户实战场景
多媒体文件处理场景
多任务编排,减少流程失败率,提升多媒体吞吐量使用函数工作流可以帮助您将多个任务,如转码,截帧,人脸识别,语音识别,审核上传等,编排成一个完整的处理流程,通过函数计算提交媒体处理(IMM)任务(或自建处理器),产出一个符合业务需求的输出。各任务的执行错误异常可以被可靠的重试,大大提升多媒体任务处理吞吐量。
能够解决
多任务编排
流程中如转码,截帧,人脸识别,语音识别,审核上传等步骤的编排。
解决流程失败问题
系统会对任务的执行错误异常进行多次重试
基因数据处理场景
简化大规模计算编排,优化成本,缩短流程总时长函数工作流可以将多个批量计算分布式作业串联或并行编排,可靠地支持执行时间长、并发量大的大规模计算。如基因数据分析中将基因序列对齐,将所有染色体并行做变异分析,最终将各染色体数据聚合产出结果。函数工作流根据指定的依赖关系提交不同CPU/内存/带宽规格的批量计算作业,提升执行可靠性,提高资源利用率,优化成本。
能够解决
简化大规模计算编排
FnF 可以将多个批量计算分布式作业串联或并行编排,同时支持执行时间长、并发量大的计算。
缩短流程总时长
根据任务依赖关系提交不同的规格批量计算作业,提升并行执行可靠性。
数据处理流水线场景
可靠调度海量计算资源,个性化编排大数据处理任务使用函数工作流可以快速搭建一个高可用的数据处理流水线。比如,来自不同数据源的计量数据被收集到日志服务,函数计算的定时器每小时触发函数工作流,函数工作流利用函数计算对多个Shard的计量数据做并行处理,并将结果分别写回日志服务服务;然后可以将所有Shard产生文件进行聚合,写入表格存储,最后为每个用户生成账单。函数工作流支持对流程中的单个步骤失败进行重试,降低流程失败概率。函数工作流支持动态并行任务执行,实现数据处理能力的高可扩展性。
能够解决
解决并发执行问题
FnF 支持动态并行任务执行,实现数据处理能力的高可扩展性。
自动运维场景
提升运维效率和可靠性,流程进度可视化界面。
自动化运维常见有步骤繁琐时间长短不一,单机脚本可靠性低,依赖复杂等常见的挑战,另外进度无法可视化。函数工作流+函数计算的流程可以很好地应对这些挑战。例如自动化的软件部署从构建Docker容器,上传容器镜像,开始并追踪各节点下拉镜像并启动新版本镜像的容器,每一步函数产生的日志会被保存到日志服务 可供查询分享。基于函数工作流的自动化工比较单机运维脚本具有高可用,自带的错误处理机制和进度图形化的特点。
能够解决
解决流程进度可视化问题
自动化运维步骤繁琐时间长短不一,单机脚本可靠性低,依赖复杂等常见的挑战,另外进度无法可视化。