HTTP作為當下使用最為廣泛的協議之一,但隨著物聯網行業的發展,MQTT在過去的幾年也受到了大量物聯網(wang)開發人員的青(qing)睞。下(xia)面我(wo)們就分(fen)別對HTTP及MQTT進(jin)行比較分(fen)析,揭秘誰才(cai)是(shi)物聯網(wang)開發的上上之(zhi)選。
一、首先我們先簡單的了解一下MQTT、HTTP協議是什么?
1、MQTT(消息隊列遙測傳輸)是(shi)ISO標準(ISO/IEC PRF 20922)下基于發(fa)布(bu)/訂(ding)閱范(fan)式的(de)消息協議。該協議建(jian)立在TCP/IP協議之上,在1999年由IBM公司發(fa)布(bu),目前(qian)已經(jing)更新到V5.0版本。
發布/訂閱型消息協議模型為用戶提供彼此相互獨立的設備,也因此增加了整個系統的穩定性。當其中有一個客戶端出現故障時,整個系統依然可以正常工作。如圖所示:
2.超文本傳輸協議(Hyper Text Transfer Protocol,HTTP)是(shi)一個(ge)(ge)簡單的(de)請求-響應協議(yi),該(gai)協議(yi)一般在(zai)TCP上運行。該(gai)協議(yi)指定了客戶端可能發送給服務器什么樣的(de)消(xiao)息(xi)以(yi)及得到什么樣的(de)響應。請求和響應消(xiao)息(xi)的(de)頭以(yi)ASCII形(xing)式給出(chu);而消(xiao)息(xi)內容則具有(you)一個(ge)(ge)類似MIME的(de)格式。
根據它們的特性進行分析
1、就應(ying)用場景分析,MQTT相(xiang)對于(yu)HTTP而(er)言(yan),MQTT協(xie)議是為那些計算(suan)機性能低下受限,且工作在低帶寬,網絡不(bu)(bu)可靠的遠(yuan)程傳感器和控(kong)制設備(bei)(bei)通訊而(er)設計的協(xie)議。而(er)HTTP是適用于(yu)那些性能好一些的終端上,對設備(bei)(bei)的要(yao)求相(xiang)對較高(gao),所(suo)以并不(bu)(bu)適合M2M的場景。
2、就傳(chuan)輸(shu)和速(su)度分析,MQTT擁有(you)更快的(de)數(shu)據吞(tun)吐(tu)量,同(tong)時MQTT協議還確保了(le)傳(chuan)輸(shu)質量。分別(bie)有(you)三(san)個(ge)級別(bie)的(de)服務質量提供:
一是(shi):最多一次,保證(zheng)盡力交付(fu);
二是:至少(shao)一次(ci),保證消(xiao)息至少(shao)傳(chuan)輸(shu)一次(ci),但消(xiao)息也可以多(duo)次(ci)傳(chuan)輸(shu);
三是:恰好一次,保證每一個消息只(zhi)被對方接(jie)收一次。
MQTT協(xie)議(yi)簡潔、小(xiao)巧、省電,開銷很小(xiao)(固定(ding)長度的(de)頭部是(shi) 2 字節),協(xie)議(yi)交(jiao)換最小(xiao)化,降低了網絡流量,這些(xie)都是(shi)HTTP所不具備的(de)。
三、總結
下面我們用一張表來總結MQTT協議與HTTP協議的功能。如表1-1所示:
功能 | HTTP協議 | MQTT協議 |
低協議開銷 | 否 | 是 |
不穩定網絡兼容性 | 否 | 是 |
低功耗功能 | 否 | 是 |
大連接 | 否 | 是 |
推送通知 | 是 | 是 |
客戶平臺差異 | 是 | 是 |
防火墻容錯 | 是 | 是 |
保密性 | 是 | 是 |
表1-1
綜上所述,在物聯網開(kai)發中,MQTT協議更加適合(he)。主要(yao)原因是(shi):MQTT速(su)度快、開(kai)銷小(xiao)省流量(liang)、且擁(yong)有更低的(de)功耗和硬件(jian)及帶(dai)寬要(yao)求(qiu),這些都是(shi)與物聯網開(kai)發完(wan)美契合(he)的(de)要(yao)點。