天天看點

我的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”主題

才兩萬個 少下行一些消息。應該問題不大把

我 18:28

要從長計議啊,未來還要出貨

檸檬先生 18:29

你用消息元件吧

不要訂閱了

我 18:29

什麼是消息元件?v2有這個功能?

你是要收裝置上報麼

我 18:30

大梁先生 18:30

方法挺多的都要改代碼

檸檬先生 18:30

V2支援各種差件

插件

沒研發能力就花錢買商業的

不訂閱怎麼拿資料

檸檬先生 18:32

有publish鈎子

把消息轉到消息中間件

我 18:36

中間件也要支援mqtt協定吧

kafka能支援mqtt?

檸檬先生 18:37

都支援的

不用支援mqtt協定

檸檬先生 18:38

投到kafka就行

坑也多

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

我 18:41

是的,我說覺得投到kafka應該不穩定,坑多多

陳先生 21:11

有個問題請教高人們,為什麼沖突被擠下線不掉用disconnect這個鈎子?

陳先生 21:13

我覺得不科學 被擠下線 也是下線,為什麼disconnect 鈎子就不掉用呢?基于什麼考慮?

陳先生 21:15

本來想在離線狗子裡面做些事情的,後來發現被擠下線的完全不進入disconnect鈎子裡面

我 21:17

是的,同問。我也發現了這個問題。不好統計線上和離線的終端數量

檸檬先生 21:18

擠下線,不影響數量吧

重新上線了

我 21:18

就是hook那個插件鈎子,捕獲上下線的

檸檬先生 21:19

你這樣就不準了

檸檬先生 21:20

擠下線直接關了程序,走不到鈎子裡

光靠這個不靠譜

我 21:21

那如何統計線上終端數目?

我目前僅僅在上線鈎子 1,下線鈎子-1

但是總不對

檸檬先生 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 封包來通知用戶端連接配接斷開的

emq 也做了

檸檬先生 21:42

Emq做的沒錯

檸檬先生 21:43

我們上千萬裝置都沒出現過亂掉

[皺眉][皺眉] 21:45

[呲牙]360和惠普都開始用emq了,這公司馬上就可以納斯達克上市了

檸檬先生 21:47

是以說EMQ對MQTT生态貢獻太大了

檸檬先生 21:48

上周參加MQTT TC會議,MQTT 5 基本定稿了

但是幾個主席都是IBM的,主推還是他們自家的HiveMQ

檸檬先生 22:07

MQTT 5 能做很多事情,物聯網裝置形态太多了

檸檬先生 22:12

物聯網用的多的還有AMQP

檸檬先生 22:14

哈哈,是吧,MQTT 是IBM 90年代設計的,那個時候網絡更爛,都能搞得定,說明MQTT還是夠靈活穩定的

繼續閱讀