两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于可控動態(tài)路由可任意擴(kuò)展MQTT多集群的構(gòu)建方法及系統(tǒng)與流程

文檔序號:40642734發(fā)布日期:2025-01-10 18:49閱讀:1來源:國知局
基于可控動態(tài)路由可任意擴(kuò)展MQTT多集群的構(gòu)建方法及系統(tǒng)與流程

本發(fā)明涉及通信,具體涉及基于可控動態(tài)路由可任意擴(kuò)展mqtt多集群的構(gòu)建方法及系統(tǒng)。


背景技術(shù):

1、當(dāng)前物聯(lián)網(wǎng)應(yīng)用已經(jīng)成為互聯(lián)網(wǎng)之后的新的增長點(diǎn),而mqtt協(xié)議的輕量、簡單、開放等特點(diǎn),使得mqtt成為物聯(lián)網(wǎng)協(xié)議中的一個重要協(xié)議。當(dāng)前已有很多物聯(lián)網(wǎng)設(shè)備通過mqtt協(xié)議連接到mqtt?broker,再通過連接這些mqtt?broker的應(yīng)用來接收設(shè)備上報數(shù)據(jù),并遠(yuǎn)程管理和控制這些這些設(shè)備。整個應(yīng)用鏈中,mqtt?broker的能力也是其中最重要的一環(huán),相應(yīng)的很多mqtt?broker開源或閉源項目也隨之產(chǎn)生,有mosquitto,emqx,hivemq,vernemq等相對專業(yè)的項目,也有activemq,rabbitmq等帶有mqtt?broker能力的項目。

2、這些mqtt?broker項目有支持集群能力的也有不支持集群能力的,但即使支持集群能力的項目,也不能通過無限增加單個集群節(jié)點(diǎn)數(shù)的方式來增大集群承載能力;若簡單將多個獨(dú)立的emq?x集群放在同一個tcp負(fù)載均衡后面,對外暴露同一個域名或ip,mqtt客戶端所連接的集群將是隨機(jī)的,當(dāng)其他客戶端需要跟此客戶端通信時需要先確定其所在的集群。

3、為解決這個問題,業(yè)界也有一些技術(shù)產(chǎn)生,如cn114615277a采用的技術(shù)是:設(shè)備首次連接默認(rèn)集群,通過默認(rèn)集群下發(fā)二次連接的集群信息,設(shè)備接收該信息,斷開與默認(rèn)集群的連接,使用收到的信息二次連接到指定的集群。但這種方式存在兩個問題:(1)需要設(shè)備專門為此能力定制開發(fā),對于不支持該功能的存量設(shè)備無能為力;(2)設(shè)備需要兩次連接才能連接到指定mqtt?broker,增加了網(wǎng)絡(luò)開銷和壓力。


技術(shù)實現(xiàn)思路

1、針對上述存在的技術(shù)不足,本發(fā)明要解決的技術(shù)問題是提供基于可控動態(tài)路由可任意擴(kuò)展mqtt多集群的構(gòu)建方法及系統(tǒng),旨在解決目前mqtt?broker項目自帶集群能力不能無限擴(kuò)展、設(shè)備連接mqtt?broker多集群需要定制開發(fā),不能處理存量設(shè)備、設(shè)備需要兩次連接才能連接到指定mqtt?broker以及采用tcp負(fù)載均衡導(dǎo)致mqtt客戶端所連接的集群隨機(jī)節(jié)點(diǎn)隨機(jī)的問題。

2、為解決上述技術(shù)問題,本發(fā)明采用如下技術(shù)方案:本發(fā)明提供基于可控動態(tài)路由可任意擴(kuò)展mqtt多集群的構(gòu)建系統(tǒng),包括:

3、設(shè)備管理服務(wù)模塊,用于給設(shè)備分配歸屬的mqtt集群并將所述設(shè)備歸屬的mqtt集群信息寫入設(shè)備路由存儲模塊中;

4、mqtt集群ip管理器,用于管理和維護(hù)mqtt集群列表以及每個mqtt集群的節(jié)點(diǎn)ip列表,并將這些信息寫入設(shè)備路由存儲模塊中;

5、設(shè)備路由存儲模塊,用于儲存來自設(shè)備管理服務(wù)模塊和mqtt集群ip管理器中的信息;

