MQTT协议学习(一):概述

1. 参考文档

  • 官方文档:
    http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
  • 官方文档(中文版):
    http://mqtt.p2hp.com/mqtt311

2. 概述

基于TCP协议、发布/订阅协议,属于应用层协议。使用C/S架构,本质是一个消息转发协议。所有的客户端往服务器发送消息,然后服务端根据过滤规则,把消息再转发给符合条件的客户端。消息的传输是有序的、可靠的、双向的。

2.1 设备网络构成

设备主要有三种角色:代理(broker)、发布者(publisher)、订阅者(subscriber)。

  • 代理:服务端,是传输的桥梁,一个网络中通常只有一个。负责处理客户端的连接、订阅、发布。
  • 发布者:客户端,负责发布消息到代理,代理将数据转发给订阅者。
  • 订阅者:客户端,负责接收代理的转发消息。

用一个简单的例子表达三者的关系:出版社发行报纸给订阅了报纸的居民。

  1. 居民向邮局订阅报纸和杂志,邮局记录居民的信息。
  2. 出版社发行各种各样的报纸和杂志,送到邮局。
  3. 邮局根据订阅的信息,将对应的读物分发给对应的居民。

在上面这个例子中,出版社是发布者,邮局是代理,居民是订阅者。发布者并不需要知道订阅者的地址,订阅者也不需要知道发布者的地址。发布者和订阅者只需要知道代理的地址,并且只和代理进行信息交互。
上述三步是一个完整的消息传递流程:订阅 --- 发布 --- 转发。

接着上面的例子,出版社想进一步收集用户的意见。

  1. 出版社和邮局达成协议,希望邮局能转交用户的意见。
  2. 用户将意见收集表交给邮局回收。
  3. 邮局根据收集表所属的出版社,将收集表交给对应的出版社。

在这种情况下,居民是发布者,邮局是代理,出版社是订阅者。
上述三步也是一个完整的消息传递流程:订阅 --- 发布 --- 转发。
发布者和订阅者都属于客户端,一个客户端可以同时是订阅者和发布者。

3. 协议特点

  • 保持长连接,具有一定实时性
  • 适应高延时,偶尔断网
  • 支持高并发
  • 单次数据量小
  • 传输可靠
  • 提供不同QoS(服务优先级)

4. 适用场景

  • 适合需要实时控制的场合,尤其适合执行器
  • 长连接不适合低功耗
  • TCP协议栈比UDP对设备要求更高

你可能感兴趣的:(MQTT协议学习(一):概述)