FunctionComputeHTTP触发器支持异步,解放双手搭建Web服务用户也能感受到异步调用“开箱即用”的便捷体验。作者|阿里云Serverless技术专家CheEr目前阿里云函数计算支持两种类型的函数:事件函数和HTTP函数。其中,HTTP函数结合HTTP触发器可以支持用户使用RestfulAPI直接通过HTTP请求发起函数调用;这样,用户可以在不集成函数计算提供的SDK的情况下实现函数调用,更好地与现有系统集成。组件和WEB服务是集成的。考虑到HTTP函数最初设计的目的,对于Web场景,HTTP函数不支持异步调用。随着用户使用HTTP函数的场景越来越多,HTTP函数无法支持异步调用的限制。对于用户来说,HTTP功能的广泛使用带来了很多限制。不支持异步调用,对用户来说有多难?目前已有不少客户使用函数计算HTTP触发器搭建WEB服务,其中不少客户有通过WEB服务进行文件(视频、图片等)处理转码、任务下发、压力测试等需求。这些需求往往具有执行时间长、流量不均等特点。具有这些特点的函数在同步执行场景下有以下缺点:长执行函数增加了函数出错的风险,增加了机器开销。客户端需要保持长连接,网络波动,客户端因函数执行时间过长而失去耐心而断开连接,这些都增加了函数出错的概率。场景:视频网站用户上传要转码的视频,页面刷新时间过长,导致连接中断,转码失败。维护长链接会增加客户端的机器开销,降低客户端机器的资源利用率。面对突如其来的流量激增,无法顺利处理和接收。对于有并发限制的场景,在同步调用的场景下,客户端突增的流量会被限制,在客户端没有进行错误处理的情况下,会导致某些请求失败。场景1:脉压测量场景。场景二:限时在线促销。在这些场景下,客户可以通过异步调用的方式解耦HTTP触发和函数执行,提高执行效率和执行成功率,降低开销。异步调用至少一次的保证,目标下发的能力,可观察可控的异步任务模式,可以更好的让客户享受函数托管服务带来的便利,解放双手。当HTTP触发器不支持异步调用时,客户为了满足需求,往往需要通过函数跳转间接实现HTTP触发器异步调用。具体流程如下:客户可以创建两个函数,函数A是HTTP函数,通过HTTP同步调用,函数B是事件函数,HTTP函数通过SDK异步调用。但是这种方案的缺点也很明显:成本高:每次异步调用都需要两次触发器。无法实现流控全托管:第一层函数同步调用。面对突增的流量和流控,客户需要进行自适应,无法享受异步调用流控的全面托管。增加客户开发和维护成本:需要开发和维护两个函数才能使用异步函数。新特性:HTTP触发器支持异步调用函数计算现已上线,支持HTTP触发器异步调用功能。要使用此功能,客户需要准备一个HTTP函数和一个HTTP触发器。客户可以通过函数计算控制台、SDK和ServerlessDevs工具创建HTTP函数和触发器。客户端可以自行配置HTTP触发器。如果你不配置,函数计算会在你创建HTTP函数时自动为你创建一个默认触发器。HTTP触发器需要通过请求头X-Fc-Invocation-Type来选择触发方式。默认为同步触发。如果需要异步触发,可以添加{"X-Fc-Invocation-Type":"Async"}异步触发。HTTP异步调用测试是通过控制台在功能代码处进行测试,异步调用测试是通过检查异步调用来进行的。在测试功能端,勾选我要异步调用即可实现异步调用测试。通过cURL测试curl-v-H"X-Fc-Invocation-Type:Async"https://http-***.cn-shenzhen.fcapp.run/$path测试结果视图会在函数执行后立即返回触发器完成计算接收请求的结果。其中状态码202表示请求成功,其余表示请求出错。请求ID也会在请求头中返回,你可以通过返回的请求ID跟踪异步请求的执行状态。为了更好的观察请求执行状态,增加对函数执行的控制,可以开启异步任务。执行结果日志可通过请求ID在控制台查询:对于激活异步任务的请求,可通过异步任务列表进行状态监控和查询:异步执行结果的回调可参考函数回调文档:https://help。aliyun.com/docum...最佳实践这里我们以HTTP触发的视频转码为例,介绍如何结合ServerlessDevs和控制台实现HTTP触发的异步任务。前提:安装ServerlessDevs并配置ServerlessDevs创建OSS存储空间,方便后续测试用例访问OSS存储空间和更改内容。创建一个RAM角色并赋予其OSSFullAccess权限策略,也可以直接使用AliyunFCDefaultRolePolicy策略。权限策略详见创建RAM角色。操作步骤:1、初始化项目sinithttp-video-transcode-dhttp-video-transcode2,进入项目部署cdhttp-video-transcode&&sdeploy3,通过HTTP触发器curl-v-H发起异步调用"X-Fc-Invocation-Type:Async"-H"Content-Type:application/json"-d'{"bucket":"my-bucket","object":"480P.mp4","output_dir":"a","dst_format":"mov"}'-XPOSThttps://http-***.cn-shenzhen.fcapp.run/4.登录控制台查询任务状态,控制任务。5.函数回调可以根据需要在dest-fail或dest-succ中添加处理逻辑,作为转码函数执行结果的回调函数,感知并获取函数执行结果。函数回调相关文档:https://help.aliyun.com/docum...概要HTTP触发器支持异步调用,为用户构建web服务,以函数计算作为全托管平台,打通最后一公里,让使用HTTPtriggers读者也能感受到开箱即用的异步调用的便捷体验。原文链接本文为阿里云原创内容,未经许可不得转载。
