Azure 事件中心 - 分区用例问题

Azure Event Hub - Partitions usecase question

我是 Azure 事件中心的新手,我很难理解分区。

我有以下场景:

事件生产者向事件中心发送了 10 个事件。使用循环机制将事件分发到分区。所以事件中心看起来像这样:

Partition 1: [0] [2] [5] [6] [8]
Partition 2: [1] [3] [4] [7] [9]

当事件消费者开始阅读时,每个消费者最终只会得到一部分事件,如下所示:

Consumer 1: Gets events 0,2,5,6,8
Consumer 2: Gets events 1,3,4,7,9

Consumer组只能访问Partitions的一个子集是真的吗?

我的假设是事件中心架构支持向多个消费者广播事件。每个消费者都想要所有的事件。 但在我看来,Event Hub 并不是为了让所有消费者都能获得所有事件而设计的,但我不明白为什么这会有用。

谁能帮我理解分区?

每个事件中心分区都是一个持久的事件流,可供所有消费者使用,无论他们与哪个消费者组相关联。任何消费者都可以在事件流中的任何时间点从任何分区读取数据。

分区用于帮助扩展资源以支持更大程度的并发并增加事件中心的吞吐量。一般来说,使用的分区越多,事件中心可以处理的并发操作就越多。可以在 Event Hubs overview.

中找到更多信息

My assumption is that the Event Hub architecture supports broadcasting of events to multiple consumers.

不完全是;消费者负责从事件中心的分区中提取事件,而不是将它们推送给消费者。任何有权限的消费者都可以连接到分区并独立读取。事件一旦读取就不会被删除,它们存在于分区中,直到它们的年龄超过保留期。

But it seems to me that Event Hub isn't designed to have all consumers get all the events

这是不正确的。事件中心为任何希望阅读事件的消费者公开事件。使用事件中心 SDK 中的 EventProcessorClient 等客户端允许应用程序使用所有分区,而无需单独管理每个分区使用者。