使用Azure IoT Hub和Event Hub

时间:2017-12-20 14:44:02

标签: azure-eventhub azure-iot-hub

我们正在构建物联网解决方案,我们需要在设备和云之间进行双向通信。

Azure IoT Hub似乎非常适合。

但是,对于我们需要的合理数量的传出消息(与Event Hub相比),定价非常苛刻。

所以我在考虑一种混合解决方案,其中Azure IoT Hub仅用于云到设备消息,而Event Hub将用于设备到云消息。

这是一个可行的解决方案吗?

2 个答案:

答案 0 :(得分:1)

事件中心已经在引擎盖下使用,但可以肯定,它可以完成。但是,根据the docs,存在细微差别。

设备到云消息传递的主要区别:

物联网中心

协议:支持MQTT,基于WebSockets的MQTT,AMQP,基于WebSockets的AMQP和HTTPS。此外,IoT Hub还与Azure IoT协议网关配合使用,这是一个可自定义的协议网关实现,可支持自定义协议。

设备SDK:除了直接的MQTT,AMQP和HTTPS API之外,还为各种平台和语言提供设备SDK。

活动中心

协议:支持AMQP,WebSockets上的AMQP和HTTPS。

设备SDK:除AMQP和HTTPS发送接口外,还支持.NET,Java和C.

然后在安全机制和消息路由方面存在差异(请参阅文档),因此如果使用事件中心需要您的要求,请说明一下。

摘要(来自文档)

  

总之,即使唯一的用例是设备到云的遥测入口,IoT Hub也提供专为物联网设备连接而设计的服务。它继续通过物联网特定功能扩展这些场景的价值主张。事件中心设计用于在数据中心间和数据中心内场景中进行大规模事件进入。

     

在同一解决方案中同时使用IoT Hub和Event Hubs并不罕见。 IoT Hub处理设备到云的通信,事件中心处理后期事件进入实时处理引擎。

答案 1 :(得分:0)

好吧,看来这个问题是很久以前提出的,但是我希望这对将来的某个人有帮助。

我相信为设备消息选择事件中心将导致失去IoT中心提供的以下功能:

  • 每个设备的身份:每个IoT中心都有一个身份注册表,该注册表存储有关允许连接到IoT中心的设备和模块的信息。在设备或模块可以连接到IoT中心之前,IoT中心的身份注册表中必须存在该设备或模块的条目。设备或模块还必须基于身份注册表中存储的凭据向IoT中心进行身份验证。
  • 设备供应服务:给定的IoT解决方案存储的设备数据取决于该解决方案的特定要求。但是,至少,解决方案必须存储设备身份和身份验证密钥。 Azure IoT中心包括一个身份注册表,该注册表可以存储每个设备的值,例如ID,身份验证密钥和状态代码。解决方案可以使用其他Azure服务(例如表存储,blob存储或Cosmos DB)来存储任何其他设备数据。设备配置是将初始设备数据添加到解决方案中的存储中的过程。要使新设备连接到集线器,必须将设备ID和密钥添加到IoT中心标识注册表。在供应过程中,您可能需要初始化其他解决方案存储中特定于设备的数据。您还可以使用Azure IoT集线器设备置备服务来为一个或多个IoT中心启用零接触,及时置备,而无需人工干预。要了解更多信息,请参阅预配服务文档。

  • 设备孪生和设备管理::设备孪生是JSON文档,用于存储设备状态信息,包括元数据,配置和条件。 Azure IoT中心为您连接到IoT中心的每个设备维护一个设备对。

  • IoT Edge :Azure IoT Edge将云分析和自定义业务逻辑移至设备,以便您的组织可以专注于业务洞察力而不是数据管理。通过将业务逻辑打包到标准容器中来扩展IoT解决方案,然后可以将这些容器部署到任何设备上,并从云中对其进行监视。
  • 设备心跳::IoT中心身份注册表包含一个名为connectionState的字段。仅在开发和调试期间使用connectionState字段。物联网解决方案不应在运行时查询该字段。例如,在发送云到设备的消息或SMS之前,请勿查询connectionState字段以检查设备是否已连接。我们建议在事件网格上订阅设备断开连接事件,以获取警报并监视设备连接状态。使用本教程来学习如何在IoT解决方案中集成来自IoT中心的设备已连接和设备已断开事件。

为了拥有一个低成本的解决方案,我认为您应该考虑发送一批遥测数据(这意味着将更少的设备发送到云消息),只要它仍然可以满足您的技术/功能要求。 / p>