物聯網通信協議——比較-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP
物聯網通信協議——比較-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP
- AMQP & MQTT & DDS (https://www.youtube.com/watch?v=GTK94zZJbGQ)
- 物聯網通信協議詳解及選擇建議(資料來源:http://www.elecfans.com/iot/419545.html)
物聯網協議的選擇
發布/訂閱服務更適合物聯網環境下通信
DDS、MQTT、AMQP和JMS都是基於發布/訂閱模式,發布/訂閱框架具有服務自發現、動態擴展、事件過濾的特點,它解決了物聯網系統在應用層的數據源快速獲取、物的加入和退出、興趣訂閱、降低帶寬流量等問題,實現物的聯接在空間上松耦合(雙方無需知道通信地址)、時間上松耦合和同步松耦合。
服務質量(QoS)是物聯網通信中的重要考慮因素
在服務策略的幫助下,DDS能夠有效地控制和管理網絡帶寬、內存空間等資源的使用,同時也能控制數據的可靠性、實時性和數據的生存時間,通過靈活使用這些服務質量策略,DDS不僅能在窄帶的無線環境上,也能在寬帶的有線通信環境上開發出滿足實時性需求的數據分發系統
協議應用的側重方向
MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP這幾種協議都已被廣泛應用,並且每種協議都有至少10種以上的代碼實現,都宣稱支持實時的發布/訂閱的物聯網協議,但是在具體物聯網系統架構設計時,需考慮實際場景的通信需求,選擇合適的協議。
以智能家居為例,說明下這些協議側重應用方向。智能家居中智能燈光控制,可以使用XMPP協議控制燈的開關;智能家居的電力供給,發電廠的發動機組的監控可以使用DDS協議;當電力輸送到千家萬戶時,電力線的巡查和維護,可以使用MQTT協議;家裏的所有電器的電量消耗,可以使用AMQP協議,傳輸到雲端或家庭網關中進行分析;最後用戶想把自家的能耗查詢服務公布到互聯網上,那麽可以使用REST/HTTP來開放API服務。
HTTP協議
HTTP協議是典型的CS通訊模式,由客戶端主動發起連接,向服務器請求XML或JSON數據。該協議最早是為了適用web瀏覽器的上網瀏覽場景和設計的,目前在PC、手機、pad等終端上都應用廣泛,但並不適用於物聯網場景。在物聯網場景中其有三大弊端:
- 1. 由於必須由設備主動向服務器發送數據,難以主動向設備推送數據。
- 2. 安全性不高。
- 3. 不同於用戶交互終端如pc、手機,物聯網場景中的設備多樣化,對於運算和存儲資源都十分受限的設備,http協議實現、XML/JSON數據格式的解析,都是不可能的任務。
REST/HTTP(松耦合服務調用)
REST/HTTP其實是互聯網中服務調用API封裝風格,物聯網中數據采集到物聯網應用系統中,在物聯網應用系統中,可以通過開放REST API的方式,把數據服務開放出去,被互聯網中其他應用所調用。
適用範圍:REST/HTTP主要為了簡化互聯網中的系統架構,快速實現客戶端和服務器之間交互的松耦合,降低了客戶端和服務器之間的交互延遲。因此適合在物聯網的應用層面,通過REST開放物聯網中資源,實現服務被其他應用所調用。
CoAP協議
CoAP (Constrained Application Protocol),受限應用協議,應用於無線傳感網中協議。
適用範圍:CoAP是簡化了HTTP協議的RESTful API,CoAP是6LowPAN協議棧中的應用層協議,它適用於在資源受限的通信的IP網絡。
MQTT協議(低帶寬)
MQTT (Message Queuing Telemetry Transport ),消息隊列遙測傳輸,由IBM開發的即時通訊協議,相比來說比較適合物聯網場景的通訊協議。MQTT協議采用發布/訂閱模式,所有的物聯網終端都通過TCP連接到雲端,雲端通過主題的方式管理各個設備關註的通訊內容,負責將設備與設備之間消息的轉發。
適用範圍:在低帶寬、不可靠的網絡下提供基於雲平臺的遠程設備的數據傳輸和監控。
MQTT協議一般適用於設備數據采集到端(Device-》Server,Device-》Gateway),集中星型網絡架構(hub-and-spoke),不適用設備與設備之間通信,設備控制能力弱,另外實時性較差,一般都在秒級。
DDS協議(高可靠性、實時)
DDS(Data Distribution Service for Real-Time Systems),面向實時系統的數據分布服務,這是大名鼎鼎的OMG組織提出的協議,其權威性應該能證明該協議的未來應用前景。
適用範圍:分布式高可靠性、實時傳輸設備數據通信。目前DDS已經廣泛應用於國防、民航、工業控制等領域。
點評:DDS很好地支持設備之間的數據分發和設備控制,設備和雲端的數據傳輸,同時DDS的數據分發的實時效率非常高,能做到秒級內同時分發百萬條消息到眾多設備。DDS在服務質量(QoS)上提供非常多的保障途徑,這也是它適用於國防軍事、工業控制這些高可靠性、可安全性應用領域的原因。但這些應用都工作在有線網絡下,在無線網絡,特別是資源受限的情況下,沒有見到過實施案例。
AMQP協議(互操作性)
AMQP(Advanced Message Queuing Protocol),先進消息隊列協議,這是OASIS組織提出的,該組織曾提出OSLC(Open Source Lifecyle)標準,用於業務系統例如PLM,ERP,MES等進行數據交換。
適用範圍:最早應用於金融系統之間的交易消息傳遞,在物聯網應用中,主要適用於移動手持設備與後臺數據中心的通信和分析。
XMPP協議(即時通信)
XMPP(Extensible Messaging and Presence Protocol)可擴展通訊和表示協議,XMPP的前身是Jabber,一個開源形式組織產生的網絡即時通信協議。XMPP目前被IETF國際標準組織完成了標準化工作。
適用範圍:即時通信的應用程序,還能用在網絡管理、內容供稿、協同工具、檔案共享、遊戲、遠端系統監控等。
點評:XMPP是基於XML的協議,由於其開放性和易用性,在互聯網及時通訊應用中運用廣泛。相對HTTP,XMPP在通訊的業務流程上是更適合物聯網系統的,開發者不用花太多心思去解決設備通訊時的業務通訊流程,相對開發成本會更低。但是HTTP協議中的安全性以及計算資源消耗的硬傷並沒有得到本質的解決。
JMS (Java Message Service)
Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分布式系統中發送消息,進行異步通信。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。
物聯網通信協議——比較-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP