ASW 工作流最佳实践(二):使用 ASW 并发调用函数

2021-05-18 12:10:15 浏览数 (1)

在音视频转码、ETL 作业处理、基因数据处理等诸多场景中,我们都可以通过工作流并行调用云函数,将任务进行并行处理,大大提高任务处理的吞吐量,满足应用场景的高实时性、高并发能力。

《使用 ASW 工作流创建您的第一个函数编排》文章中,我们分享了如何使用 ASW 编排一个 Sum 云函数进行求和计算。本期文章主要分享如何使用 ASW 的 Map 节点能力进行并发的数据求和计算。

01.

创建函数

1. 登录「云函数控制台」,创建一个函数名称为 Sum,运行环境为 Python 3.6 的云函数。

  • 云函数控制台地址:https://console.cloud.tencent.com/scf
代码语言:javascript复制
# -*- coding: utf8 -*-import json def main_handler(event, context):    sum = 0    for i in event["values"]:        sum  = i    return sum

02.

创建工作流

1. 登录「应用与编排服务流控制台」,在工作流页面,单击「新建」,进入创建工作流页面,单击「入门模板」,选择「Map 循环」模板。

  • ASW 中 Map 节点会遍历输入中的某个数组类型参数,对于数组中的每个元素并行执行其串行节点。Map 节点类似于编程语言中的 foreach,但节点循环任务是并发执行的。
  • ASW 控制台地址:https://console.cloud.tencent.com/asw

2. 修改「代码」中 Iterator 下 States 节点中的 state01 为 sum 函数调用,如下工作流定义:

代码语言:javascript复制
{ "Comment": "使用Map节点循环处理数组array中的数据", "StartAt": "MapState", "States": {  "MapState": {   "Type": "Map",   "ItemsPath": "$.array",   "ResultPath": "$.result",   "MaxConcurrency": 2,   "Next": "FinalState",   "Iterator": {    "StartAt": "State01",    "States": {     "State01": {      "Type": "Task",      "Comment": "调用求和函数",      "Resource": "qrn:qcs:asw:ap-guangzhou:123456789:sdk:json:qcloud:scf:Invoke/sum/$DEFAULT/default",      "End": true     }    }   }  },  "FinalState": {   "Type": "Pass",   "End": true}

ItemsPath 指定作为了 Map节点循环的数组。 MaxConcurrency 指定了 Map 节点并发调用的函数数量。 Iterator 为 Map 节点 循环任务定义。

3. 单击「下一步」,在「配置基本信息」页面,输入工作流名称,选择运行角色与工作流类型,单击「完成」,完成工作流创建。

03.

运行工作流

1. 在工作流列表,单击「名称」链接进入工作流,您在弹出的「开始执行」窗口中,以 JSON 格式输入 array 数组。例如:

代码语言:javascript复制
{ "array": [{   "values": [1, 2, 3, 4, 5]  },  {   "values": [4, 2, 3, 1, 5]  },  {   "values": [1, 0, 8, 4, 5]  },  {   "values": [7, 2, 3, -2, 5]  } ]}

2. 单击「确定」,完成状态执行后,可以在详情页查看执行结果。滑动至页面最下方,在「执行历史记录」下,您可以查看子节点的运行情况。我们可以看到 Map 节点会以并发数(MaxConcurrency)为 2 来调用 sum 函数,每个 sum 函数的入参为 array 数组的一个 item。

3. 单击「资源」中的云函数链接,可以直接跳到云函数控制台,查看函数执行详情。

识别下方 ? 二维码,即可加入腾讯云 ASW 交流群。


推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,深入了解「腾讯云 ASW 工作流」产品服务。

0 人点赞