事件中心是否应具有与吞吐量单位相同数量的分区?

azu*_*per 10 azure azure-eventhub

对于Azure事件集线器1虽然put单位等于1MB/sec入口.因此它可能需要1000条1 KB的消息.如果我选择5个或更多吞吐量单位,我能够用4个分区摄取5000个消息/秒的1KB大小吗?在那种情况下,出口会是什么?我不确定Event Hub分区的限制,我读到它也是1MB /秒.但那是否意味着有效地使用事件中心我需要具有相同数量的分区?

Sre*_*ati 17

伟大的Qstn!

几点基础知识

1个ThruPut单元(特此,我将称之为TU) - 表示1 MB /秒或1000毫秒/秒 - 以先发生者为准.您支付TU =>您可以根据您的负载要求更改TU.这是比尔的旋钮.

单独地,每个分区以1 MB /秒或1000 msgs/sec的入口进行CAP(也称为MAX'),以先发生者为准.虽然,有时您可能会在负载较少的地区获得幸运 - 这是Azure EventHubs服务提供的唯一保证.在决定否时考虑这些原则.eventhub中的分区为您的服务:

  1. 我们提供分区的意图之一是提供高可用性.如果您要发送到eventhubs并希望发送成功,那么无论发生什么事情 - 您应该创建多个分区并使用EventHubClient.Send发送(它不会将发送粘贴到分区).
  2. 此外,还有其他主要因素:分区数量 - 将决定事件管道的容量以及接收和处理事件的速度/并行速度.如果你的EventHub上有10个分区 - 它的容量最大为10 TU.您可以并行创建10个纪元接收器并使用和处理事件.如果您设想当前正在创建的EventHub - 可以快速增长10倍 - 创建尽可能多的分区并保持TU与当前负载匹配.这里的比喻就像 - 在高速公路上有多条车道!

另外,最重要的一点是要记住,TU是在命名空间级别配置的.而且,ONE Event Hubs命名空间可以有多个eventhub.每个eventhub可以有不同的号码.分区.

答案:

如果您在命名空间中选择5个或更多TU并且只有1个具有4个分区的EventHub - 您将获得最大值.4 MBPS或4K msgs/sec.

出口最大 将是Ingress的2倍(8 MBPS或8K msgs/sec).换句话说,您可以通过创建消费者群体来创建2种接收模式(慢速和快速等)- 描述您的接收模式.如果您需要超过2X并行接收 - 那么您将需要更多的TU.

是的,每个EventHubs分区限制为1 TU(1 MBPS或1K Msgs/sec).

是.理想情况下,您需要比TU更多的分区.首先,如上所述为您的分区计数建模.在开发解决方案时,请从1 TU开始.完成后,当您进行负载测试或上线时,增加TU以调整负载.请记住,您可以在命名空间中拥有多个eventhub.因此,在命名空间级别拥有20个TU,每个拥有4个分区的10个eventhub,可以在命名空间中提供20 MBPS.

HTH!SREE


Pan*_*vos 2

一个分区分配给一个 TPU。将 TPU 视为处理引擎。您无法利用比分区数量更多的 TPU。如果您有 4 个分区,则不能使用超过 4 个 TPU。

分区通常多于 TPU,原因如下

  • 如果流量很大,可以增加 TPU 的数量,但无法更改分区的数量
  • 并发读取器的数量不能多于分区的数量。如果您想要有 5 个并发读取器,则需要 5 个分区。

至于吞吐量,限制为每个 TPU 1 MB 入口/2 MB 出口。这涵盖了典型场景,其中每个事件都发送到冷存储(例如数据库)和流分析或事件处理器以进行分析、监控等。