gpt4 book ai didi

c# - 即使 Azure 函数并行运行,为什么 Azure Eventhub 批量消息处理比单个消息处理更快?

转载 作者:行者123 更新时间:2023-12-03 00:41:22 25 4
gpt4 key购买 nike

最近,我对使用 Azure Function 和 Azure Event Hub 的应用程序进行了性能测试。

单个消息处理:

pubic async Task Run(EventData msg, CloudTable myTable) 
{
await myTable.Upsert(msg.ToTableEntity());
}

批量消息处理:

public async Task Run(EventData[] messages, CloudTable myTable)
{
var tasks = messages.Select(async msg => await Handle(msg, myTable)).ToList();
await Tasks.WhenAll(tasks);
}

private async Task Handle(EventData msg, CloudTable myTable)
{
await myTable.Upsert(msg.ToTabletEntity());
}

批量消息处理速度比单条消息处理速度快15%。

我希望它们具有相同的速度,因为 Azure 函数并行处理消息。

我考虑了host.json的设置如:batchSizeprefetchCountcheckpoint对这个结果的影响。

你能帮我解释一下吗?

谢谢

最佳答案

批处理不会阻止函数扩展到多个实例。假设您在消费计划或高级计划上运行这两个版本,batch processing is expected以获得更快的处理时间。

通过调整批量大小和预取计数来最大化吞吐量可能会产生一些影响,但需要针对您的特定用例进行一些测试,以确定最佳设置是什么。

scaling outward 时,还有两件事需要考虑。 。流量高峰不会立即导致规模控​​制器启动大量实例。

  1. 缩放 Controller 一次仅放大一个实例。消费计划中,HTTP 功能有 1 秒的超时时间,非 HTTP 功能有 30 秒的超时时间。由于单个实例通常可以一次处理多条消息,因此这与处理速率不存在 1:1 的相关性。
  2. 每个新实例都会有一个预热时间,并且无法立即接受消息。这可能会有所不同,但通常只有几秒钟。

关于c# - 即使 Azure 函数并行运行,为什么 Azure Eventhub 批量消息处理比单个消息处理更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61768340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com