代码之家  ›  专栏  ›  技术社区  ›  Andres Camacho

微软Azure Iot集线器中分区的功能是什么?

  •  1
  • Andres Camacho  · 技术社区  · 6 年前

    当我要创建一个物联网中心时,Azure平台会请求物联网中心的分区数。我读过关于这个主题的分区 purpose of Azure iot hub device-to-cloud partitions

    2 回复  |  直到 6 年前
        1
  •  2
  •   Peter Bons    6 年前

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

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

    分区1:A、E、I

    分区3:C、G、K
    分区4:D、H、L

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

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

    全部的 日志消息必须写入数据库 具有更高日志级别的消息需要使用sms作为高优先级警报发送。如果您只有一个消费者组(C1,由R1读取),那么最终将处理所有消息。但是如果数据库写入速度很慢,很可能是在传递消息和处理消息之间需要一些时间。

    现在,如果我们有两个用户组,则该用户组(C2)的读卡器(R2)可以跳过所有低日志级别的消息,只处理要使用sms发送的关键消息。这个阅读器浏览所有消息的速度比需要将所有消息写入数据库的阅读器快得多。

    DR:可以使用多个消费者组来分离慢流处理器和快流处理器。每个消费群体都会在流中跟踪自己的进度。

    所以最终的进展可能是这样的:

    消费群体1(进行一些耗时的处理)

    分区1: A、 E
    分区2: ,J
    ,克,克
    分区4: D ,H,L

    分区1: A、 E,我
    B、 F,J
    分区3:
    分区4: D、 H,L


    如果我在同一个用户组中有两个读卡器,那么每个读卡器是否都有自己的进度,还是每个用户组的进度?

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

        2
  •  0
  •   Community CDub    4 年前

    @彼得的回答绝对正确,让我再补充几句。

    在像高速公路上的车道这样的活动中心,我们使用车道系统来方便地通过交通,而不是创造一条大而宽的道路,当我们堵住一条车道时,并不意味着整个高速公路都被堵住了。

    enter image description here

    推荐文章