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