IOT(物聯網things of internet)設備和傳統的智能設備有什麼區別,筆者總結下的IOT設備有以下特色:web
硬件能力差(存儲能力基本只有幾MB,CPU頻率低連使用HTTP請求都很奢侈)
系統千差萬別(Brillo,mbedOS,RIOT等)
如使用電池供電,電量消耗敏感
若是是小設備設備基數大須要維持大量在線連接
網絡狀況不穩定,移動網絡網絡資費貴,須要儘可能減小開銷和穩定服務器
在以上這樣苛刻的場景下不少技術上經常使用在智能設備方案都望而卻步,總結一下咱們主要面對下面三個問題:websocket
socket.io,websocket? 不一樣的系統可能沒法使用HTTP,設備資源可能使用HTTP都奢侈
TCP/IP自定協議? 雖然不用在乎系統,自定義報文怎麼解決網絡開銷問題?
自主研發成本高,使用第三方IOT平臺容易被技術或硬件綁定
網絡
MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)是IBM開發的一個即時通信協議,使用方式比較相似於隊列軟件好比RabbitMQ,使用發佈/訂閱的方式提供互相之間的通信,MQTT是爲在計算能力有限,且工做在低帶寬、不可靠的網絡的遠程傳感器和控制設備通信而設計的協議,它具備如下主要的幾項特性:socket
該協議支持全部平臺,幾乎能夠把全部聯網物品和外部鏈接起來ui
有三種消息發佈服務質量socket.io
「至多一次」,消息的分發依賴於底層網絡的能力。接收者不會發送響應,發送者也不會重試。消息可能送達一次也可能根本沒送達。這個服務質量經常使用在雞肋的消息傳遞中,即消息丟了也沒有關係。
「至少一次」,確保消息到達,但消息重複可能會發生。
「只有一次」,確保消息到達一次。這一級別可用於以下狀況,在計費系統中,消息重複或丟失會致使不正確的結果。spa
小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以下降網絡流量;
使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制;.net
除了MQTT的協議特性外還有一些客觀緣由:設計
對語言友好主流語言的客戶端都有
大部分硬件方案天生支持
數十個MQTT服務器端程序可供選擇
社區成熟解決方案被普遍運用遇到問題方便尋求幫助
原文連接:https://blog.csdn.net/u011142688/article/details/79852267