写点什么

借助 Azure Functions Flex Consumption 实现高可扩展 HTTP:Thiago Almeida 与 Paul Batum 访谈

  • 2024-07-23
    北京
  • 本文字数:1658 字

    阅读完需:约 5 分钟

大小:833.77K时长:04:44
借助Azure Functions Flex Consumption实现高可扩展HTTP:Thiago Almeida与Paul Batum访谈

微软通过Flex Consumption方案对其 Azure Functions 平台进行了大幅增强,旨在有效地处理大规模 HTTP 请求。这个新方案支持自定义每个实例的并发数,让用户在有效管理成本的同时实现高吞吐量。在实际测试中,Azure Functions Flex 展示了只用 7 秒钟就可以将每秒请求数(RPS)从 0 到 32000 的扩展能力。

 

Flex Consumption 方案支持两种内存大小:2048 MB 和 4096 MB,预计将来会提供更多的内存大小选项。它还包括通过调整最大实例数来优化冷启动和保护下游组件的功能。该方案旨在为从零售闪购到大规模数据处理的各种负载需求提供强大而灵活的解决方案。

 

公告中的一个案例研究展示了该方案的能力。一个零售客户在在线闪购促销活动中的平均吞吐量达到了 15630 RPS,在三分钟内处理了近 300 万个请求。通过优化并发设置,系统最多可以处理 32000 RPS,这证明了该方案的可扩展性和性能优势。



