Microsoft Azure Iot Hub中分区的功能是什么?

Microsoft Azure Iot Hub中分区的功能是什么?,azure,azure-iot-hub,azure-eventhub,azure-iot-hub-device-management,Azure,Azure Iot Hub,Azure Eventhub,Azure Iot Hub Device Management,当我要创建物联网中心时,Azure平台会请求物联网中心的分区数。我已经阅读了有关此主题的分区,但我不明白消费者组和分区之间的关系是什么,以及与数据读取的关系是什么。分区是支持缩放的主要分区。默认行为是将发送到集线器的消息划分到这些分区上 假设我们有4个分区(1-4),其中包含一些消息(A-L): 分区1:A、E、I 分区2:B、F、J 分区3:C、G、K 分区4:D、H、L 我们还定义了两个消费群体,C1和C2。如果启动从集线器读取消息的流程,则定义消费者组(如果不是,则使用默认消费者组) 让我

当我要创建物联网中心时,Azure平台会请求物联网中心的分区数。我已经阅读了有关此主题的分区,但我不明白消费者组和分区之间的关系是什么,以及与数据读取的关系是什么。

分区是支持缩放的主要分区。默认行为是将发送到集线器的消息划分到这些分区上

假设我们有4个分区(1-4),其中包含一些消息(A-L):

分区1:A、E、I
分区2:B、F、J
分区3:C、G、K
分区4:D、H、L

我们还定义了两个消费群体,C1和C2。如果启动从集线器读取消息的流程,则定义消费者组(如果不是,则使用默认消费者组)

让我们有两个读卡器,一个(R1)配置为使用C1读取,另一个(R2)配置为使用C2读取

两个读卡器都可以访问相同的分区和消息。但两者都有自己的进度跟踪系统。这是最重要的部分

在真实的word场景中,您可能有一个数据流,让我们假设日志消息。要求是所有日志消息都必须写入数据库,并且需要使用sms将具有更高日志级别的某些消息作为高优先级警报发送。如果您只有一个消费者组(C1,由R1读取),则最终将处理所有消息。但是,如果数据库写入速度慢,很可能是在传递消息和处理消息之间需要一段时间

现在,如果我们有两个消费者组,那么该消费者组(C2)的读卡器(R2)可以跳过所有低日志级别的消息,只处理使用sms发送的关键消息。该阅读器将比需要将所有消息写入数据库的阅读器更快地阅读所有消息

TL;DR:可以使用多个消费群体将慢流处理器与快流处理器分开。每个消费群体都跟踪自己在流程中的进度

因此,最终的进展可能是这样的:

消费者组1(进行一些耗时的处理)

分区1:A,E,I
分区2:B,F,J
分区3:C、G、K
分区4:D、H、L

消费者组2(进行一些快速消息处理)

分区1:A、E、I
分区2:B、F、J 分区3:C,G,K
分区4:D、H、L

其中粗体字符表示已处理的消息

编辑
如果我在同一个消费者群体中有两个读者,那么每个读者都有自己的进度还是每个消费者群体的进度


每个读卡器通过一个使用者组连接到一个事件中心分区,进度存储在每个使用者组的每个分区中。因此,从某种意义上说,读卡器有自己的进步,但读卡器是短暂的,连接到同一分区的读卡器的新实例将在前一个读卡器离开的地方继续进行。

@Peter answer绝对正确,让我再补充几句

分区在事件中心,如高速公路中的车道,我们使用车道系统轻松通行,而不是创建大而宽的道路,当我们封锁一条车道时,并不意味着整个高速公路都被封锁

使用此技术,EventHub/IoTHub允许我们每秒摄取数百万条记录


谢谢您的回答,如果我在同一个消费群体中有两个读者,那么每个读者都有自己的进度还是每个消费群体的进度?每个消费群体