我的mqtt协议和emqttd开源项目个人理解(26) - 产品开发遇到的问题解答,关于订阅和上下线插件

简介: 我的mqtt协议和emqttd开源项目个人理解(26) - 产品开发遇到的问题解答,关于订阅和上下线插件

我 17:27


请问大咖们,之前群里提到“EMQ中CPU是公平分配给MQTT会话,大量pub消息到一个订阅,订阅不会拿到更多cpu,最终导致消息累积。”这个问题在emq v1和v2版本都存在吗?大概每秒发多少条数据就会出现这个现象?


大梁先生 17:53


这和机器配置有一定关系的 而且不要做这种设计呀 干嘛都投给一个topic


我 17:59


那应该怎么设计?因为我们的场景就是单一的行业,单一服务器订阅,然后数据呈现在web


大梁先生 17:59


如果真要这样做 就得把route中的hash分布改下 但是 这样就不能保证有序了


大梁先生 18:01


只是我个人看法 最好遵循emq的设计思想吧 可以再询问下大佬


我 18:02


难道是两万个终端publish,我后台就用两万个主题订阅?


大梁先生 18:05


一个不够你可以起100个 rewite规则对上不就好了


我 18:09


我还没有去了解rewrite的用途


大梁先生 18:10


@我?有没有觉得emq设计很强大 只是自己想的太少[呲牙]


我 18:11


是,emq思想很厉害


我 18:14


现在我的问题是两万客户端都是“x”主题,已经出货了,那怎么办


我 18:15


都是“x”主题publish发布,后台一个sub订阅所有


helloworld 18:17


没有其他的 主题,性能不是应该更高了吗?不需要查找主题。


柠檬先生 18:23


但是消息投递效率就低了,这样造成设备越多,投递就效率就越低,所有设备都收到了


大梁先生 18:23


他是阻塞到向另外一个服务发订阅消息那里了


柠檬先生 18:24


N对1的关系,CPU调度压力就大了


大梁先生 18:26


嗯嗯 而且 向别的服务发送也没必要用mqtt


helloworld 18:27


也是。下行就不行了。


我 18:27


那我的问题如何解决?已经出货了,都是“x”主题


helloworld 18:27


才两万个 少下行一些消息。应该问题不大把


我 18:28


要从长计议啊,未来还要出货


柠檬先生 18:29


你用消息组件吧


柠檬先生 18:29


不要订阅了


我 18:29


什么是消息组件?v2有这个功能?


柠檬先生 18:29


你是要收设备上报么


我 18:30



大梁先生 18:30


方法挺多的都要改代码


柠檬先生 18:30


V2支持各种差件


柠檬先生 18:30


插件


柠檬先生 18:30


没研发能力就花钱买商业的


我 18:30


不订阅怎么拿数据


柠檬先生 18:32


有publish钩子


柠檬先生 18:32


把消息转到消息中间件


我 18:36


中间件也要支持mqtt协议吧


我 18:36


kafka能支持mqtt?


柠檬先生 18:37


都支持的


柠檬先生 18:37


不用支持mqtt协议


柠檬先生 18:38


投到kafka就行


柠檬先生 18:38


坑也多


柠檬先生 18:38


[呲牙][呲牙][呲牙]


我 18:41


是的,我说觉得投到kafka应该不稳定,坑多多


陈先生 21:11


有个问题请教高人们,为什么冲突被挤下线不掉用disconnect这个钩子?


陈先生 21:13


我觉得不科学 被挤下线 也是下线,为什么disconnect 钩子就不掉用呢?基于什么考虑?


陈先生 21:15


本来想在离线狗子里面做些事情的,后来发现被挤下线的完全不进入disconnect钩子里面


我 21:17


是的,同问。我也发现了这个问题。不好统计在线和离线的终端数量


柠檬先生 21:18


挤下线,不影响数量吧


柠檬先生 21:18


重新上线了


我 21:18


就是hook那个插件钩子,捕获上下线的


柠檬先生 21:19



柠檬先生 21:19


你这样就不准了


柠檬先生 21:20


挤下线直接关了进程,走不到钩子里


柠檬先生 21:20


光靠这个不靠谱


我 21:21


那如何统计在线终端数目?


我 21:21


我目前仅仅在上线钩子 1,下线钩子-1


