gpt4 book ai didi

azure - 如何实现从Azure Event Hub的高速处理接收?

转载 作者:行者123 更新时间:2023-12-02 23:49:25 24 4
gpt4 key购买 nike

我正在研究 Azure 事件中心的 POC,以将其实现到我们的应用程序中。

流程简要简介。

  • 创建了从本地文件夹读取 CSV 数据并将其发送到事件中心的工具。
  • 我们正在将事件数据批量发送到事件中心。
  • 使用 12 个工具实例(并行),我可以在 1 分钟内向事件中心发送总共 600 000 行消息。
  • 但是,在接收端,接收60万行数据需要10多分钟。

需要实现

  • 我想将接收器上的导出速度匹配/加倍处理数据。现有配置

我为用户所做的配置是

  • TU - 10 个事件中心,具有 32 个分区。

  • 编码逻辑与 MSDN 中提到的相同

  • 唯一的区别是,我批量发送一行数据。
    具有选项 {MaxBatchSize= 1000000,
    的 EventProcessorhostPrefetchCount=1000000

最佳答案

为了在事件中心中实现更高的导出速率(也称为更快的处理管道):

  1. 创建横向扩展管道 - EventHub 中的每个分区都是用于处理 EventHub 之外的事件的规模单位。根据您描述的规模(每分钟 60 万个事件 --> 每秒 10K 个事件 - 具有 32 个分区 - 您已经得到了这一点)。确保您创建的分区数量与您预计的管道在不久的将来所需的数量一样多。想象一下分析高速公路上的交通情况却没有。车道数量是交通量的唯一限制。

  2. 跨分区的均衡负载分配:如果您使用 SendToASpecificPartition 或 SendUsingPartitionKey - 您将需要注意均衡负载分配。如果您使用 EventHubClient.Send(EventDataWithOutPartitionKey) - EventHubs 服务将确保所有分区均等加载。如果单个 EventHub 分区负载过重 - 您可以处理 EventHub 上所有事件的时间将受到 no 的限制。此分区上的事件数。

  3. 横向扩展接收器上的物理资源/EventProcessorHost :最重要的是网络(套接字和带宽)以及后一点,CPU 和内存。使用 PartitionManagerOptions.MaxReceiveClients 增加 EventHubClient 的最大数量(它有一个专用的 MessagingFactory,映射到 1 个 socket code>) 每个 EventProcessorHost 实例创建。默认情况下为16

让我知道进展如何...:)

More on Event Hubs.

关于azure - 如何实现从Azure Event Hub的高速处理接收?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38827200/

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