6、mqtt反向代理網(wǎng)關(guān),用于作為設(shè)備接入的統(tǒng)一入口,在設(shè)備連接時解析連接請求報文并讀取設(shè)備路由存儲模塊中該設(shè)備應(yīng)連接的mqtt集群,并代理設(shè)備的連接請求,將其轉(zhuǎn)發(fā)到正確的mqtt集群節(jié)點(diǎn)。

7、進(jìn)一步地,采用tcp負(fù)載均衡網(wǎng)關(guān)作為mqtt反向代理網(wǎng)關(guān)。

8、進(jìn)一步地,所述設(shè)備歸屬的mqtt集群信息包括:設(shè)備到指定mqtt集群的路由、設(shè)備到指定mqtt集群內(nèi)具體節(jié)點(diǎn)的路由。

9、進(jìn)一步地,管理和維護(hù)mqtt集群列表以及每個mqtt集群的節(jié)點(diǎn)ip列表,并將這些信息寫入設(shè)備路由存儲模塊中包括:

10、配置新emqx?cluster名稱及訪問url;

11、定時向每個emqx?cluster讀取mqtt集群信息;

12、解析mqtt集群內(nèi)各節(jié)點(diǎn)ip信息;

13、將所述mqtt集群內(nèi)各節(jié)點(diǎn)ip信息寫入設(shè)備路由存儲模塊中。

14、進(jìn)一步地,所述mqtt反向代理網(wǎng)關(guān)在特定端口接收到tcp報文后,判斷是否是mqtt連接請求報文;

15、若是,則解析mqtt連接請求報文中的用戶名-密碼-客戶端id三元組,根據(jù)三元組部分信息或組合信息匹配的設(shè)備,分配設(shè)備歸屬的mqtt集群;

16、其中,若設(shè)備是第一次連接,則分配設(shè)備連接到歸屬的mqtt集群的其中一個節(jié)點(diǎn),

17、若設(shè)備非第一次連接,且原有節(jié)點(diǎn)還在歸屬的mqtt集群內(nèi),則連接原有節(jié)點(diǎn)。

18、進(jìn)一步地,在設(shè)備連接時解析連接請求報文并讀取設(shè)備路由存儲模塊中該設(shè)備應(yīng)連接的mqtt集群,并代理設(shè)備的連接請求,將其轉(zhuǎn)發(fā)到正確的mqtt集群節(jié)點(diǎn)包括:

19、11)設(shè)備連接mqtt反向代理網(wǎng)關(guān);

20、12)mqtt反向代理網(wǎng)關(guān)自定義插件處理新連接接入;

21、13)按mqtt協(xié)議連接請求,從數(shù)據(jù)傳輸接口讀取報文首字節(jié);

22、14)判斷首字節(jié)是否滿足mqtt連接請求報文特征;

23、若不滿足mqtt連接請求報文特征則退出;

24、若滿足mqtt連接請求報文特征,則讀取連接請求報文剩余字節(jié);

25、15)按剩余長度字節(jié)計算剩余長度;

26、16)從數(shù)據(jù)傳輸接口讀取完整連接請求報文的長度為1+剩余字節(jié)的字節(jié)數(shù)+剩余長度的字節(jié)數(shù);

27、17)解析mqtt連接的客戶端id長度,獲取客戶端id;

28、18)從連接請求報文解析連接標(biāo)識第1+剩余字節(jié)+8字節(jié)flag;

29、19)解析步驟18)中的flag判斷遺囑標(biāo)識willflag是否啟用;

30、若是,則解析遺囑主題長度,獲取遺囑主題;

31、若否,則解析mqtt連接的用戶名長度,獲取用戶名;

32、20)解析遺囑載荷長度,獲取遺囑載荷;

33、21)解析mqtt連接的密碼長度和客戶端id長度,獲取密碼和客戶端id;

34、22)根據(jù)用戶名-密碼-客戶端id三元組,從設(shè)備路由存儲模塊讀取該設(shè)備精準(zhǔn)路由以及獲取設(shè)備歸屬的mqtt集群名稱;

35、23)根據(jù)設(shè)備歸屬的mqtt集群名稱,獲取mqtt集群的所有節(jié)點(diǎn)的ip;

36、24)判斷所述設(shè)備精準(zhǔn)路由是否有值;

37、若所述設(shè)備精準(zhǔn)路由有值,則執(zhí)行步驟28);

38、若所述設(shè)備精準(zhǔn)路由沒有值,則執(zhí)行步驟25);

