Mqtt 系列:开篇

MQTT 协议是物联网中用于设备接入的一个重要协议,该序列文章将介绍 MQTT 协议相关的知识点,并在 Moquette 开源项目基础上实现一个集群版的 MQTT Broker 服务器,以供学习的目的使用。

这个序列包含如下内容:

1. 整体架构
内容包括 MQTT Broker 包含的模块、参与的角色、整体流程及相关的数据等等。

2. QoS
MQTT 协议提供了 3 种消息服务质量等级(Quality of Service),保证了在不同的网络环境下消息传递的可靠性。

3. Clean Session
MQTT 可以设置是否持久化 Session 数据,这样可以保证终端断线之后重新上线可以恢复之前的 Session 数据,这个功能可以通过 Clean Session 设置。

4. Retain Message
MQTT 可以设置 Topic Retain 消息,每当有新的订阅关系匹配时,所属的新终端便会收到该 Retain 消息。如果有需要在新建订阅时,推送一些初始化信息,可以使用该功能。

5. Will
MQTT 提供了遗嘱 Will 功能,可以在终端异常下线时,向特定的 Will Topic 发送指定的 Will Message, 从而让第三方感知终端的异常下线。

6. Subscription & CTrie
Moquette 中使用类似 Trie (单词查找树) 的数据结构来实现 Topic 的匹配,通过该数据结构可以实现消息的定位及路由。

7. 集群间通信
每一个 MQTT 节点只负载了部分客户端,要实现消息在集群中不同客户端间的传递,必须要实现集群间的消息共享,在项目中能,通过搭建一个 RPC 的通信网络实现消息的内部传递。

8. 持久化
讲述在 MQTT Broker 中数据如何进行持久化操作,包括什么数据需要进行持久化 (WHO) 以及怎么进行持久化操作 (HOW)

9. 服务加载
借助 Java 内置的服务加载功能,实现不同集群模式、不同数据库/缓存组件的按需加载。

10. Metric 指标
定义 MQTT Broker 不同维度的 Metric 指标,可以实时检查其内部的运行情况,方便服务的运维监控。

12. 部署方式
提供多种部署方式,包括1)单 Jar 包部署模式;2)Docker 单实例模式;3)Docker compose 单机集群模式。

文章列表

1. Mqtt 序列:整体架构
2. Mqtt 序列:QoS
3. Mqtt 序列:Clean Session
4. Mqtt 序列:Retain Message
5. Mqtt 序列:Will
6. Mqtt 序列:Subscription & CTrie
7. Mqtt 序列:集群间通信
8. Mqtt 序列:持久化
9. Mqtt 序列:服务加载
10. Mqtt 序列:SSL
11. Mqtt 序列:Docker 部署
12. Mqtt 序列:工程结构
13. Mqtt 序列:Metric 指标