eventhub中的高级消息处理

时间:2014-12-25 07:36:42

标签: azure autoscaling azure-eventhub

根据我的理解,eventhub可以每秒处理/摄取数百万条消息。为了调整摄取,我们可以使用吞吐量。

更多吞吐量=更多摄取功率。

但是在接收/消费方面,你可以创建多达32个接收器(因为我们可以创建32个分区,一个接收器可以使用一个分区)。

基于以上所述,如果一条消息需要100毫秒来处理,一个消费者每秒可处理10条消息,32位消费者每秒可处理32 * 10 = 320条消息。

如何让我的接收器消耗更多消息(例如每个5-10k)。

1)我必须在ProcessEventsAsync中异步处理消息。但在这种情况下,我无法维持订购。

2)或者我必须要求Microsoft允许我创建更多分区。

请咨询

1 个答案:

答案 0 :(得分:5)

TLDR:您需要要求Microsoft增加您允许的分区数量,并记住目前无法增加已存在的事件中心的数量。

你的消费并行度是分区是正确的。如果您的消费者只能按顺序执行10秒/秒甚至100秒/秒,那么您将需要更多分区来消耗数百万个事件。虽然100ms /事件对我来说当然看起来很慢,但我认为你应该在那里寻找优化(例如,你不需要等待的工作,不经常提交等),你将达到需要更多分区的程度。规模。

要注意的一些事项:32个分区只允许32 Mb / s的入口和64Mb / s的出口。这两个因素都很重要,因为出口吞吐量由您使用的所有消费者群体共享。因此,如果您有4个消费者组读取数据(每个16Mb / s),您将需要两倍的分区(或至少吞吐量单位)作为输入,因为您将完全基于您的数据入口(因为否则您将跌倒后面)。

关于您对多租户的评论,您将拥有一个数据库消费者'处理所有租户的组,所有租户的数据都将流经同一个集线器?如果这听起来像一个合理的用途,那么每个租户每个消费整个流的消费者群体就不那么明智了。