concurrency - Azure Functions 并发和缩放行为
问题描述
SO上有一堆Azure Functions并发问题,但没有一个专门解决这个问题。
我正在考虑 HTTP 触发的函数应用程序的扩展方案(如果重要,运行时是 Node.js)。我来自 AWS Lambda 世界,每个并发调用都会产生一个新的 Lambda 实例:
如果在处理请求时再次调用该函数,则会分配另一个实例,这会增加该函数的并发性。
让我对 Azure Function 应用程序感到困惑的是他们文档中的这篇文章:
单个函数应用最多只能横向扩展 200 个实例。但是,单个实例一次可以处理多个消息或请求,因此对并发执行的数量没有设定限制。
在什么情况下,单个 FA 实例会一次处理多个请求?
解决方案
此行可能参考以下信息:
函数应用中的 host.json 文件允许配置主机运行时和触发行为。除了批处理行为之外,您还可以管理多个触发器的并发性。通常调整这些选项中的值可以帮助每个实例根据调用函数的需求适当地扩展。
host.json 文件中的设置适用于应用程序中的所有函数,在函数的单个实例中。例如,如果您的函数应用具有两个 HTTP 函数并且maxConcurrentRequests 请求设置为 25,则对任一 HTTP 触发器的请求将计入共享的 25 个并发请求。当该函数应用扩展到 10 个实例时,这两个函数有效地允许 250 个并发请求(10 个实例 * 每个实例 25 个并发请求)。
其他主机配置选项可在host.json 配置文章中找到。
推荐阅读
- node.js - Jest - 测试证书验证
- mysql - MySQL 按组运行总计,时间间隔
- c# - 如何从动态端口连接到远程 SQL Server
- c++ - 如何调试读写锁死锁?
- google-colaboratory - 如何在保存在文件夹中的 google colab 中导入模型?
- reactjs - ReactWebChat EndofConversation 类型
- amazon-ses - 如何使用 AWS SES 通过 mydomain.org 实现 theiremial@theirdomain.com?
- arrays - 如何使用 Swift Decodable 映射来自 UUID 键数组的关系?
- arrays - React 如何将数组放入对象中
- r - 如何在 ggplot 中混合 geom_rect 和 geom_line 对一个区域进行着色?