gpt4 book ai didi

azure - Microsoft Azure Iot Hub 中的分区有什么作用?

转载 作者:行者123 更新时间:2023-12-02 08:03:02 25 4
gpt4 key购买 nike

当我要创建 IoT 中心时,Azure 平台会请求 IoT 中心的分区数量。我已阅读有关此主题的分区 purpose of Azure iot hub device-to-cloud partitions但我不明白消费者组和分区之间有什么关系,和数据的读取有什么关系。

最佳答案

分区主要是为了支持扩展。默认行为是发送到集线器的消息被划分到这些分区上。

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

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

我们还定义了 2 个消费者组:C1 和 C2。如果您启动一个进程来从中心读取消息,则您可以定义一个消费者组(如果没有,则使用默认的消费者组)。

因此,让我们有 2 个读取器,其中一个 (R1) 配置为使用 C1 读取,另一个 (R2) 配置为使用 C2 读取。

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

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

现在,如果我们有 2 个消费者组,该消费者组 (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

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

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

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

关于azure - Microsoft Azure Iot Hub 中的分区有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51287824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com