我 21:21


但是总不对


柠檬先生 21:26


用emq_modules模块,结合存储来做


柠檬先生 21:27


这是最准的


我 21:28


我当前的问题就是clientid反复重启上线,id冲突时,总是执行了connect 1,但是从不执行disconnect-1,导致越加越多。


陈先生 21:33


没调用钩子 这个现象知道,我好奇的是为什么不进入那个钩子?对被挤下线的客户端来说就是disconnect


Gilbert 21:34


不是 disconnect ,进程都关了,都没有走发送 disconnect 报文的步骤,这叫非正常断连


陈先生 21:36


被挤下线的 为什么会被认为非正常断?


我 21:37


是的,个人认为被挤下线,也应该走钩子的disconnect函数


Gilbert 21:37


因为没发送 disconnect 报文


Gilbert 21:38


mqtt 协议本身是有disconnect 报文来通知客户端连接断开的


Gilbert 21:38


emq 也做了


柠檬先生 21:42


Emq做的没错


柠檬先生 21:43


我们上千万设备都没出现过乱掉


[皱眉][皱眉] 21:45


[呲牙]360和惠普都开始用emq了,这公司马上就可以纳斯达克上市了


柠檬先生 21:47


所以说EMQ对MQTT生态贡献太大了


柠檬先生 21:48


上周参加MQTT TC会议,MQTT 5 基本定稿了


柠檬先生 21:48


但是几个主席都是IBM的,主推还是他们自家的HiveMQ


柠檬先生 22:07


MQTT 5 能做很多事情,物联网设备形态太多了


柠檬先生 22:12


物联网用的多的还有AMQP


柠檬先生 22:14


哈哈,是吧,MQTT 是IBM 90年代设计的,那个时候网络更烂,都能搞得定,说明MQTT还是够灵活稳定的


相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
8月前
|
数据采集 传感器 监控
Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
536 6
|
消息中间件 监控 数据挖掘
【有奖实践】轻量消息队列(原 MNS)订阅 OSS 事件实时处理文件变动
当你需要对对象存储 OSS(Object Storage Service)中的文件变动进行实时处理、同步、监听、业务触发、日志记录等操作时,你可以通过设置 OSS 的事件通知规则,自定义关注的文件,并将 OSS 事件推送到轻量消息队列(原 MNS)的队列或主题中,开发者的服务即可及时收到相关通知,并通过消费消息进行后续的业务处理。
349 97
|
数据可视化 关系型数据库 MySQL
嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化
通过本文的介绍,我们详细讲解了如何结合嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议,实现数据的采集、传输、存储和可视化。这种架构在物联网项目中非常常见,可以有效地处理和展示实时数据。希望本文能帮助您更好地理解和应用这些技术,构建高效、可靠的数据处理和可视化系统。
826 82
|
11月前
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
2325 0
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
341 1
|
消息中间件 对象存储
轻量消息队列(原 MNS)订阅 OSS 事件实践
使用轻量消息队列订阅OSS事件,实时处理文件变动,赢取ins风U型枕(限量500个)。访问活动页面,完成实操并上传截图即可参与领奖。活动时间:即日起至2025年2月28日16:00。奖品数量有限,先到先得,快来报名吧!
351 2
|
10月前
|
消息中间件 数据管理 Serverless
阿里云消息队列 Apache RocketMQ 创新论文入选顶会 ACM FSE 2025
阿里云消息团队基于 Apache RocketMQ 构建 Serverless 消息系统,适配多种主流消息协议(如 RabbitMQ、MQTT 和 Kafka),成功解决了传统中间件在可伸缩性、成本及元数据管理等方面的难题,并据此实现 ApsaraMQ 全系列产品 Serverless 化,助力企业提效降本。
|
8月前
|
消息中间件 Java Kafka
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
本文深入解析了 Kafka 和 RabbitMQ 两大主流消息队列在 Spring 微服务中的应用与对比。内容涵盖消息队列的基本原理、Kafka 与 RabbitMQ 的核心概念、各自优势及典型用例,并结合 Spring 生态的集成方式,帮助开发者根据实际需求选择合适的消息中间件,提升系统解耦、可扩展性与可靠性。
579 1
消息队列比较:Spring 微服务中的 Kafka 与 RabbitMQ
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
1057 98
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
522 113