# z-mqtt **Repository Path**: zhangjun-1998/z-mqtt ## Basic Information - **Project Name**: z-mqtt - **Description**: MQTT协议的Broker端实现,单机最低可支持2w+并发连接数,支持SSL加密及WebSocket连接。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-03-11 - **Last Updated**: 2025-02-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # z-mqtt

目录

* [简介](#一简介) * [项目结构](#二项目结构) * [技术栈](#三技术栈) * [功能特性](#四功能特性) * [性能相关](#五性能相关) * [问题](#六问题) * [致谢](#七致谢) * [关于](#八关于) ### 一、简介 z-mqtt是一款轻量级的MQTT Broker,作为MQTT发布/订阅的核心,接收Publisher的消息,并发送给相应的Subscriber。总的来说其作用与Eclipse的Mosquitto相似,但是z-mqtt可以承载更高的并发连接数,并且支持横向扩展。 ### 二、项目结构 ``` z-mqtt ├─z-mqtt-broker -- broker核心功能实现 ├─z-mqtt-common -- 通用模块及接口 └─z-mqtt-store -- 主题、订阅、消息等存储 ``` ### 三、技术栈 + SpringBoot + Netty + Redis(可选) + RocketMQ(可选) ### 四、功能特性 + [x] 支持MQTT协议v3.1及v3.1.1版本,暂不支持v5.0版本 + [x] 支持0、1、2三个等级的Qos + [x] 支持遗嘱、Retain消息 + [x] 支持心跳机制 + [x] 支持客户端认证 + [x] 支持SSL加密 + [x] 支持WebSocket连接 + [x] 支持使用通配符(+、#)进行主题过滤,完全实现v3.1.1版本通配符相关规范 + [ ] 支持接入不同类型的MQ,如RocketMQ、RabbitMQ、Kafka等 + [ ] 支持大量连接断开时进行邮件、短信告警 + [ ] 支持集群横向扩展 注:最后三个功能点的前两点已经基本完成设计,目前没有时间实现,应该会在下个版本更新时加上。最后一个集群扩展功能也设计了几种方案,但是没有达到我的理想方案,会放在下文问题中。 ### 五、性能相关 + 单机环境下最少可以支持20000并发连接,上限暂时没有进行测试。 + 内存占用较低,暂未发现内存泄露问题 ### 六、问题 关于集群方面的方案还在考虑,目前想到的有以下几个方案,但不符合心理预期: 1. 不引入中间件,在broker之间进行数据同步 2. 使用Redis进行数据共享,无需broker互相通信 3. 使用MQ进行广播 以上三个方案我倾向的是方案一,因为无需引入第三方工具,毕竟是作为一款轻量级的MQTT Broker。如果有其它好的方案希望您与我联系,也可以直接提issue。 ### 七、致谢 + [Mr.Wang](https://gitee.com/recallcode) ### 八、关于 我是2020届本科通信工程专业毕业,大学自学计算机然后如愿的成为了一个不知名的Java开发,喜欢读书,喜欢开源,梦想打造一套属于自己的智能家居,一起加油吧。 有兴趣的可以看下我的另一个项目,用于实现内网穿透:[zrp](https://github.com/zhangjun1998/zrp) Email:zhangjun_java@163.com QQ:1097653004