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

Aja*_*adj 3 azure azure-eventhub

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

我有以下场景:

  • 1 事件中心命名空间

  • 1 个实际事件中心

  • 事件中心中的 2 个分区

  • 2 消费者群体

  • 1 名活动制作人

  • 2 个事件消费者,每个消费者组一个

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

Partition 1: [0] [2] [5] [6] [8]
Partition 2: [1] [3] [4] [7] [9]
Run Code Online (Sandbox Code Playgroud)

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

Consumer 1: Gets events 0,2,5,6,8
Consumer 2: Gets events 1,3,4,7,9
Run Code Online (Sandbox Code Playgroud)

消费者组是否只能访问分区的子集?

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

谁能帮我理解分区?

Jes*_*ire 5

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

分区用于帮助扩展资源以支持更大程度的并发性并提高事件中心的吞吐量。一般来说,使用的分区越多,事件中心可以处理的并发操作就越多。更多信息可以在事件中心概述中找到。

我的假设是事件中心架构支持向多个使用者广播事件。

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

但在我看来,Event Hub 的设计目的并不是让所有消费者都能获得所有事件

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