我 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还是够灵活稳定的