物联网(IoT)连接协议-MQTT
物联网
(IoT) 设备必须连接互联网。通过连接到互联网,设备就能相互协作,以及与后端服务协同工作。互联网的基础网络协议是 TCP/IP。MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的,已成为 IoT 通信的标准。
MQTT(Message
Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。其具有协议简洁、小巧、可扩展性强、省流量、省电等优点,而且已经有PHP,JAVA,Python,C,C#,Go等多个语言版本,基本可以使用在任何平台上,几乎可以把所有联网物品和外部连接起来,所以特别适合用来当做物联网的通信协议。
相比HTTP协议不适合大规模的物联网应用,这是因为:
HTTP 是一种同步协议。客户端需要等待服务器响应,依赖较高的网络信号质量。
-
HTTP 是单向的。客户端必须发起连接。在 IoT 应用程序中,设备或传感器通常是客户端,这意味着它们无法被动地接收来自网络的命令。
-
HTTP 是一种
1-1 协议。客户端发出请求,服务器进行响应。将消息传送到网络上的所有设备上,不但很困难,而且成本很高,而这是
IoT 应用程序中的一种常见使用情况。
HTTP 是一种有许多标头和规则的重量级协议。它不适合受限的网络。
MQTT特点
MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
- 使用发布/订阅消息模式,一个发布者可以对应多个订阅者,当发布者发生变化的时候,他可以将消息一一通知给所有的订阅者。这种模式提供了更大的网络扩展性和更动态的网络拓扑。因为 MQTT 消息是按主题进行组织的,所以应用程序开发人员能灵活地指定某些客户端只能与某些消息交互。
根据 MQTT 的基础了解后并结合简单的架构,在这里做一个简单的示例图,可以更直观的理解MQTT协议的通信模型。MQTT Broker 就选择 EMQ 作为示范。比如有1个温度传感器(1个Machine),1个移动设备,1个电脑,一个服务器(3个Machine),都可以得到或者显示温度传感器的温度值,需要先通过 MQTT协议subscribe(订阅)一个比如叫 temperature 的 topic(主题)如下图:
图中移动设备,服务器,电脑需要先通过 EMQ subscribe 一个叫 temperature 的 topic,当温度传感器 publish 温度数据,三个设备就可以收到了。
2.对负载内容屏蔽的消息传输;
3.使用 TCP/IP 提供网络连接;
4.有三种消息发布服务质量:
l
“至多一次”,消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通APP的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
l
“至少一次”,确保消息到达,但消息重复可能会发生。这一级别可用于如下情况,你需要获得每一条消息,并且消息重复发送对你的使用场景无影响。
l
“只有一次”,确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。
5.小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。它有一个用来指定消息类型的简单标头,有一个基于文本的主题,还有一个任意的二进制有效负载。应用程序可对有效负载采用任何数据格式,比如 JSON、XML、加密二进制或
Base64,只要目标客户端能够解析该有效负载;
6.使用 Last Will 和
Testament 特性通知有关各方客户端异常中断的机制。
奇迹物联作为专注eSIM 技术的物联网公司,发布的AM20E,AM21E,AM400E等NB/LTE模组,支持包括MQTT协议在内的多种通信协议,客户借助eSIM模组,可将物联网终端设备部署在私有服务器上,也可在阿里云,OneNET等公有云平台上部署,我公司提供丰富的产品开发资料和程序例程,帮助用户实现项目快速落地。
netty入门 Netty入门教程——认识Netty Netty入门教程2——动手搭建HttpServer Netty入门教程3——Decoder和Encoder Netty入门教程4——如何使用Socket在客户端实现长连接 其他基础知识 IO相关 Tomc…