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