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

时间:2016-02-20 06:31:56

标签: azure azure-eventhub

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

2 个答案:

答案 0 :(得分:16)

伟大的Qstn!

<强> Few Basics

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

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

  1. 我们提供分区的意图之一是提供高可用性。如果您对eventhubs sending并且希望发送成功,那么无论发生什么事情都很重要 - 您应该创建多个分区并使用EventHubClient.Send发送(不会发生发送到分区)。
  2. 还有其他主要因素:不。分区 - 将确定胖事件管道是如何&amp;如何快速/平行你可以得到&amp;过程事件。如果你的EventHub上有10个分区 - 它的容量最大为10 TU。您可以并行创建10 epoch receivers&amp;消费与过程事件。如果您设想当前正在创建的EventHub - 可以快速增长10倍 - 创建尽可能多的分区并保持TU与当前负载匹配。这里的比喻就像 - 在高速公路上有多条车道!
  3. 另外,最重要的一点是, TU在命名空间级别配置。而且,ONE Event Hubs命名空间可以有多个eventhub。每个eventhub可以有不同的号码。分区。

    答案

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

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

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

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

    more on Event Hubs...

答案 1 :(得分:2)

一个分区转到一个TPU。将TPU视为处理引擎。您不能利用比分区更多的TPU。如果您有4个分区,则不能使用4个以上的TPU。

由于以下原因,通常有比TPU更多的分区

  • 如果您有大量流量,可以扩展TPU的数量,但不能更改分区数
  • 除了分区之外,您不能拥有更多的并发读者。如果你想拥有5个并发读者,你需要5个分区。

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