我是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消费者组只能访问分区的一个子集,这是真的吗?
我的假设是事件中心架构支持向多个使用者广播事件。每个消费者都想要所有的东西。但在我看来,事件中心并不是为了让所有的消费者都能得到所有的事件而设计的,但我不明白为什么这会有用。
有人能帮我理解分区吗?
发布于 2021-07-19 21:59:21
每个事件集线器分区都是对所有使用者可用的持久事件流,而不管它们与哪个使用者组关联。任何使用者都可以在事件流的任何点从任何分区读取数据。
分区用于帮助扩展资源,以支持更大程度的并发性,并提高事件中心的吞吐量。一般来说,使用的分区越多,事件集线器可以处理的并发操作就越多。更多信息可以在活动中心概览中找到。
我的假设是事件中心架构支持向多个使用者广播事件。
不完全是这样;消费者负责从事件集线器的分区中提取事件,它们不会被推送给使用者。任何具有权限的使用者都可以连接到分区并独立读取。事件一旦读取就不会被删除,它们在分区中存在,直到它们的时间超过保留期为止。
但在我看来,事件中心并不是为了让所有的消费者都得到所有的事件而设计的
那是不对的。事件集线器为希望读取事件的任何使用者公开事件。使用像事件集线器SDK中的EventProcessorClient这样的客户端,应用程序可以从所有分区消费,而不必单独管理每个分区使用者。
https://stackoverflow.com/questions/68445626
复制相似问题