0%

MQTT-Broker选型

文章字数:559,阅读全文大约需要2分钟

MQTT是一个互联网协议,基于这个协议有很多的实现。

一、MQTT Broker的需求

1.1 基本需求

  1. 支持mqtt3.1 / mqtt3.1.1可选mqtt5.0协议
  • 3.13.1.1是常见的协议版本,几乎生产的IOT设备都支持,5.0普及可能还要一段时间。
  1. 支持QOS0QOS1可选QOS2
  • 各大厂商至少都支持了QOS1,能够保证信息的必到达。
  1. 支持遗嘱信息:即设备异常断开后通知后端服务或者其他设备处理

  2. 支持持久化:比如QOS1的消息,设备因为网络原因接收不到或者异常断线,需要把未发送的信息保存在session中。

  3. 支持多种连接方式

  • MQTT over TCP: 最基本的连接方式
  • MQTT over Webscoket: 基于Websocket连接的MQTT
  • MQTT over TCP/SSL: 基础连接之上做了加密,一般采用TLS加密
  • MQTT over Websocket/SSL: 基于Websocket的加密连接,一般SSL采用TLS
  1. 集群
  • 需要海量的连接需要支持集群,集群的session持久化和集群通信都是难点。
  • 集群信息共享,可以保证某个节点宕机时功能还能正常使用,但是未发送的信息可能会丢失。
  1. 自定义权限验证
  • 连接阶段是否允许连接
  • 发送阶段判断是否允许发送
  • 订阅阶段是否允许订阅
  • 大部分开源Broker只支持userNamePassword的验证。ClientIdIp不一定支持

1.2 可选需求

  1. 保留信息
  • 保留信息就是主题会依照QOS级别保留最后一条消息,当有新的订阅时会发送这条消息
  • 主要应对订阅之后不知道第一条信息何时会发送的情况。如获取设备状态,设备如果不发送信息新加进来的管理端就无法获得状态信息,不知道如何显示。如果这个时候有一条保留信息,就能够知道当前设备状态。
  • 开销较大,每次订阅主题都需要检查有没有保留消息。