🎉smart-mqtt v0.26 发布,挑战百万级连接量
1、smart-mqtt 简介
smart-mqtt,是 smartboot 组织下面向物联网的首款解决方案,它使用 Java 语言开发,提供高效、可靠的 MQTT Broker 服务。
smart-mqtt 的独特优势在于大量设备接入的情况下,仍能保持低延迟和高吞吐量,满足物联网领域严苛的实时性需求。同时,smart-mqtt 为了最大限度地节省硬件成本,采用了高度优化的资源管理策略,降低了系统运行时的 CPU 和内存占用,使企业在保持高性能的同时,大幅降低运维成本。
另外,mqtt 协议天然适合 IM 场景,需要打造企业级 IM 应用,smart-mqtt 同样是一个非常好的选择。
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 所能支撑的连接量极限。 在我看来,功能成熟之前去追求连接量的测试是一件无意义的行为。因为在海量连接场景下,任何一个细小的问题都会被无限放大,已致测试结果不理想。
在 v0.26 版本之前,根据经验评估 smart-mqtt 支撑单机十万级连接量应该毫无压力,而百万级估计不太可行。smart-mqtt 百万级长连接所面临的复杂性远远高于 smart-socket 的百万级长连接。毕竟当真的存在百万级连接量时,系统不仅仅要管理好百万级连接的IO调度资源,同时还需维护至少百万个定时任务和数百万个订阅关系。
而在 v0.26 版本中,通过引入 smart-socket 的低内存模式;基于时间轮的定时器;以及一系列的算法优化。最终将服务端与客户端进程同时运行在一台 16G 内存的环境下,实现了 30W 长连接的测试(见下图)。
MQTT Broker与Client的资源开销如下图。
熟悉 smart-socket 的朋友应该知道,当初 smart-socket 测试百万级长连接时服务端也仅消耗 3.1G 内存。而此处 samrt-mqtt 在 30W 连接的情况下就用了 3.6 G,可想而知在目前情况下要实现百万级长连接,至少需要为其预留 10G 内存。
通过分析dump内存,我们挖掘出了部分优化空间,或许下一阶段能在同样规格的环境下实现 50W 长连接,我们拭目以待。
更新内容
【社区版】
-
移除 commons-collections4 依赖,减少发行包大小。
-
新增 BROKER_CONFIGURE_LOADED 事件类型,当配置文件完成加载后触发。
-
新增系统环境变量:BROKER_LOWMEMORY、BROKER_MAXINFLIGHT,用于设置 Broker 启动参数。
-
支持启用低内存模式,提升百万连接场景下的资源使用率。
-
noConnectIdleTimeout 默认值调整至15秒
-
MqttClient 采用事件模型处理 Connect ACK消息。
-
提升MqttClient重连功能稳定性。
-
采用时间轮定时器替换JDK默认定时器。
3、性能测试报告
自 smart-mqtt 开源以来,社区中陆陆续续出现多款 MQTT Broker 项目。个人认为这是个非常好的现象,说明越来越多人意识到这个领域的价值。
而随着选择的增多,用户会关心这些 Broker 产品的横向比较结果;作为项目维护者,也期望从中看到相互之间的差距并作出改进。
然而,难免存在个别厂商会将此视为碰瓷、蹭流量的行为。为了消除同行顾虑,smart-mqtt 今后不再公布比较结果,但会提供比较方案供需要的用户自行验证。
-
场景一:
10 个 publisher 每隔 1 毫秒发送 payload 为 128 字节的消息,这些消息分布在 128 种 topic 下,有 2000 个 subscriber 订阅这些 topic 的消息。
smart-mqtt | emqx | BifroMQ | |
---|---|---|---|
QoS0 | 300W/s | - | - |
QoS1 | 160W/s | - | - |
QoS2 | 80W/s | - | - |
-
场景二:
2000 个 publisher 每隔 1 毫秒发送 10 个 payload 为 128 字节的消息,这些消息分布在 128 种 topic 下。
smart-mqtt | emqx | BifroMQ | |
---|---|---|---|
QoS0 | 93W/s | - | - |
QoS1 | 55W/s | - | - |
QoS2 | 40W/s | - | - |
4、如何获取 smart-mqtt
4.1 源码
4.2 Maven 依赖
-
mqtt broker
<dependency> <groupId>org.smartboot.mqtt</groupId> <artifactId>smart-mqtt-broker</artifactId> <version>0.26</version> </dependency>
-
mqtt client
<dependency> <groupId>org.smartboot.mqtt</groupId> <artifactId>smart-mqtt-client</artifactId> <version>0.26</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 集群部署。
-
管理后台
-
指标数据持久化(H2、MySQL)
-
数据桥接:redis、kafka
-
未完待续...
赞助商等级
青铜赞助商 | 白银赞助商 | 黄金赞助商 | 铂金赞助商 | |
---|---|---|---|---|
赞助条件 | 加入企业支持计划 | 500 元 / 年 | 1500 元 / 年 | 5000 元 / 年 |
License 有效期 | 1 年 | 1 年 | 1 年 | 1 年 |
部署指导 | - | 1 次 | 1 次 | 不限次数 |
Logo 展示位 | - | 小号 | 中号 | 大号 |
首页 Logo 展示 | - | - | - | ✅ |
技术支持 | 文档 | 邮件 /ISSUE | 微信 / QQ / 邮件 | 微信 / QQ / 邮件 |
白银赞助商的价值:
成本:500 元 / 年,相当于一名初中级程序员一天的薪资。
产出效益:
增加品牌曝光率。
节省投入在 Sass 云服务中的巨额资费。
结交更多物联网领域的从业者。
成为赞助商遵循双方自愿原则,我们会在能力范围内尽可能提供 smart-mqtt 相关的技术支持。与此同时因时间和精力有限,我们也并不希望由此带来额外的负担,影响到项目的正常迭代。
所以,如有疑问尽量通过 ISSUE 交流,或者通过 ISSUE 和官方文档自助寻找答案,还望理解~~

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
通用型流式数据统计系统 XL-LightHouse v1.0.5 发布
本次版本修改: 1、优化统计组字段限制修改策略。 2、修复重启时hbase组件服务长时间无法停止的问题。 一键部署,一行代码接入,无需大数据相关研发运维经验就可以轻松实现海量数据实时统计,使用XL-LightHouse后: 1、再也不需要用Flink、Spark、ClickHouse或者基于Redis这种臃肿笨重的方案跑数了; 2、再也不需要疲于应付对个人价值提升没有多大益处的数据统计需求了,能够帮助您从琐碎反复的数据统计需求中抽身出来,从而专注于对个人提升、对企业发展更有价值的事情; 3、轻松帮您实现任意细粒度的监控指标,是您监控服务运行状况,排查各类业务数据波动、指标异常类问题的好帮手; 4、培养数据思维,辅助您将所从事的工作建立数据指标体系,量化工作产出,做专业严谨的职场人,创造更大的个人价值; 概述 XL-LightHouse是针对互联网领域繁杂的流式数据统计需求而开发的一套集成了数据写入、数据运算、数据存储和数据可视化等一系列功能,支持超大数据量,支持超高并发的【通用型流式大数据统计平台】。 XL-LightHouse目前已基本涵盖了常见的流式数据统计场景,包括count、...
- 下一篇
夜莺项目发布v6.0.2版本,增强日志查看能力
简介 夜莺项目发布v6.0.2版本,增强了一些功能,修复了一些bug,访问夜莺下载中心下载体验。 升级内容 1. 仪表盘图表面板支持检查查询数据和图表配置 这是一个调试功能,很多小伙伴对于通过 chrome 开发者工具查看 HTTP 请求和响应不太熟悉。这个版本我们内置了这个调试功能,方便大家调试。 右键大盘图表,可以看到【排查】按钮,点击后会弹出一个窗口,里面包含了图表的配置和request、response。 通过这个调试功能,我们可以轻松看到请求的 promql,可以看到是instant query还是range query,可以看到返回的response,当然也可以看到图表的配置。 2. 订阅规则支持订阅业务组 这是一个非常重要的功能。有些公司对夜莺做了二次开发,把告警接收人和业务组强制绑定在一起,其实不够灵活,最灵活的方式是通过订阅规则,不过之前的版本,订阅规则只能根据事件标签和级别做订阅,v6.0.2版本开始,支持订阅业务组,更加灵活。比如我们让业务组Bigdata-Hadoop、Bigdata-ClickHouse的所有告警发给Bigdata团队,也可以根据事件级别做通知...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Hadoop3单机部署,实现最简伪集群
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Windows10,CentOS7,CentOS8安装Nodejs环境
- MySQL8.0.19开启GTID主从同步CentOS8