我正在为Azure事件中心的POC工作,以便在我们的应用程序中实现相同的功能。
简要介绍流程。
需要实现
我使用户的配置
TU - 具有32个分区的10个单事件中心。
编码逻辑与MSDN
唯一不同的是,我正在批量发送数据
EventProcessorhost,带选项{MaxBatchSize = 1000000,
PrefetchCount = 1000000
答案 0 :(得分:2)
在eventhubs中实现更高的出口率(又名更快的处理流程):
创建一个Scaled-out管道 - EventHub中的每个分区都是unit-of-scale
,用于处理EventHub之外的事件。使用您描述的比例(每分钟6Lakh事件 - >每秒10K事件 - 具有32个分区 - 您已经正确)。确保在不久的将来创建尽可能多的分区,以满足您的管道需求。想象一下,分析高速公路上的交通,没有。车道是对交通量的唯一限制。
跨分区的相等负载分配:如果您使用的是SendToASpecificPartition或SendUsingPartitionKey,则需要处理相等的负载分配。如果您使用EventHubClient.Send(EventDataWithOutPartitionKey)
- EventHubs服务将确保所有分区均等加载。如果单个EventHub分区负载很重 - 您可以在EventHub上处理所有事件的时间量将被no绑定。此分区上的事件。
横向扩展Receiver
/ EventProcessorHost
上的物理资源:最重要的是网络(套接字和带宽)&一点一点,CPU&记忆。使用PartitionManagerOptions.MaxReceiveClients
增加每EventHubClient
个实例创建的MessagingFactory
(具有专用socket
(映射到1 EventProcessorHost
)的最大数量。默认情况下为16
。
让我知道它是怎么回事...... :)