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