平均吞吐量 15630 RPS(来源:技术社区博文

 

该公司还为 Azure Functions Flex Consumption 添加了经过改进的虚拟网络功能。现在,Functions App 可以安全地访问虚拟网络(VNet)背后的服务而不会损失速度,即使在扩展期间也是如此。在最近的一个场景中,VNet 允许 Functions App 在没有公共端点的情况下向事件中心进行写入。为了测试这一点,该公司跨多个语言栈和地区比较了集成 VNet 和不集成 VNet 的启动性能。

 

启用 VNet 注入对横向扩展性能的影响很小。其 50 百分位的平均延迟仅为 37ms,显然,使用包含 Flex Consumption 方案的虚拟网络所带来的安全优势超过了性能成本。这些成果的取得得益于对Legion项目网络技术栈(Flex 消费的计算基础)的大量投资。

 

InfoQ 采访了微软首席项目经理Thiago Almeida和首席软件工程师Paul Batum,以进一步了解有关 Azure Function Flex Consumption 的更多信息。

 

InfoQ:在 Azure Functions Flex 中,如何确定不同工作负载的最佳单实例并发设置?


Thiago Almeida:通常,在大多数情况下,你可以使用默认值,并让 Azure Functions 动态扩展。Flex Consumption 提供的默认值可以最大化每种语言的能力。对于 Python 应用程序,所有规格的实例默认并发数均为 1。对于其他语言,2048MB 的实例使用了默认并发数 16,而 4096MB 的实例则使用默认并发数 32。建议使用不同的并发数运行测试,以进一步优化 Flex Consumption 应用程序的高扩展 HTTP 场景。性能优化器特性已经面向所有人开放。这是一个很好的工具,它可以帮助你为 Flex Consumption 上的 HTTP Functions 应用确定最佳并发数和实例大小。


InfoQ:在调整实例并发数和内存大小时,您能详细说明一下如何在成本和性能之间取得平衡吗?


Paul Batum:不同工作负载的差异很大,但一般的规则是,增加每个实例的并发性会提高总体效率,但也会产生某种性能影响,比如响应变慢,特别是在高百分位(P99、P99.9 等)时。对于某些工作负载来说,这是一项巨大的胜利——如果应用程序调用了外部 API 并且正在等待响应,那么在等待响应的同时,该实例上的其他请求的处理效率会高许多。

 

另一方面,如果工作负载是高度 CPU 密集型的,那么在 16 个并发操作之间进行上下文切换的效率还不如一个接一个地处理它们。因此,在这种类场景中,你可能会看到减少并发性反而带来了效率的提升。当增加内存时,分配的 CPU 也会相应增加,这有助于减少系统完成 CPU 密集型任务所需的时间。


InfoQ:启用 VNet 注入会对性能产生怎样的影响?为了解决这个问题,Legion 项目做了哪些有针对性的优化?


Almeida:Legion 项目的构建是为了让扩展能力可以达到 Flex Consumption 所需的水平,其中还包括具备内核级路由的 VNet 注入以及对子网 IP 地址的有效使用。Azure Functions 团队还引入了“触发监视器”组件,并将其注入到了客户的 VNet 中,以便为应用程序提供缩放决策,甚至使应用缩减到零。正如案例研究一文所说的那样,平台方面的这些改进使得 VNet 注入对横向扩展性能的影响非常小。我们做了集成 VNet 和不集成 VNet 的测试,我们观察到,50 百分位的差异为 37ms。

 

最后,GitHub上提供了更多关于 Azure Flex Consumption 的例子。

 

原文链接:

https://www.infoq.com/news/2024/06/flex-consumption-azure-functions/

2024-07-23 08:009091

评论

发布
暂无评论
发现更多内容

大数据培训 | Scala语言知识分享,直击面试

@零度

scala 大数据开发

华为发布HCSP-Solution-5G Security人才认证,助力5G安全人才生态建设

极客天地

C#/VB.NET 合并PDF文档

在下毛毛雨

C# .net PDF 文件合并

如何写出好代码 - 防御式编程指南

云智慧AIOps社区

Java 架构 代码质量

陈宇(Aqua)-安全->云安全->多云安全

火线安全

云安全 云安全技术 云安全研究

向Spring框架学习设计模式

慕枫技术笔记

设计模式 spring框架 7月月更

她就是那个「别人家的HR」|ONES 人物

万事ONES

SpringSecurity的初始化流程

急需上岸的小谢

7月月更

SAP 智能机器人流程自动化(iRPA)解决方案分享

汪子熙

SAP 业务流程自动化 7月月更 企业自动化 iRPA

leetcode 322. Coin Change 零钱兑换(中等)

okokabcd

LeetCode 动态规划 算法与数据结构

60 个前端 Web 开发流行语你都知道哪些?

海拥(haiyong.site)

前端 Web 7月月更

如何看待国企纷纷卸载微软Office改用金山WPS?

优秀

wps office办公软件

ABAP-屏幕切换时,刷新上一个屏幕

桥下本有油菜花

abap

户外LED显示屏应该考虑哪些问题?

Dylan

LED显示屏 户外LED显示屏

Python|小白如何入门Python?记我的Python初体验

AXYZdong

7月月更

【计算讲谈社】第四讲:自动驾驶,未来的移动智能载体?

大咖说

自动驾驶 阿里云 科技

SpringBoot工程创建Swagger文档并自动生成调用代码

百家饭隐私计算平台创业者

JavaScript Spring Boot swagger

焱融看 | 混合云时代下,如何制定多云策略

焱融科技

存储 文件存储 混合云 多云

研发效能度量框架解读

思码逸研发效能

研发效能 效能度量

数据湖系列之一 | 你一定爱读的极简数据平台史,从数据仓库、数据湖到湖仓一体

Baidu AICLOUD

大数据 数据仓库 数据湖 对象存储 湖仓一体

MySQL审计插件介绍

Simon

MySQL 运维 MySQL 数据库

贝联珠贯加入龙蜥社区,共同促进碳中和

OpenAnolis小助手

开源 龙蜥社区 CLA 贝联珠贯 IT资源利用

孔松(信通院)-数字化时代云安全能力建设及趋势

火线安全

云安全 云安全技术 云安全研究

[Ljava.lang.Object;是什么?

okokabcd

Java

直播带货系统软件开发,Android和iOS的区别在哪里?

开源直播系统源码

ios开发 Android开发 直播带货系统 原生开发 混合开发

ABAP-调用Restful API

桥下本有油菜花

abap REST API

远程办公经验?来一场自问自答形式的介绍吧~ | 社区征文

为自己带盐

初夏征文 7月月更

web前端培训Docker入门指南

@零度

Docker 前端开发

龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍

OpenAnolis小助手

Linux 开源 内核 龙蜥技术 BPF

刘对(火线安全)-多云环境的风险发现

火线安全

云安全 云安全技术 云安全研究

洞态在某互联⽹⾦融科技企业的最佳落地实践

火线安全

漏洞检测 IAST

借助Azure Functions Flex Consumption实现高可扩展HTTP:Thiago Almeida与Paul Batum访谈_微软_Steef-Jan Wiggers_InfoQ精选文章