MQTT協(xié)議原理及優(yōu)缺點

截屏2023-08-07 20.21.19.png

MQTT協(xié)議工作原理

1639963320775691.png

MQTT是一種輕量級的消息傳輸協(xié)議记某,常用于物聯(lián)網(wǎng)設備之間的通信。MQTT協(xié)議工作原理基于發(fā)布/訂閱模式啊犬,它允許設備之間通過中間代理服務器進行通信虎锚,從而實現(xiàn)設備之間的數(shù)據(jù)交換。MQTT協(xié)議的工作原理可以分為三個主要部分:發(fā)布者朴乖、代理服務器訂閱者祖屏。發(fā)布者是指發(fā)送消息的設備,訂閱者是指接收消息的設備买羞,代理服務器則是連接發(fā)布者和訂閱者的中間件袁勺。在MQTT協(xié)議中,發(fā)布者將消息發(fā)布到代理服務器上畜普,代理服務器將消息存儲在一個稱為主題(Topic) 的邏輯容器中期丰。主題是一種標識消息類型的字符串,它被訂閱者用來過濾消息吃挑。訂閱者可以訂閱一個或多個主題钝荡,以接收與其相關的消息。當發(fā)布者發(fā)布一條消息時舶衬,它將消息發(fā)送到代理服務器埠通,并指定一個主題。代理服務器將消息存儲在與主題相關聯(lián)的隊列中逛犹,然后將消息發(fā)送給所有訂閱了該主題的訂閱者端辱。訂閱者可以選擇接收所有消息,或者只接收特定類型的消息虽画。MQTT協(xié)議的工作原理還涉及到QoS(Quality of Service) 級別舞蔽。QoS級別用于控制消息的可靠性和傳輸速度。MQTT協(xié)議支持三種QoS級別:0码撰、1和2渗柿。QoS 0表示消息不需要確認,QoS 1表示消息需要確認灸拍,QoS 2表示消息需要確認并且保證只被傳輸一次做祝±。總的來說鸡岗,MQTT協(xié)議的工作原理非常簡單,它通過發(fā)布/訂閱模式實現(xiàn)設備之間的通信编兄。MQTT協(xié)議的輕量級設計使得它非常適合于物聯(lián)網(wǎng)設備之間的通信轩性,同時也使得它具有很好的可擴展性和靈活性。

MQTT協(xié)議的優(yōu)點

  • 低協(xié)議開銷狠鸳。MQTT的獨特功能是每個消息頭都可以縮短為2個字節(jié)揣苏。對于HTTP為每個新請求消息重新建立HTTP連接會產(chǎn)生可觀的開銷悯嗓。 MQ和MQTT使用的持久連接可以大大節(jié)省這種開銷。
  • 包容不穩(wěn)定的網(wǎng)絡卸察。MQTT和MQ可以從諸如斷開連接之類的故障中恢復脯厨,無需進一步的代碼要求。但是HTTP本身無法實現(xiàn)此目標坑质,并且客戶端必須重試編碼合武,這會增加身份問題。
  • 低功耗涡扼。MQTT專為低功耗目標而設計稼跳。 HTTP設計未考慮此因素,這會增加功耗吃沪。
  • 能為數(shù)百萬個客戶端提供連接汤善。在連接數(shù)百萬個客戶端的情況下,在HTTP堆棧中維護數(shù)百萬個并發(fā)連接需要大量工作才能提供支持票彪。盡管這種支持是可行的红淡,但大多數(shù)商業(yè)產(chǎn)品都經(jīng)過優(yōu)化以處理此訂單上的持久連接。 IBM提供了IBM MessageSight降铸,這是一種單機架安裝服務器锉屈,已經(jīng)過測試,可以通過MQTT處理多達一百萬個并發(fā)設備垮耳。相反颈渊,MQ不是為許多同時進行的客戶設計的。
  • 推送通知终佛。您需要能夠及時向客戶發(fā)送通知俊嗽。為此,您應該使用常規(guī)的輪詢或推送方法铃彰。就電池绍豁,系統(tǒng)負載和帶寬而言,推送是最佳解決方案牙捉。
  • 客戶端平臺的差異竹揍。 HTTP和MQTT客戶端都在許多平臺上實現(xiàn)。 MQTT的簡單性可幫助您以最少的努力在其他客戶端上實施MQTT邪铲。
  • 防火墻容錯能力芬位。某些公司防火墻將出站連接限制到某些預定義的端口,這些端口通常僅限于HTTP(端口80)带到,HTTPS(端口443)等昧碉,HTTP在這種情況下顯然可以工作。 MQTT封裝在WebSockets連接中,并顯示為HTTP升級請求被饿,因此可以在這種情況下運行四康。

