干貨!物聯網開發平臺協議,程序員必看!
當前物聯網背景之下,國內出現了許多物聯網開發平臺,比如百度天工智能物聯網平臺,阿里Link物聯網平臺,騰訊QQ物聯智能硬件開放平臺等等。
這些平臺應用到MQTT協議,那么MQTT協議是什么呢?
MQTT,英語全稱:Message Queuing Telemetry Transport Protocol,即消息隊列遙感傳輸協議的縮寫。
MQTT是一種基于輕量級代理發布/訂閱模式的消息傳輸協議,運行在TCP協議棧之上。
該協議提供有序、可靠、雙向連接的網絡連接保證,特別適合于帶寬低、網絡延遲高、網絡通信不穩定等受限環境的消息分發,屬于物聯網消息傳輸當中一個標準傳輸協議。
在工作方式上該協議采用代理發布/訂閱模式,實現了發布和訂閱解耦,因此在該協議中存在三種角色:
- 代理服務器;
- 發布者客戶端;
- 訂閱者客戶端。
發布者和訂閱者互不干擾,也就是說發布者和訂閱者互不知道對方的存在,它們只知道代理服務器。
代理服務器負責接收來自發布者的消息進行存儲同時將消息再發送給訂閱者,成為了發送者和訂閱者之間的中介,同一個客戶端可以即是發布者也可以是訂閱者。
在消息傳遞上是通過“主題”方式實現:
- “主題”附加在消息上的一個標簽;
- 發布者客戶端將“主題”和“消息”發送至代理服務器;
- 代理服務器將該消息轉發至每一個訂閱了該“主題”的訂閱者客戶端。
為確保消息能夠完整送達,MQTT協議提供了三種服務質量等級。
- 等級為0,指發布者消息不要求應答回饋,也沒有重發機制,這類消息可能會發生消息丟失或重復,取決于TCP協議提供的交互的數據包服務。
- 等級為1,指最少一次能確保消息送達,但消息重復可能會發生,發布者如果在指定時間內沒有收到應答控制報文,發布者會重新發送消息。
- 等級為2,指僅一次,屬于高級別的服務質量,消息丟失和重復都是不可接受,確保僅一次發送或接收消息。
另外,MQTT協議利用?;顧C制在客戶端設置LWT信息發送到代理服務器。
當客戶端異常斷開例如:電量耗盡、系統崩潰或者網絡斷開時,代理服務器檢測到客戶端離線后,就會發送保存在特定主題上的 LWT 信息,讓其它訂閱該主題的客戶端知道該節點已經意外離線。