上次我們談到了mqtt協議,mqtt作為一個開源協議,其轉發伺服器種類很多,比較常見的是Apache-Apollo、Mosquitto等,據相關資料介紹二者均能支持萬級用戶並發。

這兩種筆者都運行過,Apache-Apollo依賴於JAVA環境,操作簡單、可視化強,但是其輸出調試信息相對簡單,系統問題比較難追蹤;Mosquitto採用C語言編寫,程序配置相對複雜寫,但是輸出的調試信息比較全,有利於系統問題的定位。筆者開發的系統最終選用Mosquitto。

針對不同的開發語言mqtt均有可以參考的庫,這樣加快了系統開發速度。筆者信息採集端採用了嵌入式C語言MQTT庫開發,數據存儲端採用了python mqtt庫。

mqtt協議中採集端與存儲端是通過broken轉發,為保證數據的有效傳輸,協議中QOS策略應該為1。同時考慮到網路的不穩定性,本地系統應該有一定的緩存機制,筆者開發系統中採用MCU實時採集數據,IMX6UL緩存並mqtt發送數據,有效的防止了數據丟失。

推薦閱讀:

相关文章