上篇博文中,我们介绍了Azure IoT Hub的使用配额和缩放级别:
Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别
本文中,我们比较一下Azure IoT Hub和Event Hub,同时启动Azure Event Hub(事件中心)的研究。
Azure IoT Hub的另一个主要应用场景是从设备侧接收遥测数据。 与 Azure IoT Hub一样,Azure Event Hub是一个事件处理服务,主要用于向云端提供大规模的事件与遥测数据入口,并且具有较低的延迟和较高的可靠性,其有点类似于Kafka作为Hadoop数据入口的场景,唯一不一样的是Azure Event Hub以事件为主要载体和抓手,Kafka更多是各种数据。在我们的实际应用场景中,Kafka作为监控数据、业务数据、设备侧数据的数据缓冲和入口。
回到正题,Azure IoT Hub和Azure Event Hub的主要不同有哪些:
1. 通信模式
Azure IoT Hub:启用设备到云通信(消息传递、文件上传及报告属性)和云到设备之间的通信(直接方法、所需属性、消息传递)
Azure Event Hub: 仅支持事件引入(通常视为设备到云的方案)
2. 设备状态管理
Azure IoT Hub:可存储和查询设备状态信息
Azure Event Hub: 不支持
3. 设备通信协议支持
Azure IoT Hub: 支持 MQTT、基于 WebSockets 的 MQTT、AMQP、基于 WebSockets 的 AMQP 和 HTTP。 此外,IoT 中心还可使用 Azure IoT 协议网关(一种可自定义协议网关实现)以支持自定义协议。
Azure Event Hub: 支持 AMQP、基于 WebSockets 的 AMQP 和 HTTP。
4. 安全
Azure IoT Hub:提供每个设备的标识与可吊销的访问控制权限
Azure Event Hub: 提供事件中心范围的共享访问策略,通过发布者策略提供有限的权限吊销支持
5. 弹性伸缩
Azure IoT Hub:支持数百万个设备同时连接
Azure Event Hub: 可支持的同时连接数具有更大的限制:根据 Azure 服务总线配额,最多只支持 5,000 个 AMQP 连接,另一方面,支持每个发送的消息指定分区
6. 设备SDK
Azure IoT Hub:除直接 MQTT、AMQP 和 HTTP API 外,还为各种平台和语言提供设备 SDK
Azure Event Hub: 在 .NET、Java、C 以及 AMQP 和 HTTP 发送接口上提供支持
Azure Event Hub: 不支持
综上,Azure IoT Hub主要处理设备到云、云到设备之间的通信,而Azure Event Hub处理的是将后期事件引入实时处理引擎,后者比较类似Kafka将数据写入Hadoop再进行大数据分析场景。
周国庆
2017/5/1