🎉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 源码
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 的价值,可以通过成为赞助商获得企业版授权。
功能特性
企业版 License 认证。授权过期将无法启动服务,但并不会因授权过期影响正在运行的 Broker。
MQTT over WebSocket。
Broker 集群部署。
管理后台
ChatGPT OpenAPI 插件
指标数据持久化(H2、MySQL)
未完待续...
赞助商等级
青铜赞助商 | 白银赞助商 | 黄金赞助商 | 铂金赞助商 | |
---|---|---|---|---|
赞助条件 | 加入企业支持计划 | 500 元 / 年 | 1500 元 / 年 | 5000 元 / 年 |
License 有效期 | 1 年 | 1 年 | 1 年 | 1 年 |
部署指导 | - | 1 次 | 1 次 | 不限次数 |
Logo 展示位 | - | 小号 | 中号 | 大号 |
首页 Logo 展示 | - | - | - | ✅ |
技术支持 | 文档 | 邮件 /ISSUE | 微信 / QQ / 邮件 | 微信 / QQ / 邮件 |
白银赞助商的价值:
成本:500 元 / 年,相当于一名初中级程序员一天的薪资。
产出效益:
增加品牌曝光率。
节省投入在 Sass 云服务中的巨额资费。
结交更多物联网领域的从业者。
成为赞助商遵循双方自愿原则,我们会在能力范围内尽可能提供 smart-mqtt 相关的技术支持。与此同时因时间和精力有限,我们也并不希望由此带来额外的负担,影响到项目的正常迭代。
所以,如有疑问尽量通过 ISSUE 交流,或者通过 ISSUE 和官方文档自助寻找答案,还望理解~~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Arctic 自动优化湖仓原理解析
Arctic 是一个开放式架构下的湖仓管理系统,在开放的 lceberg 数据湖格式之上, 提供更多面向流和更新场景的优化,以及一套可插拔的数据自优化机制和管理服务。 背景 湖数据与数据仓库都是常见的大数据存储系统。得益于其低廉的成本优势,数据湖一般用来存储海量的原始数据。原始数据经过清洗、标准化后会再导入到数据仓库中进行数据分析。数据在两个系统间流转无疑增加了额外的存储与维护开销。 近年来随着 Apache lceberg、Apache Hudi、Delta Lake 等数据湖表格式技术的不断发展使得直接在数据湖上构建一套统一的存储系统来满足所有的大数据存储需求成为可能。业界将这种直接建立在数据湖之上,却能同时覆盖数据湖与数据仓库存储场景的架构为湖仓一体(LakeHouse)。 然而开源表格式距离生产可用的湖仓一体架构还有着较大的鸿沟,在这个背景下网易在 2022 年开源了湖仓管理系统——Arctic。Arctic 是一个开放式架构下的湖仓管理系统,在开放的数据湖格式之上,Arctic 提供更多面向流和更新场景的优化,以及一套可插拔的数据自优化机制和管理服务。基于 Arctic 可以...
- 下一篇
layui-vue 1.11.4 发布,一个 Vue 3 UI 框架
更新内容: [修复] codesandbox 演示地址链接失效的问题。 [修复] color-picker 组件 modelValue 属性缺少响应式的问题。 [修复] @postcss/autoprefixer 产生的 fill-available to stretch 警告。 [修复] checkbox 组件 label 属性不启用时,icon 发生偏移的问题。 [修复] checkbox 组件在 table cell 中默认无法居中的问题。 [优化] input 组件 password 属性启用时的图标。 [优化] color-picker 组件 eyeDropper 属性启用时的图标。 [优化] checkbox 组件 label 标签与 icon 图标不居中对齐的问题。 [优化] checkbox 组件 size 属性启用时,不同尺寸下的 icon 大小。 [文档] transition 组件 time 属性的类型与默认值说明 更多详情:http://www.layui-vue.com 请查看 Changelog。 其他内容:正式开放 layui-vue 交流群
相关文章
文章评论
共有0条评论来说两句吧...