函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 函数计算 HTTP 触发器支持异步,解放双手搭建 Web 服务

• 对于有并发限制的场景,客户的突增流量在同步调用的场景下会被限流,从而在客户不做错误处理的时候造成一定请求失败。
场景1:脉冲式压测场景。
场景2:限时线上促销活动。
在这些场景下,客户可以通过异步调用将 HTTP 触发和函数执行进行解耦,提升执行效率和执行成功率,降低开销。
异步调用 at least once 的保证, 目标投递的能力,以及具有可观测性和可管控能力的异步任务模式能更好地让客户享受到函数托管服务的便利,解放客户双手。
HTTP 触发器不支持异步调用时,为了满足需求,客户往往需要通过函数转跳的方式间接实现 HTTP 触发异步调用。具体流程如下:
客户可以创建两个函数,函数 A 为 HTTP 函数,通过 HTTP 同步调用;函数 B 为事件函数,可以由 HTTP 函数通过 SDK 进行异步调用。但是该方案的缺点也很明显:
• 成本高:每次异步调用都需要两次触发。
• 无法实现流控全托管:第一层函数为同步调用,面对突增流量被流控,需要客户自行做自适应,从而无法享受异步调用的流控全托管。
• 增加客户开发维护成本:需要开发和维护两个函数来使用异步功能。
新功能:HTTP 触发器支持异步调用
函数计算当前上线支持了 HTTP 触发器进行异步调用的功能。使用本功能,客户需要准备好一个 HTTP 函数和一个 HTTP 触发器。
客户可以通过函数计算控制台、SDK 和 Serverless Devs 工具来进行 HTTP 函数和触发器的创建。HTTP 触发器客户可以自行配置,如果不进行配置,在创建 HTTP 函数的时候,函数计算会为您自动创建一个默认触发器。
HTTP 触发器需要通过请求头 X-Fc-Invocation-Type 来选择触发方式,默认为同步触发,如果需要进行异步触发,则可以在请求头中添加 {"X-Fc-Invocation-Type":"Async"} 从而实现异步触发。
HTTP 异步调用测试
1) 通过控制台进行测试
在函数代码处进行测试,通过勾选异步调用进行异步调用测试。
在测试函数侧可以通过勾选 "我想通过异步的方式进行调用" 实现异步调用测试。
2) 通过 cURL 进行测试
curl -v -H "X-Fc-Invocation-Type: Async" https://http-*.cn-shenzhen.fcapp.run/$path
测试结果查看:
触发完成后会立即返回函数计算接收请求的结果。其中状态码 202 表示请求成功,其余表示请求出现错误。请求 ID 也会在请求头中一并返回,您可以通过返回的请求 ID 追踪异步请求的执行状态。为了更好地观测请求请求执行状态,增加对函数执行的管控,您可以开通异步任务[1]。
可以通过请求 ID 在控制台进行执行结果日志的查询:
对于开通异步任务的请求,可以通过异步任务列表进行状态监测和查询:
对于异步执行结果的回调可以参考函数回调文档[2]。
最佳实践
此处以 HTTP 触发视频转码为例,介绍如何通过结合 Serverless Devs 与控制台,实现 HTTP 触发异步任务。
前提条件:
• 安装 Serverless Devs[3]
• 配置 Serverless Devs[4]
• 创建 OSS 存储空间[5],以便后续测试用例中对 OSS 存储空间进行访问和内容变更。
• 创建 RAM 角色,并授予 OSSFullAccess 权限策略,您也可以直接使用 AliyunFCDefaultRolePolicy 策略。关于权限策略的详细信息,请参见创建 RAM 角色[6]。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
6月前
|
数据采集 安全 网络安全
使用aiohttp实现异步HTTPS爬虫的SSL优化
使用aiohttp实现异步HTTPS爬虫的SSL优化
333 81
|
6月前
|
网络协议 前端开发
为什么异步会导致HTTP队首阻塞?
总的来说,异步操作可能会导致HTTP队首阻塞,但是通过使用HTTP/2的多路复用技术,我们可以有效地解决这个问题。
177 16
|
7月前
|
数据采集 Rust 安全
异步读取HTTP响应体的Rust实现
异步读取HTTP响应体的Rust实现
189 13
|
运维 监控 Serverless
函数计算产品使用问题之HTTP触发器被恶意刷流量,该怎么办
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
163 0
|
11月前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
235 3
|
网络协议
Lua中实现异步HTTP请求的方法
Lua中实现异步HTTP请求的方法
|
数据采集 JSON API
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
本文探讨了在.NET环境下,如何通过异步方法和HTTP请求提高Web爬虫的响应速度和数据抓取效率。介绍了使用HttpClient结合async和await关键字实现异步HTTP请求,避免阻塞主线程,并通过设置代理IP、user-agent和cookie来优化爬虫性能。提供了代码示例,演示了如何集成这些技术以绕过目标网站的反爬机制,实现高效的数据抓取。最后,通过实例展示了如何应用这些技术获取API的JSON数据,强调了这些方法在提升爬虫性能和可靠性方面的重要性。
264 1
异步方法与HTTP请求:.NET中提高响应速度的实用技巧
|
API C#
异步轮询 Web API 的实现与 C# 示例
异步轮询 Web API 的实现与 C# 示例
335 1
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
146 1
|
JavaScript 前端开发 数据库
Tornado框架:异步时代的Web开发,它能否颠覆你的编码世界观?
【8月更文挑战第31天】构建高性能Web应用时,选择合适工具至关重要。Tornado不仅是一个Web框架,还内置高性能HTTP服务器,无需外部依赖即可独立运行,区别于需结合Gunicorn或uWSGI的Django和Flask。本文将探讨Tornado如何革新Web开发,并提供示例。
257 1

热门文章

最新文章