如何确定在Auzre Event Hub中使用多少个分区

时间:2018-12-18 22:49:28

标签: azure-eventhub

或者用不同的措辞:为什么我不必占用最大分区数(目前为32个,而没有直接与Microsoft联系)。

据我所知,更多的分区意味着(潜在的)更大的出口吞吐量,而不会增加金钱或计算成本。有什么收获?我什么时候不想使用可能允许配置的分区?

1 个答案:

答案 0 :(得分:1)

您发现以下事实是正确的:在配置事件中心时,拥有更大数量的分区不会花费您额外的钱。但是,当数据按比例增加时,您将不得不分配更多的TU,因此,根据流入和流出的数据量,这将花费您额外的钱。

来自the docs

  

事件中心的吞吐量定义以兆字节为单位的数据量或通过事件中心进出的1 KB事件的数量(以千为单位)。此吞吐量以吞吐量单位(TU)度量。购买TU之前,您可以开始使用Event Hubs服务。您可以使用门户网站或事件中心资源管理器模板来显式选择事件中心TU。

另一件事是,例如,如果您使用Event Processor Host处理数据,则必须提高所有分区的侦听器的速度。如果传入的数据不是很多,并且将数据划分为所有这些分区,则您将有很多分区处理少量的数据流,从而可能无法对该数据进行最佳处理。

来自the docs

  

设置后无法修改事件中心上的分区计数。考虑到这一点,在开始之前考虑一下需要多少个分区很重要。   事件中心被设计为允许每个消费者组使用单个分区读取器。在大多数使用情况下,四个分区的默认设置就足够了。如果要扩展事件处理范围,则可能需要考虑添加其他分区。分区上没有特定的吞吐量限制,但是名称空间中的总吞吐量受吞吐量单位数量的限制。随着增加名称空间中吞吐量单位的数量,您可能希望使用其他分区,以允许并发阅读器实现自己的最大吞吐量。

     

但是,如果您拥有一个模型,其中您的应用程序对特定分区具有亲和力,那么增加分区数可能对您没有任何好处。有关更多信息,请参见可用性和一致性。

您的数据处理管道必须处理这些分区。如果只有一个进程/机器必须处理海量的数据,那么理论上可以将其发送到事件中心。