IoT -- (八)MQTT优缺点
物聯網并不僅僅是一種網絡,而是一個新的生態環境,它描述的本質是越來越多的使用物品通過網絡連接在一起并可使用單個或者多個的終端設備對它們進行各種控制和使用—當然,工業上的物聯網通常連接到的石鼓傳感器或者其他數據采集儀器以及行為單位。思科曾經預測過,物聯網市場的規模可能在14萬億美金左右,前景極為光明。
眾所周知,物聯網是在傳統互聯網基礎上延伸和擴展而出的概念,用戶端從傳統的計算機延伸和擴展到了任何物品與物品之間,而物品則通過各種傳感器進行信息采集,然后通過計算設備進行網絡信息交換與 通信。但是當前移動互聯網正處于起步階段,很多時候無法提供可靠的網絡保障,因此,IBM主導并提出了MQTT協議,致力于解決這一方面的問題。
什么是MQTT協議?
MQTT是一個由IBM主導開發的物聯網傳輸協議,它被設計用于輕量級的發布/訂閱式消息傳輸,旨在為低帶寬和不穩定的網絡環境中的物聯網設備提供可靠的網絡服務。它的核心設計思想是開源、可靠、輕巧、簡單,具有以下主要的幾項特性:
\1. 非常小的通信開銷(最小的消息大小為 2 字節);
\2. 支持各種流行編程語言(包括C,Java,Ruby,Python 等等)且易于使用的客戶端;
\3. 支持發布 / 預定模型,簡化應用程序的開發;
\4. 提供三種不同消息傳遞等級,讓消息能按需到達目的地,適應在不穩定工作的網絡傳輸需求
對于傳統的HTTP和MQ協議,MQTT的優勢在哪里呢?這有一張表格能清楚的展示這一點
低協議開銷
MQTT 的獨特之處在于,它的每消息標題可以短至 2 個字節。MQ 和 HTTP 都擁有高得多的每消息開銷。對于 HTTP,為每個新請求消息重新建立 HTTP 連接會導致重大的開銷。MQ 和 MQTT 所使用的永久連接顯著減少了這一開銷。
對不穩定網絡的容忍
MQTT 和 MQ 能夠從斷開等故障中恢復,而且沒有進一步的代碼需求。但是,HTTP 無法原生地實現此目的,需要客戶端重試編碼,這可能增加冪等性問題。
低功耗
MQTT 是專門針對低功耗目標而設計的。HTTP 的設計沒有考慮此因素,因此增加了功耗。
數百萬個連接的客戶端
在 HTTP 堆棧上,維護數百萬個并發連接,需要做許多的工作來提供支持。盡管可以實現此支持,但大多數商業產品都為處理這一數量級的永久連接而進行了優化。IBM 提供了 IBM MessageSight,這是一個單機架裝載服務器,經過測試能處理多達 100 萬個通過 MQTT 并發連接的設備。相反,MQ 不是為大量并發客戶端而設計的。
推送通知
您需要能夠及時地將通知傳遞給客戶。為此,必須采用某種定期輪詢或推送方法;從電池、系統負載和帶寬角度講,推送是最佳解決方案。
我們的企業可能需要在沒有第三方中介的情況下發送敏感的信息。這降低了特定于操作系統的解決方案(比如 Apple iOS、Google Play 通知)作為主要傳輸機制的價值。
HTTP 只允許使用一種稱為COMET 的方法,使用持久的 HTTP 請求來執行推送。從客戶端和服務器的角度講,此方法都很昂貴。MQ 和 MQTT 都支持推送,這是它們的一個基本特性。
客戶端平臺差異
HTTP 和 MQTT 客戶端都已在大量平臺上實現。MQTT 的簡單性有助于以極少的精力在額外的客戶端上實現 MQTT。
防火墻容錯
一些企業防火墻將出站連接限制到一些已定義的端口。這些端口通常被限制為 HTTP(80 端口)、HTTPS(443 端口)等。HTTP 顯然可以在這些情況下運行。MQTT 可 封裝在一個 WebSockets 連接中,顯示為一個 HTTP 升級請求,從而允許在這些情況下運行。MQ 不允許采用這種模式。
事實上,MQTT的應用非常之廣泛,幾乎現在隨便找一家大型的硬件、互聯網企業,都可以找到MQTT的身影,例如Facebook、BP、alibaba、baidu等等
MQTT 協議的缺陷以及MQTT+概念的提出
由于MQTT本身的各項技術優勢,越來越多的企業傾向于選用MQTT作為物聯網產品通訊的標準協議,也因此,工程師們漸漸發現MQTT協議要想大規模商用,也有一些有待完善的功能。比如:
——沒有齊備的SDK,不同的異構終端,需要有對應的與MQTT服務器通信的軟件SDK包,比如MCU、Linux、Android、IOS、WEB等之間要實現互聯互通必然需要不同的SDK包
——不支持File和AV,有些應用場景,需要傳輸的信息可能不僅僅限于指令,比如聲音信號和視頻信號,這些需要通過File和AV來實現通信。
——不支持與第三方HTTP的集成,雖然MQTT協議優于普通的HTTP協議,但是基于傳統的HTTP協議的WEB服務器仍然占主流市場,那么這些服務器要實現與MQTT協議的互聯互通,以降低升級成本也尤為關鍵。
——不支持負載均衡,為防止高并發和惡意攻擊,負載均衡服務器也必不可少。
——不支持用戶管理接口,用戶在進行設備的行為數據分析的時候,顯得尤為重要,這又是工業4.0、大數據時代的必然需求。
——不支持離線消息,彌補設備離線以后,MQTT服務器對設備的控制信息丟失的問題。
——不支持點對點通信,采用標準的MQTT協議,理論上可以通過相互訂閱的方式實現點對點通信,但是邏輯相對復雜,并且對設備的安全性方面存在擔憂。當設備B和設備C在同一主題的情況下,設備A無法知道是設備B還是設備C發送的消息,也有可能消息被設備D竊聽。
——不支持群通信和群管理,實現了對群組成員的管理,群組成員之間能互通消息,這在一個設備被多人控制,或者多個設備被一人控制的這種場景下,尤為有用。
這些問題阻礙了MQTT技術在國內市場的進一步發展,畢竟對于單個的公司或者工程師而言,想要解決它們需要耗費大量的資源和時間,并且穩定性的驗證也需要一個較長的時間周期。但近期,國內的一支物聯網開發團隊經過兩年艱苦的研發和商業化驗證,在MQTT協議的基礎上,正式提出了一套新的解決方案,稱之為ET-iLink MQTT+物聯網解決方案,團隊同步公布了其中的一些細節和技術指標,引起了業界的關注。
MQTT+ 連接云是什么?
ET-iLink MQTT+物聯網解決方案是一套綜合性的方案,下圖是使用MQTT+作為設備接入協議的整體解決方案框圖。
設備使用MQTT+客戶端可以在特定的主題上發布消息,也可以通過訂閱特定的主題以接收其他設備或者用戶發布的消息,從而實現M2M,M2P,P2M的通信。
云網關LB Sever負責設備的接入,協議適配,消息轉發等功能,如果要支持海量設備的接入,LB Sever集群是必須的。
設備管理負責設備接入認證,設備與用戶綁定,操作授權等相關的功能。
賬號管理負責用戶賬號安全認證,授權認證等相關的功能,同時也支持第三方賬號安全認證。
云服務負責設備業務邏輯。不同的設備廠商都有一套自己的業務邏輯和服務,這種服務可以和容易的運行在云端提供的容器中,使用基于容器的微服務使得應用程序能夠更快地進行創建,并且更易于維護,同時又能夠得到更高的質量。而數據的存儲和分析使用云平臺提供的通用的存儲服務和大數據分析引擎。
用戶只要注冊賬號,綁定設備,就可以通過 手機APP,微信或者web等終端輕松查看設備信息,與設備進行交互操作。
此解決方案具有的優勢有:
·移動設備
能在 8bit 位處理器上很好的運行 C /JavaScript/Java 的 client 庫分別只有 30/75/100KB
在移動設備上耗電率低,大約只需要 HTTP 的一半
·很好的適應各種復雜網絡,特別是受限網絡
預期并適應頻繁的網絡中斷,能應對低速、低質量的網絡
壓縮優化過后的協議,可以有效降低網絡流量,從而節約網絡成本
完成同樣的數據通信,MQTT只需要 HTTP 約 1/4 得數據流量
·發布 - 訂閱的消息通信協議,允許一條消息只發布一次,便可被多個消費端(應用程序 / 設備)所接收
·能夠實現設備與設備之間的點對點的雙向通信。
·對HTTP接口的兼容,能實現系統間松耦合,簡化開發,方便擴展,整合。
·提供靈活便捷的系統整合能力
使用微服務+docker的方式,快速部署高效運行云端服務
提供可靠的設備管理和賬號管理體系,您只需要關注核心業務
提供通用的數據存儲和數據分析服務
提供與第三方云平臺的對接功能
提供協議適配功能,客戶端可以使用多種通信協議與設備進行通信。
·提供豐富的安全性
使用 SSL 提供的認證和加密來保證傳輸安全性
采用賬號安全認證+設備安全認證結合的方式保證內容安全
·強大的性能提高系統的高可靠性
高連接數下系統低計算資源使用
高連接數下系統高信息處理速度
·提供多種消息服務質量,滿足不同場景需求
0 :消息最多被傳遞一次,比如一般類廣告,通知
1 :消息會被傳遞但可能會重復傳遞,比如賬戶余額通知
2 :消息保證傳遞且僅有一次傳遞,比如交易支付批復通知
硬件+軟件+私有云平臺開發套件/免費的公有云平臺支持
小e MQTT系列全功能 開發板是為了幫助工程師們快速實現物聯網項目的開發而提供一款配套開發板。考慮到實際的項目應用環境,它有兩個不同的版本:
小e1Wi-Fi全功能開發板采用ESP8266 WiFi SOC 芯片,采用Free RTOS實時操作系統,主頻可達160MHZ。支持標準的 IEEE802.11 b/g/n 協議,完整的 TCP/IP 協議棧,具有豐富的硬件接口,并配備OLED屏,溫濕度傳感器,大氣壓傳感器,RGB,IR等,利用微信進行遠程控制與語音互動,代碼開源。
小e2 2G透明串口開發板,是利用SIM卡和運營商的GPRS網絡提供無線數據傳輸功能的開發板,通過此開發板的2G模塊,可以提供各種設備(PC、手機、服務器)到模塊間的透明的數據交互
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的IoT -- (八)MQTT优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工业用微型计算机(16)-指令系统(11
- 下一篇: SpringAop @Pointcut(