最近在Exadel,我們遇到了一個(gè)有趣的挑戰(zhàn),對(duì)物聯(lián)網(wǎng)的開(kāi)發(fā)者。因?yàn)镮oT應(yīng)用程序獲得了如此多的動(dòng)力,所以有越來(lái)越多的選擇如何開(kāi)發(fā)它們。對(duì)于設(shè)備通信,兩個(gè)專門的競(jìng)爭(zhēng)協(xié)議脫穎而出:消息隊(duì)列遙測(cè)傳輸(MQTT)和約束應(yīng)用協(xié)議(CoAP)。它們都設(shè)計(jì)為輕量級(jí),并仔細(xì)使用稀缺的網(wǎng)絡(luò)資源。兩者都在正確的環(huán)境中使用,但問(wèn)題是,由于物聯(lián)網(wǎng)發(fā)展的相對(duì)發(fā)展,人們不知道這些協(xié)議是什么或何時(shí)使用。
這些不是每個(gè)人使用的標(biāo)準(zhǔn)Web協(xié)議。
鑒于我們自己內(nèi)部的對(duì)話,我決定幫助我們解釋這些。首先,我們來(lái)看看這些協(xié)議是什么。
什么是MQTT?
對(duì)于外行人來(lái)說(shuō),MQTT很像Twitter。這是一個(gè)“發(fā)布和訂閱”協(xié)議。您可以訂閱某些主題并發(fā)布在其他主題上。您將收到有關(guān)您訂閱的主題的消息,并且訂閱您發(fā)布的主題的人將收到這些消息。當(dāng)然有區(qū)別。例如,您可以通過(guò)保證交付來(lái)配置協(xié)議更可靠。發(fā)布/訂閱系統(tǒng)利用一個(gè)經(jīng)紀(jì)人,為了進(jìn)一步推出類比,Twitter平臺(tái)本身將根據(jù)您的訂閱偏好過(guò)濾消息。
什么是CoAP?
CoAP更像是傳統(tǒng)的基于網(wǎng)站的業(yè)務(wù),如亞馬遜。您要求資源(亞馬遜示例中的頁(yè)面和搜索結(jié)果),并且偶爾還會(huì)提交您自己的數(shù)據(jù)(進(jìn)行購(gòu)買)。 CoAP被設(shè)計(jì)為看起來(lái)像是兼容HTTP,它支持大多數(shù)互聯(lián)網(wǎng),因?yàn)槲覀兡壳爸赖摹?CoAP可以利用代理服務(wù)器,并將其轉(zhuǎn)換成HTTP,或者根據(jù)環(huán)境限制直接與設(shè)計(jì)為使用CoAP的特殊服務(wù)器進(jìn)行通信。
你什么時(shí)候使用它們?
你可能都在問(wèn)的問(wèn)題是,“如果他們很相似,我應(yīng)該何時(shí)使用一個(gè)對(duì)另一個(gè)?”
由于發(fā)布/訂閱體系結(jié)構(gòu)與中間商中介,MQTT是廣域網(wǎng)(WAN,互聯(lián)網(wǎng))上的設(shè)備之間的通信的理想選擇。它在帶寬有限的情況下是最有用的,例如遠(yuǎn)程現(xiàn)場(chǎng)站點(diǎn)或其他缺乏強(qiáng)大網(wǎng)絡(luò)的區(qū)域。 MQTT是Azure和Amazon服務(wù)產(chǎn)品的一部分,因此它具有很多已建立的架構(gòu),使其易于適應(yīng)當(dāng)前的開(kāi)發(fā)人員。
在CoAP的情況下,最強(qiáng)的用例是與HTTP的兼容性。如果您有一個(gè)基于Web服務(wù)的現(xiàn)有系統(tǒng),那么在CoAP中添加是一個(gè)很好的選擇。它建立在用戶數(shù)據(jù)報(bào)協(xié)議(UDP)上,這在一些資源有限的環(huán)境中是有用的。由于UDP允許廣播和多播,您可以使用較少的帶寬潛在地傳輸?shù)蕉鄠€(gè)主機(jī)。這使得它對(duì)于設(shè)備需要快速交流的本地網(wǎng)絡(luò)環(huán)境很好,這對(duì)于一些M2M設(shè)置是傳統(tǒng)的。
如果物聯(lián)網(wǎng)開(kāi)發(fā)人員正在使用將利用現(xiàn)有Web服務(wù)器架構(gòu)的設(shè)備,開(kāi)發(fā)人員將使用CoAP。但是,如果開(kāi)發(fā)者正在構(gòu)建一個(gè)設(shè)備真正“僅報(bào)告”的東西 - 也就是說(shuō),它被丟棄在網(wǎng)絡(luò)上,只需要將數(shù)據(jù)報(bào)告回服務(wù)器 - CoAP將會(huì)更好。其他用途,如云架構(gòu),可能最好用MQTT完成。
MQTT和CoAP的未來(lái)
隨著時(shí)間的推移,對(duì)于其他協(xié)議,使用或行業(yè)采用趨向于向更自由和包容的平臺(tái)遷移,除非非包容性平臺(tái)更好。 MQTT和CoAP都是開(kāi)放標(biāo)準(zhǔn),任何人都可以實(shí)現(xiàn)。 CoAP由標(biāo)準(zhǔn)機(jī)構(gòu)啟動(dòng),而不是由私有公司(包括IBM)設(shè)計(jì)的MQTT。 CoAP被設(shè)計(jì)為處理資源有限的環(huán)境,可能是它成為贏家,但是目前MQTT似乎處于領(lǐng)先地位。 MQTT背后有顯著的動(dòng)力 - 大云玩家已經(jīng)選擇了這一勢(shì)頭,或者至少選擇它。此外,許多商業(yè)用例需要MQTT(存儲(chǔ)和轉(zhuǎn)發(fā),集中式主機(jī))的功能。然而,一種可能性是,一些圍繞HTTP(例如移動(dòng)應(yīng)用程序開(kāi)發(fā))進(jìn)行標(biāo)準(zhǔn)化的軟件開(kāi)發(fā)可以開(kāi)始利用CoAP來(lái)處理外圍設(shè)備,并與后端通信,以幫助減少不良連接帶寬。
最終,這些協(xié)議可以通過(guò)互聯(lián)網(wǎng)有效部署在不同的應(yīng)用程序中。我們知道有特定的使用案例,其中每個(gè)都是最好的,但是我們也知道,物聯(lián)網(wǎng)和物聯(lián)網(wǎng)設(shè)備將會(huì)在復(fù)雜性和普及性方面繼續(xù)發(fā)展。對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),了解應(yīng)用程序的關(guān)鍵差異不僅可以實(shí)現(xiàn)更好的初始部署,而且可以為今后的開(kāi)發(fā)工作奠定堅(jiān)實(shí)的基礎(chǔ)。
(審核編輯: 林靜)
分享