Code Monkey home page Code Monkey logo

z-mqtt's Introduction

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(可选)

四、功能特性

  • 支持MQTT协议v3.1及v3.1.1版本,暂不支持v5.0版本
  • 支持0、1、2三个等级的Qos
  • 支持遗嘱、Retain消息
  • 支持心跳机制
  • 支持客户端认证
  • 支持SSL加密
  • 支持WebSocket连接
  • 支持使用通配符(+、#)进行主题过滤,完全实现v3.1.1版本通配符相关规范
  • 支持接入不同类型的MQ,如RocketMQ、RabbitMQ、Kafka等
  • 支持大量连接断开时进行邮件、短信告警
  • 支持集群横向扩展

注:最后三个功能点的前两点已经基本完成设计,目前没有时间实现,应该会在下个版本更新时加上。最后一个集群扩展功能也设计了几种方案,但是没有达到我的理想方案,会放在下文问题中。

五、性能相关

  • 单机环境下最少可以支持20000并发连接,上限暂时没有进行测试。

  • 内存占用较低,暂未发现内存泄露问题

六、问题

关于集群方面的方案还在考虑,目前想到的有以下几个方案,但不符合心理预期:

  1. 不引入中间件,在broker之间进行数据同步
  2. 使用Redis进行数据共享,无需broker互相通信
  3. 使用MQ进行广播

以上三个方案我倾向的是方案一,因为无需引入第三方工具,毕竟是作为一款轻量级的MQTT Broker。

七、致谢

八、关于

2020届本科通信工程毕业,大学自学计算机然后如愿的成为了一个不知名的Java开发,喜欢读书,喜欢开源,想找时间做一套定制化的智能家居,一起加油吧。

有兴趣的可以看下我的另一个项目,用于实现内网穿透:zrp

Email:[email protected]

微信:rzy-zj(备注Github=>zmqtt)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.