MQTT協(xié)議的缺點

  • SDK不夠多。如果沒有完整的SDK狭握,則需要用于不同異構(gòu)設備的軟件SDK軟件包才能與MQTT服務器(例如MCU闪金,Linux,Android论颅,iOS毕泌,WEB)進行通信,以實現(xiàn)互連和互操作性嗅辣。
  • 不支持文件和AV撼泛。在某些應用場景中,需要傳輸?shù)男畔⒖赡懿幌抻谛枰ㄟ^AV與文件通信的指令澡谭,例如語音和視頻信號愿题。
  • 不支持與第三方HTTP集成。 MQTT協(xié)議優(yōu)于常規(guī)HTTP協(xié)議蛙奖,但是基于傳統(tǒng)HTTP協(xié)議的WEB服務器仍在主流市場中占主導地位潘酗。這些服務器應與MQTT協(xié)議互連,以降低升級成本雁仲。
  • 不支持負載分配仔夺。負載分配服務器對于高并發(fā)性和防止惡意攻擊也是必不可少的。
  • 不支持用戶管理界面攒砖。當用戶分析設備行為數(shù)據(jù)時缸兔,這一點尤其重要。在工業(yè)4.0和大數(shù)據(jù)時代吹艇,這是不可避免的需求惰蜜。
  • 不支持離線消息。設備脫機后受神,不支持脫機消息來補償從MQTT服務器到設備的控制信息丟失抛猖。
  • 不支持點對點通信,并且使用標準的MQTT協(xié)議鼻听。從理論上講财著,點對點通信可以通過相互訂閱來實現(xiàn),但是邏輯相對復雜并且涉及設備安全性撑碴。當設備B和設備C相同時-在主題的情況下撑教,設備A無法知道消息是來自設備B還是來自設備C,并且消息很可能是被設備D竊聽的灰羽。
  • 不支持群組通信或群組管理驮履,而是實現(xiàn)群組成員的管理。小組成員可以交換消息廉嚼,如果一個設備由多個人控制或多個設備由一個人控制玫镐,則此功能特別有用。

開發(fā)過程中MQTT遵循以下設計原則:

  • 精簡怠噪,不添加可有可無的功能恐似。
  • 發(fā)布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞傍念。
  • 允許用戶動態(tài)創(chuàng)建主題矫夷,零運維成本。
  • 傳輸量降到最低以提高傳輸效率憋槐。
  • 低帶寬双藕、高延遲不穩(wěn)定的網(wǎng)絡等因素考慮在內(nèi)阳仔。
  • 支持連續(xù)的會話控制忧陪。
  • 理解客戶端計算能力可能很低。
  • 提供服務質(zhì)量管理近范。
  • 假設數(shù)據(jù)不可知嘶摊,不強求傳輸數(shù)據(jù)的類型與格式,保持靈活性评矩。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叶堆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斥杜,更是在濱河造成了極大的恐慌虱颗,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔗喂,死亡現(xiàn)場離奇詭異上枕,居然都是意外死亡,警方通過查閱死者的電腦和手機弱恒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門辨萍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人返弹,你說我怎么就攤上這事锈玉。” “怎么了义起?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵拉背,是天一觀的道長。 經(jīng)常有香客問我默终,道長椅棺,這世上最難降的妖魔是什么犁罩? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮两疚,結(jié)果婚禮上床估,老公的妹妹穿的比我還像新娘。我一直安慰自己诱渤,他們只是感情好丐巫,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著勺美,像睡著了一般递胧。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赡茸,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天缎脾,我揣著相機與錄音,去河邊找鬼占卧。 笑死赊锚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的屉栓。 我是一名探鬼主播舷蒲,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼友多!你這毒婦竟也來了牲平?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤域滥,失蹤者是張志新(化名)和其女友劉穎纵柿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體启绰,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡昂儒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了委可。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渊跋。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖着倾,靈堂內(nèi)的尸體忽然破棺而出拾酝,到底是詐尸還是另有隱情,我是刑警寧澤卡者,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布蒿囤,位于F島的核電站,受9級特大地震影響崇决,放射性物質(zhì)發(fā)生泄漏材诽。R本人自食惡果不足惜底挫,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脸侥。 院中可真熱鬧建邓,春花似錦、人聲如沸湿痢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽譬重。三九已至,卻和暖如春罐氨,著一層夾襖步出監(jiān)牢的瞬間臀规,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工栅隐, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留塔嬉,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓租悄,卻偏偏與公主長得像谨究,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子泣棋,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容