轉戰物聯網·基礎篇09-選擇MQTT協議還是CoAP協議


  前面章節介紹過,MQTT協議和CoAP協議都是物聯網中比較流行的協議,都對傳輸量做了很大的精簡,傳輸開銷小,以適應物理網的網絡環境。

  XMPP協議也有人說是適合物聯網通信的,但它是基於XML,對於嵌入式硬件設備來說,實現XML解析是非常困難和消耗資源的。

  還有大家熟知的HTTP協議,它對於嵌入式硬件設備來說應該屬於重量級,也不太合適。目前很多物聯網設備都是資源受限型的,內存空間和計算能力都很有限。

  關於MQTT協議和CoAP協議比較的文章網絡上有很多,我們下面從應用場景要求的層面,分析該如何選擇使用哪種協議。

  1、服務端主動發送給客戶端的數據(反控)的時效性(如通過APP控制硬件動作)
  因MQTT協議是保持連接的,所以及時性相對很好;CoAP協議是無連接響應式通訊,因此不能主動推送,要等客戶端訪問才可以攜帶回去,及時性相對較差。

  2、設備環境對底層協議的要求或限制
  MQTT協議是建立在TCP協議基礎之上的,因此他也具備TCP協議的優缺點;CoAP協議是建立在UDP協議基礎之上的,因此他也具備UDP協議的優缺點。

  3、在NAT網絡環境中是否需要調整
  因MQTT協議是保持長連接的,所以在NAT下沒有問題;CoAP協議因是無連接方式,需要使用NAT穿透性手段。

  4、實現多對多的通信還是單對單通信
  因MQTT協議的消息模型是發布/訂閱式的,所以是可以多對多通信的;CoAP協議的消息模型是請求/響應式的,所以是單對單通信。

  5、服務質量等級及自動重連重發
  因MQTT協議有QoS配置,支持服務質量等級和自動重連重發機制;CoAP本身不具備,需要應用層自己來寫這個邏輯。  

  6、對網絡穩定性要求
  MQTT協議利用自動重連重發機制解決網絡不穩定問題,斷網就會觸發重連;CoAP協議只有客戶端發送的時候需要保證網絡連接正常,其他時段無需連接。

  7、對硬件設備的功耗影響
  MQTT協議因有保持連接,所以功耗略高於CoAP協議。

  綜上所述,根據實際項目要求,參考選擇。如果有反控要求,盡量選擇MQTT協議,但是如果是使用電信的NB-IoT,則不需要處理硬件到服務端的傳輸協議,已經集成在模塊中,而且只能是CoAP協議(目前是這樣),也就忽略協議選擇這步。我們應用服務器與電信物聯網服務器進行API通訊即可。如果是通過WiFi模塊、有線寬帶、4G無線網等就需要考慮這步的協議選擇了。

  本人親歷的項目中大部分都需要反控,所以選擇了MQTT協議(如不需要反控,我會優選CoAP協議)。這個系列里我們也是以MQTT作為傳輸協議進行討論,有關CoAP協議的相關內容大家可以網絡搜索了解一下,我們前面先不涉及這方面內容。

  本節完,待續......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM