写点什么

借助 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:009064

评论

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

当代软件IT大学生的技术学习之路

Nydia

签约计划

手机屏幕投屏到桌面的离线方案

黄敏

聆听极致 ——声网 Agora

cv君

算法 音视频 科技 声网 引航计划

外行在谈论流派,大师在讨论颜料

顿晓

极限编程 5月日更 门道

fastadmin+xunsearch题库系统搭建教程

一颗小树

php thinkphp fastadmin xunsearch 题库系统

SpringCloud-技术专题-Feign组件基本使用(2)

码界西柚

springmvc SpringCloud Hystrix Fegin

本文标题不能描述本文内容

小天同学

读书 哲学 读后感 4月日更

网络攻防学习笔记Day1

穿过生命散发芬芳

5月日更 网络攻防

Excel用户如何学习数据分析语言DAX?

博文视点Broadview

书单 | 月度畅销好书,助你技能满格,摆脱低效,走向财富人生

博文视点Broadview

对于即将工作的IT大学生,该如何变强?

cv君

程序人生 IT 科技 问卷 有意义

技术探索系列 - 轻松带你掌握 JMM(1)

码界西柚

Java JVM JMM 并发 5月日更

鹅厂疯子整理了万字Java笔记!小白:硬核资源基础知识已入门

牛哄哄的java大师

Java Object

你的烂代码终于有了解决方案

博文视点Broadview

【人间碎片】关于努力这件事

南吕

人生修炼 人生故事

IT 专业大学生被培训机构“渗透”情况调查

梦想橡皮擦

签约计划

从零搭建一款PC页面编辑器PC-Dooring

徐小夕

大前端 可视化 lowcode 代码编辑器

如何选择开源许可证

HoneyMoose

【LeetCode】员工的重要性Java题解

Albert

算法 LeetCode 5月日更

BPF 之巅:洞悉 Linux 系统和应用性能

博文视点Broadview

复杂Gremlin查询的调试方法

Tom(⊙o⊙)

gremlin调试

InfoQ & 声网Agora 技术开放日邀请函

Jessie

音视频 声网

A “word-wrap” functionality(一个字符串包裹函数)

HoneyMoose

北美亚特兰大一金融服务公司面试总结

HoneyMoose

2021年十大突破性技术

石云升

读书笔记 5月日更

面试:某云面试题目整理

程序员架构进阶

Java 面试 自我提升 28天写作 4月日更

万字长文讲述我是怎样保送清华的|寒门学子的奋斗史(四)

程序猿石头

程序员 码农 逆袭 大学总结 读书总结

了解代理服务器

进击的梦清

nginx Linux 运维 代理原理

将本地文件/文章上传到 GitHub 的流程

彭宏豪95

git GitHub 效率 编程

如何在 GitHub 上面为你的项目选择开源许可证

HoneyMoose

高校软件IT专业大学生课外培训调查问卷

穿过生命散发芬芳

行业分析能力考核

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