每一个 MQTT
结点只负载了部分客户端,要实现消息在集群中不同客户端间的传递,必须要实现集群间的消息共享。本文便是介绍其中的实现方式。
Mqtt 序列:Retain Message
MQTT 可以设置 Topic
Retain
消息,每当有新的订阅关系匹配时,所属的新终端便会收到该 Retain
消息。如果有需要在新建订阅时,推送一些初始化信息,可以使用该功能。
Mqtt 序列:Clean Session
MQTT 可以设置是否持久化 Session 数据,这样可以保证终端断线之后重新上线可以恢复之前的 Session 数据。这个功能可以通过 Clean Session
设置。
Mqtt 序列:MQTT 整体架构
参考现有一些厂商 MQTT
Broker 的实现,发现大部分都要依赖于外部系统 MQ 来实现消息的存储或转发,MQTT
Broker 仅用于终端的接入及协议的解析。在这种架构下,各结点可方便进行扩展,可应对大规模终端的接入。在小规模(几十万)的场景下,这个架构相对比较复杂。本文的目的主要是实现一个架构相对比较紧凑,且易于学习的 MQTT
Broker 服务器,该服务器不用依赖于外部系统 MQ , 自带消息的集群路由功能。