【问题标题】:How to scale azure functions to high throughput short lived Event Grid events如何将 azure 函数扩展到高吞吐量短期事件网格事件
【发布时间】:2019-04-25 14:13:00
【问题描述】:

当向主题发布大量事件时(重试和生存时间以分钟为单位),许多事件无法传递到订阅的函数。有没有人知道任何设置或方法来确保缩放快速反应而不会全部丢弃?

我正在创建一个 Azure Function 应用程序,该应用程序本质上以高速率将事件传递给事件网格主题,订阅主题的其他函数将处理这些事件。这些事件是短暂的,并且不会持续超过指定的分钟数。理想情况下,我希望看到应用程序在不丢弃事件的情况下处理负载。总体目标是每个事件都会触发对我自己的 api 的出站 api 端点调用以测试性能/负载。

我已经查看了 MSDN 和其他位置的文档,但不太适合我的场景(大多数谈论的是传入事件而不是出站 http 事件)。

对于缩放,我研究了 http 的 host.json 设置(因为没有网格事件,并且网格事件看起来类似于 http 触发器)并且设置这些似乎已经取得了一些改进

我期望的最终结果是,每次发布到主题端点时,它都会交付给函数并以低失败交付/丢弃率执行。

我所看到的是,当将许多事件发布到一个主题时(并且以一致的速率),大多数事件都会出现死信/丢弃

【问题讨论】:

  • 你是在运行你的Azure功能消费还是应用服务计划?
  • @kgalic 它在一个消费计划上运行,据我了解应该能够适当地扩展?

标签: function azure azure-functions azure-eventgrid


【解决方案1】:

消耗计划受到分配给您的函数的计算能力的限制。从本质上讲,它可以扩展到一些限制,然后它就变成了瓶颈。

我建议看看limitations

还有here,你可以了解一下计算能力的差异。

如果您想启用自动扩展,或扩展 vm 实例的数量,我建议使用应用服务计划。支持扩展的最便宜的选项是标准定价层。

【讨论】:

  • 再次感谢@kgalic 我已经查看了您之前提供的限制链接,据我所知,已经实施了所有建议(管理连接并修改了 host.json 的 http 设置)。根据您提到的内容,消费计划似乎有问题扩展到每秒 600 个事件(我尝试过更低但仍然看到问题)?
  • 在云计算中,尤其是像 Azure Functions 这样的 PaaS 服务,很难找到边界在哪里。它取决于计算能力、代码复杂性等。它的工作方式是您运行一些测试、负载测试,并查看结果是否在您的延迟要求范围内,例如您的情况。如果你不开心,那说明了什么,对吧:)?因此,您可以缓解这些问题,以便在某些情况下选择另一种服务,或者扩大现有服务。
猜你喜欢
  • 2018-07-11
  • 2021-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多