函数流简介

组件说明

函数流提供多种类型的组件,用户可以通过拖拽组件、配置组件和连接组件进行可视化编排,实现函数任务流的编排。

编排规则

设计的函数流必须是一个有向无环图,从开始节点出发,开始节点后续必须且只能连接一个节点(除了异常处理和结束节点);流程必须在某一个节点结束,结束流程有两种形式:

流程中存在的节点没有任何后继节点,且后续节点非条件分支,并行分支或开始节点。

流程中存在结束节点,且结束节点后续无其他节点。

表达式运算符说明

异常处理和条件分支的表达式的结构为 [JsonPath] + [逻辑运算符] + [对比数据],简单示例:$.age >= 20

配置示例

示例一:并行分支,示例二:服务节点,示例三:异常处理等

创建函数流任务

操作步骤

登录FunctionGraph控制台,进入“函数流”页面。

在“函数流”页面,单击“创建标准函数流”或“创建快速函数流”,进入新建函数流页面。

说明:如果通过DWR侧创建的函数流,在console页面是没有编辑和删除权限,如需相关操作请在DWR侧执行。

编排函数流任务,请您根据实际应用进行函数流编排。

查看函数流任务

登录FunctionGraph控制台,进入“函数流”页面。

在函数流页面,支持设置函数流任务卡片显示和列表显示。

在函数流页面,可以查看所有已创建的函数流任务。

单击某一个函数流任务名称,查看任务详情。

函数流执行历史管理

标准函数流执行历史查询

登录FunctionGraph控制台,在左侧导航栏选择“函数流”,进入“函数流”页面。

在“函数流”流程列表页面,单击需要查看执行历史的流程,进入流程详情页面。

切换至“运行记录”页签,查看执行历史运行记录。

左侧为执行历史记录列表,展示最近100次执行记录,支持根据流程执行ID进行查询。

单击左侧的执行记录,中间画布展示流程的执行结果,如果节点执行成功,图标背景为绿色,如果执行失败背景为红色。

画布下方输入输出展示区默认展示流程的输入和输出,点击上方任意节点,展示节点的输入和输出。

说明:对于函数流及函数流各个节点,若输出值中有字段的值为null,则该字段会被直接过滤,不予展示。

最下方日志展示流程从开始到结束所有节点的执行记录。

快速函数流执行日志查询

登录FunctionGraph控制台,在左侧导航栏选择“函数流”,进入“函数流”页面。

在“函数流”列表页面,单击需要查看执行历史的流程,进入函数流“基本信息”页面。

切换至“日志”页签,查看执行历史日志。

可根据请求ID过滤日志,或自定义时间过滤日志,点击请求ID查看执行日志详情。

失败流程重试

登录FunctionGraph控制台,在左侧导航栏选择“函数流”,进入“函数流”页面。

在“函数流”流程列表页面,单击需要查看执行历史的流程,进入流程详情页面。

切换至“运行记录”页签,查看执行历史运行记录。

在失败的记录右侧单击重试图标,重试成功后会生成一条执行记录。

运行中流程终止

登录FunctionGraph控制台,在左侧导航栏选择“函数流”,进入“函数流”页面。

在“函数流”流程列表页面,单击需要查看执行历史的流程,进入流程详情页面。

切换至“运行记录”页签,单击执行中任务的停止图标,终止成功后流程会进入取消状态。

创建函数流触发器

创建定时触发器

登录FunctionGraph控制台,进入“函数流”页面。

在“函数流”流程列表页面,选择需要创建触发器的流程,单击“编辑”,进入编辑页面。

单击“开始”节点,在右侧弹出的属性页面添加触发器,触发器类型选择“定时触发器”。

填写触发器配置信息。

单击“创建”,完成定时触发器创建。

创建APIG(共享版)触发器、创建SMN触发器、创建EG触发器和创建APIG(专享版)触发器流程和上述类似,选择对应的触发器类型即可。

流式文件处理

背景与价值

Serverless Workflow由于自身可编排、有状态、持久化、可视化监控、异常处理、云服务集成等特性,适用于很多应用场景,比如:

复杂度高需要抽象的业务(订单管理,CRM 等)

业务需要自动中断 / 恢复能力,如多个任务之间需要人工干预的场景(人工审批,部署流水线等)

业务需要手动中断 / 恢复(数据备份 / 恢复等)

需要详细监控任务执行状态的场景

流式处理(日志分析,图片 / 视频处理等)

当前大部分 Serverless Workflow 平台更多关注控制流程的编排,忽视了工作流中数据流的编排和高效传输,上述场景创建函数流触发器中,由于数据流相对简单,所以各大平台支持都比较好,但是对于文件转码等存在超大数据流的场景,当前各大平台没有给出很好的解决方案。华为云 FunctionGraph 函数工作流针对该场景,提出了 Serverless Streaming 的流式处理方案,支持毫秒级响应文件处理。

技术原理

华为云 FunctionGraph 函数工作流提出 Serverless Streaming 的流式可编排的文件处理解决方案,步骤与步骤之间通过数据流驱动,更易于用户理解。本章通过图片处理的例子解释该方案的实现机制。

如果需要驱动一个工作流执行,工作流系统需要处理两个部分:

控制流:控制工作流的步骤间流转,以及步骤对应的 Serverless 函数的执行。确保步骤与步骤之间有序执行。

数据流:控制整个工作流的数据流转,通常来说上一个步骤的输出是下一个步骤的输入,比如上述图片处理工作流中,图片压缩的结果是打水印步骤的输入数据。

在普通的服务编排中,由于需要精准控制各个服务的执行顺序,所以控制流是工作流的核心部分。然而在文件处理等流式处理场景中,对控制流的要求并不高,以上述图片处理场景举例,可以对大图片进行分块处理,图片压缩和加水印的任务不需要严格的先后顺序,图片压缩处理完一个分块可以直接流转到下一个步骤,而不需要等待图片压缩把所有分块处理完再开始加水印的任务。

操作步骤

创建一个图片压缩的函数,其中代码在处理返回数据通过 ctx.Write() 函数将结果以流式数据的形式返回:

说明:目前只支持go函数!

FunctionGraph 通过 ctx.Write() 函数提供了流式返回的能力,对开发者来说,只需要将最终结果通过流的方式返回,而不需要关注网络传输的细节。

在 FunctionGraph 的函数流控制台完成工作流编排,举例如下。

调用工作流的同步执行接口,获取最终结果的文件流,数据将以 chunked 流式返回的方式返回到客户端。

函数工作流 FunctionGraph 常见问题

函数工作流 FunctionGraph 常见问题

1对1咨询专属顾问

1对1免费咨询华为云专属顾问,为您量身定制产品推荐方案
立即咨询

华为云咨询电话:950808或4000-955-988 转1

华为云咨询电话:950808或4000-955-988 转1

华为云专业的服务团队,致力于为您提供专业的售前购买咨询服务,及完善的售后技术服务,助您云上无忧