🎉smart-mqtt v0.19 发布:实现消息重发规范,提升通讯可靠性


1、smart-mqtt 简介

smart-mqtt,是smartboot组织下面向物联网的首款解决方案,它使用Java语言开发,提供高效、可靠的MQTT Broker服务。

smart-mqtt的独特优势在于大量设备接入的情况下,仍能保持低延迟和高吞吐量,满足物联网领域严苛的实时性需求。同时,smart-mqtt为了最大限度地节省硬件成本,采用了高度优化的资源管理策略,降低了系统运行时的CPU和内存占用,使企业在保持高性能的同时,大幅降低运维成本。

smartboot 开源组织,一个容易被误认为是在 “重复造轮子” 的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。

该组织内的明星项目包括:

  • smart-socket
    历时 5 年精炼出 2 千多行代码,轻松实现百万级长连接的 AIO 通信框架。

  • smart-http
    基于 smart-socket 实现的 HTTP/1.1 web 服务。

  • smart-servlet
    基于 smart-http 实现的 Servlet 3.1 容器服务。

  • smart-mqtt
    基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。

  • smart-flow
    一款具备可观测性的轻量级业务编排框架。

组织地址:?https://smartboot.tech/
代码仓库:?https://gitee.com/smartboot

2、 版本更新

随着物联网和智能设备的快速发展,消息传输的可靠性和实时性变得越来越重要。为了更好地满足这些需求,我们很高兴地宣布,smart-mqtt最新版本已经实现了消息重发的规范。这一重要改进将大大提高通讯可靠性,确保在不稳定的网络环境中,消息能够准确无误地传递到目标设备。

在之前的版本中,smart-mqtt在面对网络波动或设备掉线时,可能会出现消息丢失的情况,这将对用户体验造成很大影响。为解决这个问题,我们采用了MQTT协议中的消息重发规范,确保每条消息都能够成功发送。

1. 什么是消息重发规范?

消息重发规范是指在消息传输过程中,当发送方在规定的时间内没有收到接收方的确认消息时,将自动重新发送该条消息。这一规范的实现需要在发送方和接收方之间建立一个有效的确认机制,保证消息传输的可靠性。

2. 为什么消息重发规范如此重要?

在物联网和智能设备领域,消息的实时性和准确性至关重要。设想一下,如果你的智能家居系统在执行关灯操作时,由于网络原因导致关灯指令没有成功发送,那么这将直接影响到用户的使用体验。通过实现消息重发规范,我们可以确保即使在不稳定的网络环境中,指令也能够准确无误地传递给目标设备,从而提高整个系统的通讯可靠性。

3. smart-mqtt如何实现消息重发规范?

在smart-mqtt的最新版本中,我们对消息重发规范进行了如下实现:

  • 发送方在发送消息时,会为每条消息分配一个唯一的ID,并将此ID与消息一起发送给接收方。

  • 接收方收到消息后,会发送一个确认消息给发送方,确认消息中包含了收到的消息ID。

  • 发送方在收到接收方的确认消息后,会将对应的消息从重发队列中移除。

  • 如果发送方在规定的时间内没有收到接收方的确认消息,那么发送方会重新发送该条消息,直到收到确认消息为止。

通过这一机制,我们确保了smart-mqtt在面对网络波动或设备掉线等情况时,仍能够保持高度的通讯可靠性。

3、性能测试报告

  • 场景一:
    10 个 publisher 每隔 1 毫秒发送 payload 为 128 字节的消息,这些消息分布在 128 种 topic 下,有 2000 个 subscriber 订阅这些 topic 的消息。

  smart-mqtt emqx
QoS0 159W/s 18W/s
QoS1 105W/s 18W/s
QoS2 70W/s 17W/s
  • 场景二:

2000 个 publisher 每隔 1 毫秒发送 10 个 payload 为 128 字节的消息,这些消息分布在 128 种 topic 下。

  smart-mqtt emqx
QoS0 26W/s 19W/s
QoS1 23W/s 8W/s
QoS2 24W/s 6W/s

因为不了解 emq 的调优策略,测试过程或许存在不公平因素,结果仅供参考。

另外,这次发布的依旧是一个阶段性版本,其中可能存在一些其他小问题,所以暂时不推荐生产使用

4、如何获取 smart-mqtt

4.1 源码

  • 主仓库:https://gitee.com/smartboot/smart-mqtt

  • 镜像同步:https://github.com/smartboot/smart-mqtt

4.2 Maven 依赖

  • mqtt broker

<dependency>
<groupId>org.smartboot.mqtt</groupId>
<artifactId>smart-mqtt-broker</artifactId>
<version>0.19</version>
</dependency>
  • mqtt client

<dependency>
<groupId>org.smartboot.mqtt</groupId>
<artifactId>smart-mqtt-client</artifactId>
<version>0.19</version>
</dependency>

4.3 发行包

  • 社区版
    打开浏览器访问:https://gitee.com/smartboot/smart-mqtt/releases下载最新版。

  • 企业版
    成为项目赞助商,单独提供发行包(具体见下文)。

5. 关于 smart-mqtt 企业版

smart-mqtt 目前是由个人开发者在业余时间维护,暂无提供商业化服务的计划。

