azure 事件集线器的分区数是否应与吞吐量单元数相同?

t9aqgxwy  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(95)

对于Azure事件中心1,虽然放置单位等于1 MB/秒入口。因此,它可以接收1000条1 KB的消息。如果我选择5个或更多吞吐量单位,我是否可以在4个分区中接收5000条1 KB大小的消息/秒?在这种情况下,什么是出口?我不确定事件中心分区的限制,我读到它也是1 MB/秒。但这是否意味着要有效地使用事件中心,我需要有相同数量的分区?

oknwwptz

oknwwptz1#

问得好。
1吞吐量单位(TU)表示1 MB/秒或1000 msgs/秒的入口限制-以先发生者为准。您为TU付费,并可以根据负载要求更改TU。这是控制帐单的旋钮。TU在给定的事件集线器命名空间上设置!
当您为EventHubs命名空间购买1个TU并在其中创建多个EventHubs时,1 MB/秒或1000 msgs/秒的限制将累计应用于这些EventHubs。该限制还将单独应用于每个分区。尽管如此,有时在某些负载较低的地区您可能会幸运。
在为您的服务决定eventhub中的分区数量时,请考虑以下原则:
1.分区的目的是提供高可用性。如果您对Eventhubs是sending,并且希望发送成功,则无论如何都应该创建多个分区并使用EventHubClient.Send进行发送(这不会将发送限制到特定分区)。
1.* * 分割区数目将决定事件管道长度,以及您可以接收和行程事件的**速度/并行程度。如果您的EventHub上有10个分割区-其容量实际上上限为10个TU。您可以并行建立10个epoch receivers,并使用和行程事件。如果您设想您目前正在创建的EventHub可以快速增长10倍,请创建尽可能多的分区,并使TU与当前负载相匹配。
另一件需要注意的事情是,TU是在命名空间级别配置的。而且,一个事件集线器命名空间可以有多个EventHub,每个EventHub可以有不同数量的分区。

答案

如果您在命名空间上选择5个或更多TU,并且只有1个EventHub和4个分区,您将获得4 MB/秒或4K msgs/秒的最大值。
最大出口将是入口的2倍(8 MBPS或8 K msgs/sec)。换句话说,您可以通过创建2个consumer groups来创建2种接收模式(例如,慢速和快速)。如果您需要超过2倍的并行接收,则需要更多的TU。
是的,理想情况下,您需要的分区数将多于TU。首先,按照上面提到的方法对分区数建模。在开发解决方案时,从1个TU开始。完成后,在进行负载测试或投入使用时,根据负载增加TU。请记住,在一个命名空间中可以有多个EventHub。因此,在命名空间级别具有20个TU和10个EventHub,每个EventHub具有4个分区,可以在命名空间上传递20 MB/秒。
More on EventHubs

w41d8nur

w41d8nur2#

一个分区对应一个TPU。将TPU视为一个处理引擎。您不能利用比分区更多的TPU。如果您有4个分区,则不能使用超过4个TPU。
分区数通常多于TPU数,原因如下

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

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

相关问题