阿里云国际站经销商,主营阿里云,腾讯云,华为云,亚马逊aws,谷歌云gcp,微软云az,免费开户,代充值优惠大,联系客服飞机@jkkddd
本文介绍了Serverless工作流的回调功能。相比较轮询,使用回调有效地降低了延迟、减少了轮询对服务器造成的不必要压力。另外,回调功能配合队列可以实现对非FC任务的编排,将Serverless工作流的编排范围扩展到任意类型的计算资源。简介
长时间执行的任务通常会采用异步提交任务并返回任务标识(ID),判断异步任务结束的方法通常有两种:轮询(polling)和回调(callback),在任务状态轮询中我们介绍了使用轮询来判断任务结束。Serverless工作流的回调(callback)功能,覆盖以下的痛点或场景:
消除轮询周期长带来的不必要延迟。
消除大流量场景下高并发的轮询造成不必要的服务器资源压力和浪费。
编排非FC Function的任务,例如运行在自建机房或ECS上的进程。
需要人工干预的步骤,例如通知审批通过。
下图展示了使用MNS队列服务集成结合回调API编排自建资源,拓宽Serverless工作流的适用场景。
回调使用详解
在Task步骤中指定pattern: waitForCallback,如下图状态机所示:该步骤会在提交resourceArn指定的任务后(如FC invocation)该步骤会将一个taskToken存入到该步骤的context对象并进入一个暂停的状态,直到Serverless工作流收到回调或指定的任务超时。将taskToken传入ReportTaskSucceed或ReportTaskFailed接口去回调会使得该步骤继续执行。
示例
该示例共分为以下3个步骤:
准备Task Function
开始工作流
回调
步骤1:准备Task Function
创建下面一个简单的函数,该函数会将输入直接返回。
服务:fnf-demo。
函数:echo。
运行环境:python2.7。
函数入口:index.handler。
步骤2:开始工作流
创建流程,并开始执行。
流程名称:fnf-demo-callback。
流程角色:配置一个有FC Invocation权限的角色。