1、MQTT簡(jiǎn)介
早在1999年,IBM的Andy Stanford-Clark博士以及Arcom公司ArlenNipper博士發(fā)明了MQTT(Message Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)技術(shù)。
MQTT是一個(gè)物聯(lián)網(wǎng)傳輸協(xié)議,它被設(shè)計(jì)用于輕量級(jí)的發(fā)布/訂閱式消息傳輸,旨在為低帶寬和不穩(wěn)定的網(wǎng)絡(luò)環(huán)境中的物聯(lián)網(wǎng)設(shè)備提供可靠的網(wǎng)絡(luò)服務(wù)。MQTT是專門針對(duì)物聯(lián)網(wǎng)開發(fā)的輕量級(jí)傳輸協(xié)議。MQTT協(xié)議針對(duì)低帶寬網(wǎng)絡(luò),低計(jì)算能力的設(shè)備,做了特殊的優(yōu)化,使得其能適應(yīng)各種物聯(lián)網(wǎng)應(yīng)用場(chǎng)景。目前MQTT擁有各種平臺(tái)和設(shè)備上的客戶端,已經(jīng)形成了初步的生態(tài)系統(tǒng)。
MQTT既有完全高級(jí)版可以在TCP/IP上運(yùn)行,也有簡(jiǎn)化版MQTT-SN用于非IP設(shè)備。其發(fā)布/訂閱模式能夠在讓拓?fù)浣Y(jié)構(gòu)進(jìn)行擴(kuò)展的同時(shí)保留實(shí)時(shí)的特性以及服務(wù)質(zhì)量的可配置性。
2、MQTT的發(fā)展歷史
在物聯(lián)網(wǎng)中,開源和開放標(biāo)準(zhǔn)是基本的要素。MQTT的發(fā)展歷史大致如下:
1999年,IBM和合作伙伴共同發(fā)明了MQTT協(xié)議。
2004年,MQTT.org開放了論壇,供大家廣泛參與。
2011年,IBM建立了Eclipse開源項(xiàng)目Paho,并貢獻(xiàn)了代碼。Eclipse Paho是MQTT的Java實(shí)現(xiàn)版本。
2013年,OASIS MQTT技術(shù)規(guī)范委員會(huì)成立。
2014年,MQTT正式成為推薦的物聯(lián)網(wǎng)傳輸協(xié)議標(biāo)準(zhǔn)。
3、MQTT特點(diǎn)
MQTT協(xié)議是為大量計(jì)算能力有限,且工作在低帶寬、不可靠的網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計(jì)的協(xié)議,它具有以下主要的幾項(xiàng)特性:
1)使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合;
2)對(duì)負(fù)載內(nèi)容屏蔽的消息傳輸;
3)使用 TCP/IP 提供網(wǎng)絡(luò)連接;
4)有三種消息發(fā)布服務(wù)質(zhì)量:
“至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級(jí)別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送。
“至少一次”,確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。
“只有一次”,確保消息到達(dá)一次。這一級(jí)別可用于如下情況,在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。
5)小型傳輸,開銷很?。ü潭ㄩL(zhǎng)度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量;
6)使用Last Will和Testament特性通知有關(guān)各方客戶端異常中斷的機(jī)制;
4、MQTT的優(yōu)勢(shì)
MQTT的設(shè)計(jì)思想是開源、可靠、輕巧、簡(jiǎn)單,MQTT的傳輸格式非常精小,最小的數(shù)據(jù)包只有2個(gè)比特,且無應(yīng)用消息頭。MQTT可以保證消息的可 靠性,它包括三種不同的服務(wù)質(zhì)量(最多只傳一次、最少被傳一次、一次且只傳一次),如果客戶端意外掉線,可以使用“遺愿”發(fā)布一條消息,同時(shí)支持持久訂閱。
MQTT在物聯(lián)網(wǎng)應(yīng)用中的優(yōu)勢(shì)有:
可靠傳輸。MQTT可以保證消息可靠安全的傳輸,并可以與企業(yè)應(yīng)用簡(jiǎn)易集成。
消息推送。支持消息實(shí)時(shí)通知、豐富的推送內(nèi)容、靈活的Pub-Sub以及消息存儲(chǔ)和過濾。
低帶寬、低耗能、低成本。占用移動(dòng)應(yīng)用程序帶寬小,并且?guī)捓寐矢撸碾娏枯^少。
5、物聯(lián)網(wǎng)接入的挑戰(zhàn)
物聯(lián)網(wǎng)中的數(shù)據(jù)傳輸會(huì)面臨很多問題,比如在網(wǎng)絡(luò)不穩(wěn)定的情況下,如果保證數(shù)據(jù)的傳輸沒有問題,如何保證數(shù)據(jù)不被重復(fù)發(fā)送,連接斷開后如何進(jìn)行重連??傮w來說,物聯(lián)網(wǎng)的接入會(huì)面臨以下幾個(gè)方面的挑戰(zhàn):
設(shè)備、傳感器。物聯(lián)網(wǎng)接入對(duì)終端采集和控制設(shè)備要求高,且終端的改造以及網(wǎng)絡(luò)費(fèi)用成本也比較高。另外,其對(duì)終端的能耗要求也比較高。
網(wǎng)絡(luò)。現(xiàn)有的網(wǎng)絡(luò)傳輸貸款參差不齊,傳輸網(wǎng)絡(luò)不穩(wěn)定。
服務(wù)器。高并發(fā)情況下,多客戶端的接入能力以及消息處理能力。
6、MQTT應(yīng)用
IBM和St. Jude醫(yī)療中心通過MQTT開發(fā)了一套Merlin系統(tǒng),該系統(tǒng)使用了用于家庭保健的傳感器。St. Jude醫(yī)療中心設(shè)計(jì)了一個(gè)叫做Merlin@home的心臟裝置,這種無線發(fā)射器可以用來監(jiān)控那些已經(jīng)植入復(fù)律-除顫器和起搏器(兩者都是基本的傳感器)的心臟病人。
該產(chǎn)品利用MQTT把病人的即時(shí)更新信息傳給醫(yī)生/醫(yī)院,然后醫(yī)院進(jìn)行保存。這樣的話,病人就不用親自去醫(yī)院檢查心臟儀器了,醫(yī)生可以隨時(shí)查看病人的數(shù)據(jù),給出建議,病人在家里就可以自行檢查。
IBM稱該發(fā)射器包括一個(gè)大型觸摸屏,一個(gè)嵌入式鍵盤平臺(tái),以及一個(gè)Linux操作系統(tǒng)。
在未來幾年,MQTT的應(yīng)用會(huì)越來越廣,值得關(guān)注。
通過MQTT協(xié)議,目前已經(jīng)擴(kuò)展出了數(shù)十個(gè)MQTT服務(wù)器端程序,可以通過PHP,JAVA,Python,C,C#等系統(tǒng)語言來向MQTT發(fā)送相關(guān)消息。
此外,國(guó)內(nèi)很多企業(yè)都廣泛使用MQTT作為Android手機(jī)客戶端與服務(wù)器端推送消息的協(xié)議。其中Sohu,Cmstop手機(jī)客戶端中均有使用到MQTT作為消息推送消息。據(jù)Cmstop主要負(fù)責(zé)消息推送的高級(jí)研發(fā)工程師李文凱稱,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,MQTT由于開放源代碼,耗電量小等特點(diǎn),將會(huì)在移動(dòng)消息推送領(lǐng)域會(huì)有更多的貢獻(xiàn),在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信,信息的收集,MQTT都可以作為考慮的方案之一。在未來MQTT會(huì)進(jìn)入到我們生活的各各方面。
如果需要下載MQTT服務(wù)器端,可以直接去MQTT官方網(wǎng)站點(diǎn)擊software進(jìn)行下載MQTT協(xié)議衍生出來的各個(gè)不同版本。
內(nèi)容來自百科網(wǎng)