我的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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
10天前
|
数据可视化 关系型数据库 MySQL
嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化
通过本文的介绍,我们详细讲解了如何结合嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议,实现数据的采集、传输、存储和可视化。这种架构在物联网项目中非常常见,可以有效地处理和展示实时数据。希望本文能帮助您更好地理解和应用这些技术,构建高效、可靠的数据处理和可视化系统。
128 82
|
8天前
|
消息中间件 对象存储
轻量消息队列(原 MNS)订阅 OSS 事件实践
使用轻量消息队列订阅OSS事件,实时处理文件变动,赢取ins风U型枕(限量500个)。访问活动页面,完成实操并上传截图即可参与领奖。活动时间:即日起至2025年2月28日16:00。奖品数量有限,先到先得,快来报名吧!
|
1月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
|
2月前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
65 2
|
3月前
|
消息中间件 测试技术
通过轻量消息队列(原MNS)主题HTTP订阅+ARMS实现自定义数据多渠道告警
轻量消息队列(原MNS)以其简单队列模型、轻量化协议及按量后付费模式,成为阿里云产品间消息传输首选。本文通过创建主题、订阅、配置告警集成等步骤,展示了该产品在实际应用中的部分功能,确保消息的可靠传输。
81 2
|
4月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
111 5
|
4月前
|
消息中间件 JSON Java
开发者如何使用轻量消息队列MNS
【10月更文挑战第19天】开发者如何使用轻量消息队列MNS
317 11
|
4月前
|
消息中间件 安全 Java
云消息队列RabbitMQ实践解决方案评测
一文带你详细了解云消息队列RabbitMQ实践的解决方案优与劣
129 10
|
3月前
|
消息中间件 存储 Kafka
MQ 消息队列核心原理,12 条最全面总结!
本文总结了消息队列的12个核心原理,涵盖消息顺序性、ACK机制、持久化及高可用性等内容。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
|
4月前
|
消息中间件
解决方案 | 云消息队列RabbitMQ实践获奖名单公布!
云消息队列RabbitMQ实践获奖名单公布!