EdgeX Foundry初体验(六)--协议介绍:MQTT
1,MQTT 介绍
(1)MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是 IBM 开发的一个即时通讯协议,它是一种轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
(2)MQTT 具有协议简洁、小巧、可扩展性强、省流量、省电等优点,比较适合于在低带宽、不可靠的网络的进行远程传感器和控制设备通讯等,正在日益成为物联网通信协议的重要组成部分。
2,MQTT 特性
MQTT 协议工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
(1)使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合。
(2)对负载内容屏蔽的消息传输。
(3)使用 TCP/IP 提供网络连接。
- 主流的 MQTT 是基于 TCP 连接进行数据推送的,但是同样有基于 UDP 的版本,叫做 MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。
(4)有三种消息发布服务质量:
- “至多一次”:消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。这一种方式主要普通 APP 的推送,倘若你的智能设备在消息推送时未联网,推送过去没收到,再次联网也就收不到了。
- “至少一次”:确保消息到达,但消息重复可能会发生。
- “只有一次”:确保消息到达一次。在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的 APP 的推送,确保用户收到且只会收到一次。
(5)小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。
- 这就是为什么在介绍里说它非常适合“在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱,使用这种协议来传递消息再适合不过了。
3,实现方式
(1)实现 MQTT 协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT 协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中:
- 消息的发布者和订阅者都是客户端
- 消息代理是服务器
- 消息发布者可以同时是订阅者
(2)MQTT 传输的消息分为:主题(Topic)和负载(payload)两部分:
- Topic:可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload);
- payload:可以理解为消息的内容,是指订阅者具体要使用的内容。
4,MQTT 发布订阅模式简述
(1)MQTT 是发布订阅(Publish/Subscribe) 模式的消息协议,与 HTTP 协议请求响应(Request/Response) 模式不同。
(2)MQTT 发布者与订阅者之间通过“主题”(Topic) 进行消息路由,主题(Topic) 格式类似 Unix 文件路径,例如:
MQTT 主题(Topic) 支持’+’, ‘#’的通配符:
- +:通配一个层级
- #:通配多个层级(必须在末尾)
1
2
3
4
5
6
7
8
9
10
11
|
sensor/1/temperature chat/room/subject presence/user/feng sensor/1/ # sensor/+/temperature uber/drivers/joe/inbox
|
作者:horizonli
出处:http://www.cnblogs.com/horizonli/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果您认为文章还不错或者有所收获,您可以通过扫描下方的二维码进行随性打赏(¥1/¥2/¥5)以及点击左下角的【好文要顶】按钮以示支持,或者扫描关注即将写作的公众号二维码,因为这几种方式都是支持我继续写作,分享的最大动力!公众号将记录工作生活,技术内容,个性观点等内容,欢迎您的关注
出处:http://www.cnblogs.com/horizonli/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
支付宝(alipay) 二维码打赏 |
微信(wechat) 二维码打赏 JUST LI(**波) |
微信公众号: 木子李的菜田 |