39、25)將用戶名-密碼-客戶端id三元組通過哈希算法計算出一個固定長度的哈希值,并根據(jù)所述哈希值對步驟23)中獲取到的mqtt集群的所有節(jié)點(diǎn)的ip進(jìn)行選擇;

40、26)將用戶名-密碼-客戶端id三元組和節(jié)點(diǎn)ip對應(yīng)關(guān)系寫入設(shè)備路由存儲模塊;

41、27)把連接請求報文轉(zhuǎn)發(fā)到步驟25)獲取的節(jié)點(diǎn)ip并結(jié)束;

42、28)判斷精準(zhǔn)路由的節(jié)點(diǎn)ip是否在步驟23)獲取到的節(jié)點(diǎn)ip里面,防止有節(jié)點(diǎn)ip變動;

43、若在步驟23)獲取到的節(jié)點(diǎn)ip里面,則執(zhí)行步驟27);

44、若不在步驟23)獲取到的節(jié)點(diǎn)ip里面,則執(zhí)行步驟29);

45、29)將用戶名-密碼-客戶端id三元組通過哈希算法計算出一個固定長度的哈希值,并根據(jù)所述哈希值對步驟23)中獲取到的mqtt集群的所有節(jié)點(diǎn)的ip進(jìn)行選擇;

46、30)用戶名-密碼-客戶端id三元組映射的步驟29)中獲取的哈希值之后匹配的節(jié)點(diǎn)ip寫入設(shè)備路由存儲模塊,并執(zhí)行步驟27)。

47、進(jìn)一步地,云端對設(shè)備下發(fā)控制指令流程包括:

48、選擇設(shè)備下發(fā)指令;

49、查找設(shè)備歸屬的mqtt集群;

50、根據(jù)設(shè)備歸屬的mqtt集群,找到對應(yīng)的通道服務(wù);

51、下發(fā)指令到對應(yīng)的通道服務(wù)。

52、基于可控動態(tài)路由可任意擴(kuò)展mqtt多集群的構(gòu)建方法,包括:

53、通過設(shè)備管理服務(wù)模塊給設(shè)備分配歸屬的mqtt集群并將所述設(shè)備歸屬的mqtt集群信息寫入設(shè)備路由存儲模塊中;

54、通過mqtt集群ip管理器管理和維護(hù)mqtt集群列表以及每個mqtt集群的節(jié)點(diǎn)ip列表,并將這些信息寫入設(shè)備路由存儲模塊中;

55、將mqtt反向代理網(wǎng)關(guān)作為設(shè)備接入的統(tǒng)一入口,在設(shè)備連接時解析連接請求報文并讀取設(shè)備路由存儲模塊中該設(shè)備應(yīng)連接的mqtt集群,并代理設(shè)備的連接請求,將其轉(zhuǎn)發(fā)到正確的mqtt集群節(jié)點(diǎn)。

56、本發(fā)明的有益效果在于:

57、1、本發(fā)明引入mqtt反向代理網(wǎng)關(guān),實現(xiàn)設(shè)備接入的無縫擴(kuò)展,快速存儲策略減輕壓力,確保高性能接入,優(yōu)化資源使用。

58、2、本發(fā)明設(shè)備無需改動,一次連接即可直達(dá)指定mqtt集群節(jié)點(diǎn),粘連特性維持?jǐn)?shù)據(jù)時序,提升用戶體驗,降低遷移成本。

59、3、本發(fā)明利用利用mqtt反向代理網(wǎng)關(guān)的插件能力,定制mqtt協(xié)議的路由邏輯,基于三元組實現(xiàn)精準(zhǔn)集群節(jié)點(diǎn)分配,解決隨機(jī)分配問題,確保連接的可靠性和數(shù)據(jù)一致性。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
兴义市| 汉中市| 中卫市| 扎鲁特旗| 金坛市| 民勤县| 长泰县| 江北区| 汉阴县| 五河县| 扎赉特旗| 荆州市| 共和县| 天气| 镶黄旗| 新乡县| 炎陵县| 南阳市| 眉山市| 洪江市| 石首市| 姚安县| 鄂温| 淮安市| 资中县| 洮南市| 沂南县| 阿克陶县| 涟源市| 育儿| 营口市| 秭归县| 闻喜县| 姜堰市| 鹿泉市| 马公市| 股票| 庆元县| 南宁市| 阿克苏市| 延边|