IoT MQ設計篇:調研與協議選型

概述

本篇是IoT MQ系列的第一篇,本篇主要從以下幾個維度介紹下IoT MQ:

  1. IoT MQ和Kafka,RocketMQ,RabbitMQ這些消息隊列有什麼區別

  2. 目前IoT的傳輸協議有哪些,有什麼區別,如何選擇合適的協議作爲基礎協議?

  3. IoT MQ的適用場景有哪些?

IoT MQ到底是什麼東東

IoT MQ(Internet of things message queue)主要用來傳輸各種物聯網設備的消息,可以理解IoT MQ就是物聯網中的消息中間件。對於很多開發者而言,對於像Kafka,RocketMQ,RabbitMQ這樣的消息隊列是很熟悉的,那麼IoT MQ相對於其他這種消息隊列有哪些區別呢。

  1. 適用對象: Kafka這一類的MQ的適用對象是各個系統,主要解決問題是各業務系統間的數據交互問題,其中兩個最爲重要的特徵是:“異步解耦,削峯填谷”,IoT MQ的適用對象主要是各種物聯網設備,例如手環健康統計;大棚溫度,光照數據採集設備;手機APP等。最明顯的特徵是:“連接終端多種多樣,網絡不可靠”。

  2. 設計複雜度: 設計系統時,系統的複雜度主要有“高可用,高性能,高可靠,規模,成本,安全,高擴展”等,其中“三高”是比較難設計的,對於Kafka,RocketMQ等就是“三高”的系統,所以內部很複雜,使用協議也是其自定義的私有協議。對於IoT MQ而言,消息數據的高可靠相對而言沒有那麼重要,因爲百分之90的物聯網設備的場景都是網絡不可靠的,消息偶爾丟失是可以的。但是對於Kafka這類MQ和IoT MQ還有兩個很明顯的區別是:Kafka這一類是“低連接高請求“的,而IoT MQ是高連接高請求的。。

IoT MQ協議

目前比較流行的IoT通信協議主要有:mqtt,coap,nb-iot,xmapp,http等。這裏主要介紹mqtt和coap協議,這也是目前使用最多的協議。

coap

coap(Constrained Application Protocol)應用受限協議,其底層的傳輸協議是UDP,簡單來看,通信方式像是一個很簡單的http協議,主要特徵有:

  1. 基於UDP,不需要考慮連接成本,但是需要自己控制消息的重傳,順序等,相應的消息可靠性降低,但是傳輸成本降低,傳輸的數據量很小,

  2. 通信方式跟Http很像,更像是M2M的,例如通過手機查看智能手環採集的心率信息。每個終端都可以看成即是服務器也是客戶端。

  3. 廣播消息等是額外補充的協議,收集coap協議終端的數據相對比較麻煩。

mqtt

mqtt(Message Queuing Telemetry Transpor)消息隊列遙測傳輸協議,其底層的傳輸協議是TCP,通信方式與Kafka這類MQ的通信方式很像,主要分爲客戶端設備與Mqtt服務端兩個概念,設備採集消息與傳輸到服務端,服務端進行中專,主要特徵有:

  1. 基於TCP,在物聯網內通信需要長連接,但是設備數很多(百萬級)並且網絡不可靠,所以對於連接設計的處理非常重要。

  2. 默認是廣播的,topic數量需要維護並且數量非常大,

mqtt與coap目前是使用最廣的物聯網通信協議,其中mqtt實際上使用最多的物聯網協議,對與這兩種協議而言,主要應用場景都是物聯網,coap基於UDP,複雜度主要在於消息的可靠性,順序,重傳等需要自己處理,同時UDP保證了很高的性能,沒有連接的開銷;mqtt基於TCP,複雜度主要是設備session的保存,長連接的處理等,所以coap更適合那種對於數據可靠性要求比較低,數據性能要求更高,網絡更差的場景,mqtt則與之相反,同時mqtt也很好做一些擴展,例如websocket協議,TLS安全等。如果要進行數據的採集,因爲mqtt有Broker的概念,與kafka這些很像,這也是我們選擇mqtt協議爲基礎研發IoT MQ的原因。

IoT MQ適用場景

  1. 物聯網設備信息上行採集與下行下發:例如淨水池的設備每隔一小時採集一條水質報告傳輸到雲上進行分析,通過設備管理平臺可以下發一些消息對每個設備進行管理

  2. 設備與設備之間簡單交互(M2M),例如自己手機觀察手環採集的心率信息,不需要額外的服務器,只需要手機與手環進行交互

  3. 即時通訊:mqtt協議比較適合用來做即時通信,即app聊天,通知,彈幕等

  4. 其它:一般來說,IoT 意味着設備多種多樣且數量很多,網絡不可靠等,所以這些協議都是以這樣的環境產生的,在設計這樣的mq時,除了考慮本身協議的實現和應用場景外,還要考慮如何做一些擴展,特別是運維管理,監控等

我在github上用Java和netty實現了一個mqtt協議的服務端,歡迎使用:jmqtt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章