Azure iot hub 设备到云分区的用途

Posted

技术标签:

【中文标题】Azure iot hub 设备到云分区的用途【英文标题】:purpose of Azure iot hub device-to-cloud partitions 【发布时间】:2017-08-30 19:51:19 【问题描述】:

在创建新的 Azure IOT Hub 时,系统会询问您需要多少个设备到云的分区。您可以为标准层选择 2-32 个分区。

我了解 SKU 和单位数量决定了您可以发送到 IOT Hub 的每日最大消息配额。并且建议将您的设备分片到多个 IOT 集线器以平滑流量突发。但是,设备到云的分区需要澄清。

1>>在单个 IOT 集线器下的这些设备到云分区的目的是什么?

2>> 我们应该如何利用这些 IOT Hub 设备到云分区?

谢谢。

【问题讨论】:

*** 中的分区说明:“分区在内部用于允许扩展 IoT(事件中心)并允许扩展消费者应用程序(从中心读取事件的应用程序)。我已经阅读了这个解释,这些分区的真正目的仍然不清楚。如果它们在内部使用,那么我们为什么要设置它们的大小?消费者应用程序(接收消息)如何使用这些分区?一个例子会很有帮助. 【参考方案1】:

1>> 那些设备到云分区的目的是什么? 单个物联网中心?

Partition 属性是为 Azure IoT 中心内置的与事件中心兼容的消息传递端点(消息/事件)设置的。从这里我们可以看出“分区”是属于Event Hub的一个概念。

事件中心旨在允许每个使用者组有一个分区读取器。消费者组中的单个分区在任何时候都不能连接超过 5 个并发读取器。更多的分区让您有更多的并发阅读器来处理您的数据,从而提高您的总吞吐量。

参考:Built-in endpoint: messages/events 和 How many partitions do I need?

2>> 我们应该如何利用这些 IOT Hub 设备到云端的分区?

事件中心有两个主要的事件消费模型:直接接收器和更高级别的抽象,例如 EventProcessorHost。直接接收者负责自己协调对消费者组内分区的访问。

参考:Event consumers.

有关 Azure 事件中心的分区模型的更多信息是 here。

【讨论】:

嗨@Rita 我有一个问题。如果我创建了一个有 2 个分区的 IoT Hub,我可以让 3 个消费者组读取这 2 个分区吗? @AndresCamacho 是的,您可以使用 3 个消费者组来读取 2 个分区,并且任何消费者组都可以读取所有 2 个分区。消费者组和分区之间没有直接关系。 我不明白当您回答 GHariz“事件中心旨在允许每个消费者组使用一个分区读取器。”时,我不明白的是,如果我在物联网中心有两个分区,每个分区只能被一个消费者组读取,所以如果我有三个消费者组,第三个消费者组不能读取任何分区。 @AndresCamacho 换句话说,您不能使用一个消费者组同时从两个实例中读取。例如,如果您使用资源管理器监视消费组“group1”中的 D2C 消息,而当您从同一消费组“group1”中的另一个程序读取 D2C 消息时,您将收到错误消息。要解决它,您需要为第二个程序创建一个新的消费者组。 这是关于分区主题的最新消息:每个消费者组的一个分区上最多可以有 5 个并发读者;但是,建议每个消费者组的分区上只有一个活动接收器。在单个分区内,每个阅读器都会接收所有消息。如果您在同一个分区上有多个阅读器,那么您将处理重复的消息。你需要在你的代码中处理这个问题,这可能不是微不足道的。但是,在某些情况下,这是一种有效的方法。来源:docs.microsoft.com/en-us/azure/event-hubs/event-hubs-features

以上是关于Azure iot hub 设备到云分区的用途的主要内容,如果未能解决你的问题,请参考以下文章

Azure IoT 技术研究系列2-设备注册到Azure IoT Hub

Azure IoT Hub和Event Hub相关的技术系列-索引篇

Azure IoT Hub IoT 设备页面显示权限错误

Azure IOT Edge 设备能否连接到多个 Azure IOT Hub?

我如何知道我在 Azure IoT Hub 中的设备是不是可以访问?

Azure IoT Hub 十分钟入门系列 - 实现从设备上传日志文件/图片到 Azure Storage