azure - Azure Function App 如何针对数百万并发用户请求进行扩展
问题描述
我试图了解 Azure 功能在消费计划或应用服务计划中运行时如何扩展流量突发。它在这里说,一个人可以拥有无限的 Web、Mobile、API App on App 服务计划。
想知道它是如何管理的吗?具体来说,如果我在其中一个应用服务计划中运行我的函数应用,它会在某些峰值负载条件下超时或无法访问吗?
由于只有一个 IP 地址分配给函数应用 URI,Azure 如何确保在这种情况下(极端峰值负载条件)的水平扩展?
是否使用某种内部负载平衡器,然后创建一个新的临时 VM(以分散负载并)在负载条件下(当一定数量的并发用户/连接尝试访问函数 URI 时)运行函数应用程序的实例?
但即使在这种情况下,它不会用完通过内部负载平衡器进行负载平衡的 VM 实例的内部 IP 吗?必须有一个阈值点,即应用服务计划将用完内部 IP 池以分配 VM 进行横向扩展。
那么,考虑到这种情况,如何在 Azure 应用程序服务计划上运行无限的 Web、移动、API 应用程序而不会耗尽任何内部 IP 地址池?
解决方案
我认为这里的关键问题是缩放如何在应用服务计划中发挥作用。
Azure 数据中心由不同的缩放单元组成,每个缩放单元由数百台服务器(甚至 1000 台)组成。这就是应用服务带来的扩展能力。一个数据中心可能有多个缩放单元。
应用服务的内部架构包括 - 前端 - 七层负载均衡器 Web Worker - Web 服务器 文件服务器 - 存储应用程序内容
要回答您的以下问题 -
Q.由于函数应用 URI 只分配了一个 IP 地址,Azure 如何确保在这种情况下(极端峰值负载条件)的水平扩展?
问:它是否使用某种内部负载均衡器,然后创建一个新的临时 VM(以分散负载并)在负载条件下(当一定数量的并发用户/连接尝试访问该函数时)运行函数应用程序的实例URI)?
答:它不会创建新的临时 VM,而是使用 Web Worker,它们是运行共享负载的预配置 VM。前端是一个服务器分层负载均衡器,负责在水平扩展的情况下分配流量。
但即使在这种情况下,它不会用完通过内部负载平衡器进行负载平衡的 VM 实例的内部 IP 吗?必须有一个阈值点,即应用服务计划将用完内部 IP 池以分配 VM 进行横向扩展。
归根结底,数据中心受到内部可用计算能力的限制。假设地说,如果数据中心的计算能力耗尽,在这种情况下,您可能会开始遇到超时,因为我不知道应用程序会自动扩展到另一个区域的任何情况。
推荐阅读
- angular - Okta 访问令牌未定义返回到部署在 AWS Cloudfront 上的 Angular 应用程序
- python - 处理类型错误,列表大小为维度 1 || 季风问题
- ruby-on-rails - 在 Buildkite 中运行测试时,西班牙语中的月份大写,但在我的开发环境中没有
- go - 如何使用通道确保完成多个 goroutine
- reactjs - 为什么我的 Material-ui React 组合框没有正确刷新?
- typescript - 如何解决类型错误:在 Next.js 项目中找不到名称“查询”
- mongodb - 从 pymongo 重启 mongod 进程
- c# - 使用适用于 .Net 的 Azure Bob Storage v12 SDK 进行加密
- json - 嵌套的 JWT 令牌声明
- javascript - 如何处理 ldapjs 搜索方法中的错误