写点什么

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

评论

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

声网、新东方、伴鱼英语的音视频技术解读

Jessie

音视频 视频消音

SpringBoot技术专题—来看看异步处理返回方案

码界西柚

Java WebAsyncTask 5月日更 AsyncContext DeferredResult

Golang 工作区和 GOPATH

escray

学习 极客时间 Go 语言 5月日更

Python自动打印文件

IT蜗壳-Tango

IT蜗壳教学 5月日更

VMWare中Ubuntu网络配置

进击的梦清

Linux 运维 vmware 网络配置

最近又有出什么新电影,要不要停泊片刻,与好友相约一起来去看呢?

叶小鍵

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?

华为云开发者联盟

JavaScript node.js Serverless 云原生 大前端

Dubbo 本地调用

青年IT男

dubbo

不忘过去,不畏将来

小天同学

5月日更 汶川地震 不忘过去

Arthas-技术专题-使用指南

码界西柚

Arthas 5月日更

百信银行基于 Apache Hudi 实时数据湖演进方案

Apache Flink

大数据 flink

聊聊人像抠图背后的算法技术

华为云开发者联盟

hilens 抠图 工程 抠图算法 baseline

Fluid 进入 CNCF Sandbox,加速大数据和 AI 应用拥抱云原生

阿里巴巴云原生

人工智能 容器 云原生 调度 弹性计算

精选面试题教你应对高级iOS开发面试官(提供底层进阶规划蓝图)

程序员 移动开发 ios开发

cri-o 技术探秘2

xumc

无常中的僵硬与柔软

zhoo299

随笔杂谈 教育 生命 5月日更

「学习笔记」《02 | 第一个程序:教你输出彩色的文字》之二

Nydia

学习

一文带你读懂PyQt:用Python做出与C++一样的GUI界面应用程序

老猿Python

ThreadLocal不好用?那是你没用对!

王磊

Java 后端 多线程 ThreadLocal 5月日更

找Matlab代码,看这一篇就够了

攻城先森

matlab 工具分享 5月日更

作为最好用的可观测平台,如何监控 Grafana

耳东@Erdong

Grafana Prometheus 5月日更

怎样做好服务提供方

程序员架构进阶

架构设计原则 服务化 28天写作 5月日更

如何让消息队列达到最大吞吐量?

万俊峰Kevin

微服务 消息队列 Queue Go 语言

音视频在智能手表上的应用

anyRTC开发者

音视频 WebRTC IoT RTC

【LeetCode】停在原地的方案数Java题解

Albert

算法 LeetCode 5月日更

追寻软件定义的梦想汽车

车骑

自动驾驶 智能汽车 软件定义汽车 汽车制造

给Java小白,整理一套能上手的简单编程算法题!!!

小傅哥

Java 程序员 数据结构 算法 小傅哥

Nginx性能分析之gpreftools

运维研习社

nginx 性能分析 5月日更

深度剖析 | 关于数据锁定和读取一致性问题

VoltDB

数据库 数据分析 5G

华为中国生态大会2021举行在即,GaussDB将重磅发布5大解决方案

华为云开发者联盟

数据库 opengauss 华为云 GaussDB 云数据库

python str模块

若尘

Python编程 str 5月日更

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