標籤:sso head web 資料擷取 gtk 之間 api 延遲 enc
物聯網通訊協定——比較-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)
JavaMessage Service(Java Message Service)應用程式介面,是一個Java平台中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分布式系統中發送訊息,進行非同步通訊。JavaMessage Service是一個與具體平台無關的API,絕大多數MOM供應商都對JMS提供支援。
物聯網通訊協定——比較-MQTT、 DDS、 AMQP、XMPP、 JMS、 REST、 CoAP