IBM MQTT概要
消息隊(duì)列遙測(cè)傳輸(Message Queuing Telemetry Transport,MQT)是IBM開(kāi)發(fā)的即時(shí)通信協(xié)議,它是一種輕量級(jí)的以“發(fā)布&訂閱”方式工作的CS架構(gòu)的協(xié)議。MQTT協(xié)議的主要特征是開(kāi)放、簡(jiǎn)單、輕量級(jí)和易于實(shí)現(xiàn),這些特征使得它適用于受約束的應(yīng)用環(huán)境,如:
·網(wǎng)絡(luò)受限:網(wǎng)絡(luò)帶寬較低且傳輸不可靠。
·終端受限:協(xié)議運(yùn)行在嵌入式設(shè)備上,嵌入式終端的處理器、內(nèi)存等是受限的。
通過(guò)MQTT協(xié)議,目前已經(jīng)擴(kuò)展出了數(shù)十種MQTT服務(wù)器端程序,可以通過(guò)PHP、Java、Python、C、C#等語(yǔ)言向MQTT發(fā)送消息。此外,國(guó)內(nèi)很多企業(yè)都在廣泛使用MQTT作為Android手機(jī)客戶端與服務(wù)器端推送消息的協(xié)議,其中Sohu、Cmstop手機(jī)客戶端中均使用MQTT協(xié)議進(jìn)行消息推送。Facebook在iOS應(yīng)用中也采用MQTT協(xié)議更新通知、消息和書(shū)簽等。
由于開(kāi)放源代碼、耗電量小等特點(diǎn),MQTT非常適用于物聯(lián)網(wǎng)開(kāi)發(fā)領(lǐng)域,如傳感器與服務(wù)器的通信、傳感器信息采集等。
MQTT協(xié)議的基本特征包括:
1、發(fā)布&訂閱的消息機(jī)制使得一對(duì)多的消息分發(fā)變得非常簡(jiǎn)單,而且應(yīng)用的設(shè)計(jì)和消息的分發(fā)相互獨(dú)立。
2、MQTT協(xié)議承載在TCP/IP協(xié)議上。
3、提供三種不同QoS的消息傳遞機(jī)制。
?。?)最多一次(At Most Once):此時(shí)消息在TCP/IP網(wǎng)絡(luò)上以Best Effort的方式傳輸,數(shù)據(jù)包重復(fù)或丟失是存在的,重復(fù)消息將在接收端被丟棄。這種Q0S的機(jī)制可以用在不斷上報(bào)和發(fā)布數(shù)據(jù)的傳感器應(yīng)用場(chǎng)景,針對(duì)此類場(chǎng)景,當(dāng)接收到新傳感器采樣數(shù)據(jù)后,老舊數(shù)據(jù)的重要性就降低了。
(2)最少一次(At Least Once):此時(shí)接收方一定能收到消息,但是可能多次收到重復(fù)的消息。
?。?)有且僅有一次(Exactly Once):此時(shí)保障接收方一定能收到消息,而且只收到一次。這種機(jī)制適用于賬單生成系統(tǒng),重復(fù)和丟失消息都會(huì)導(dǎo)致計(jì)費(fèi)錯(cuò)誤。
4、消息的開(kāi)銷很小,消息頭的固定報(bào)文頭長(zhǎng)度采樣2字節(jié),且協(xié)議在設(shè)計(jì)時(shí)考慮了最小化使用網(wǎng)絡(luò)資源。
5、為異常離線的終端提供訂閱消息緩存。