出于项目的可持续发展需要,我们在 smart-mqtt 社区版的基础上,丰富了一些企业级功能。如果贵公司认可 smart-mqtt 的价值,可以通过成为赞助商获得企业版授权。

功能特性

  1. 企业版 License 认证。授权过期将无法启动服务,但并不会因授权过期影响正在运行的 Broker。

  2. MQTT over WebSocket。

  3. Broker 集群部署。

  4. 管理后台

  5. ChatGPT OpenAPI 插件

  6. 指标数据持久化(H2、MySQL)

  7. 未完待续...

赞助商等级

  青铜赞助商 白银赞助商 黄金赞助商 铂金赞助商
赞助条件 加入企业支持计划 500 元 / 年 1500 元 / 年 5000 元 / 年
License 有效期 1 年 1 年 1 年 1 年
部署指导 - 1 次 1 次 不限次数
Logo 展示位 - 小号 中号 大号
首页 Logo 展示 - - -
技术支持 文档 邮件 /ISSUE 微信 / QQ / 邮件 微信 / QQ / 邮件

白银赞助商的价值:

  • 成本:500 元 / 年,相当于一名初中级程序员一天的薪资。

  • 产出效益:

    • 增加品牌曝光率。

    • 节省投入在 Sass 云服务中的巨额资费。

    • 结交更多物联网领域的从业者。

成为赞助商遵循双方自愿原则,我们会在能力范围内尽可能提供 smart-mqtt 相关的技术支持。与此同时因时间和精力有限,我们也并不希望由此带来额外的负担,影响到项目的正常迭代。

所以,如有疑问尽量通过 ISSUE 交流,或者通过 ISSUE 和官方文档自助寻找答案,还望理解~~

ISSUE:?https://gitee.com/smartboot/smart-mqtt/issue


相關推薦

2022-12-17

本次发布版本主要是针对 smart-mqtt 性能作了很大的提升。 另外受制于性那压测工具 emqx-bench 无法支持 arm 架构的服务器,我们自研了能够实现跨平台的 Java 版压测工具:smart-mqtt-bench。 一、关于 smart-mqtt smart-mqtt 是用 java 语言

2023-03-09

1、smart-mqtt 简介 smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 smartboot开源组

2023-01-16

1、smart-mqtt 简介 smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 smartboot开源组

2022-09-05

smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 一、更新内容 🎉 1.1 Features 🌈

2023-06-06

1、smart-mqtt 简介 smart-mqtt,是 smartboot 组织下面向物联网的首款解决方案,它使用 Java 语言开发,提供高效、可靠的 MQTT Broker 服务。 smart-mqtt 的独特优势在于大量设备接入的情况下,仍能保持低延迟和高吞吐量,满足物联网领

2022-12-06

一、关于 smart-mqtt smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 二、快速启动

2023-10-17

的前两天),相约开源PHP办公室,我们一起聊 AI!>>> 1、smart-mqtt 简介 smart-mqtt,是 smartboot 组织下面向物联网的首款解决方案,它使用 Java 语言开发,提供高效、可靠的 MQTT Broker 服务。 smart-mqtt 的独特优势在于大量设备接入的

2022-11-14

一、关于 smart-mqtt smart-mqtt 是用 java 语言开发的 MQTT Broker 服务,也是 smartboot 组织下首款真正意义上面向物联网的解决方案。旨在帮助企业以较低的成本快速搭建稳定、可靠的物联网服务,助力万物互联互通。 二、快速启动

2023-11-13

smart-mqtt v0.32 已经发布,MQTT Broker 服务。 此版本更新内容包括: 优化 Plugin 接口设计。 重构消息队列。 提供优雅停机能力。 提升 mqtt client 服务稳定性。 改进连接认证功能。 restapi 启用异步接口功能。 优化企业管

2023-10-09

一、更新内容简介 本次更新为次要版本更新,进行了若干优化(更新历史详见:码云 Release Notes)。MobileIMSDK 可能是市面上唯一同时支持 UDP+TCP+WebSocket 三种协议的同类开源IM框架。 二、MobileIMSDK简介 MobileIMSDK 是一

2023-07-26

象分类成多种运算场景,并对各种运算场景进行高性能的实现从而让每一种运算可以达到无限制复用的效果。 XL-LightHouse使用【统计工程-统计组-统计项】的三层结构来管理所有统计需求。每一个统计需求叫做一个统计项,每个

2023-07-18

频道等等。 功能特性 支持自定义消息 支持订阅/发布者模式 支持个人/群聊/客服/社区资讯频道 支持频道黑明单 支持频道白名单 支持消息永久漫游,换设备登录,消息不丢失 支持在线状态,支持同账号多设备同

2023-10-28

smart-servlet 基于 smart-http 实现的 Servlet 3.1 容器服务。 smart-mqtt 基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。 smart-flow 一款具备可观测性的轻量级业务编排框架。 组织地址:https://smartboot.tech/ 代码仓库:https://g

2024-03-05

解决黑名单无效的问题 增加ignoreMissingConfig配置 个人白名单默认设置成关闭 修复解除好友关系后还能聊天的问题 如果指定了配置文件的路径,如果配置文件不存在则程序应该崩溃 升级WuKongIM协议 slave设备如果deviceID