物聯(lián)網(wǎng)網(wǎng)關(guān)協(xié)議選擇:HTTP VS MQTT
在物聯(lián)網(wǎng)的世界里面,典型的網(wǎng)絡(luò)架構(gòu)如下,首先是終端的設(shè)備或者傳感器采集到信號或者信息,對于不能上internet或者intranet網(wǎng)的設(shè)備,傳感器先把探測到的信息發(fā)送到網(wǎng)關(guān),然后網(wǎng)關(guān)把信息發(fā)送給服務(wù)器;有的設(shè)備本身就自帶了接入網(wǎng)絡(luò)的功能,比如手機,那就可以直接連接入服務(wù)器,具體的網(wǎng)絡(luò)架構(gòu)如下圖。

有的時候,為了給服務(wù)器減壓,我們可以選擇一些輕量級的通信協(xié)議,比如MQTT,而不是HTTP,那為什么選擇MQTT,而不是HTTP呢?因為HTTP 協(xié)議的首部(header)比較大,而且每次發(fā)送數(shù)據(jù)都要發(fā)送一個數(shù)據(jù)包來連接/斷開TCP,因此發(fā)送的數(shù)據(jù)越多,數(shù)據(jù)總通信量也就越大;

而MQTT 的首部比較小,還能在維持TCP 連接的同時,進(jìn)行下一次數(shù)據(jù)的收發(fā),所以比起HTTP,它更能抑制數(shù)據(jù)總通信量。

除此之外,在使用MQTT 時還要注意一點,即應(yīng)該一邊維持MQTT的TCP 連接,一邊進(jìn)行數(shù)據(jù)的發(fā)送和接收。因為MQTT 是通過維持TCP 連接來削減通信量的,所以要是每次進(jìn)行數(shù)據(jù)通信都斷開TCP 連接,MQTT 就會跟HTTP 一樣在每次發(fā)送數(shù)據(jù)時都執(zhí)行連接和斷開處理,結(jié)果反而會增加通信量。