MQTT,物聯網圈的 HTTP,萬物互聯第一步

作者:付強

物聯網曾被認爲是繼計算機、互聯網之後,信息技術行業的第三次浪潮。隨着基礎通訊設施的不斷完善,尤其是 5G 的出現,進一步降低了萬物互聯的門檻和成本。物聯網本身也是 AI 和區塊鏈應用很好的落地場景之一,各大雲服務商也在紛紛上架物聯網平臺和服務。在 AI 和區塊鏈的熱潮過去之後,物聯網很有可能成爲下一個風口,在風口到來之前,提前進行一些知識儲備,是很有必要的。

縱觀人工智能的發展路線我們可以看到,人工智能近年來之所以能夠突飛猛進,第一個原因是硬件的發展,使得深度學習神經網絡的學習時間迅速縮短;第二就是數據,在我們這個大數據的時代,獲取大量數據的成本已經很低了。

再來說物聯網,像傳感器、智能家電、可穿戴設備等,每天也都在產生着巨量的數據,這也是反饋給深度學習良好的訓練數據。同時,學習的結果又可以再應用到物聯網的終端,形成一個良性的循環。舉個例子:

從交通探頭我們可以採集到大量的交通實時圖片,經過處理之後,餵給神經網絡,比如 SSD。SSD 學會在圖片中標註出人和汽車的位置,然後再把模型部署到探頭端,探頭就可以利用深度學習的接口,來實時地分析人流和車流情況了。

所以我認爲物聯網是 AI 落地的一個非常好的應用場景,隨着 AI 的迅速發展,物聯網這個同樣在很多年前就提出的理論和技術,也會迎來新的春天。

如果想入門物聯網,學習和了解 MQTT 協議是非常必要的,它解決了物聯網中的一個最基礎的問題,設備和設備之間,設備和雲端服務之間,是怎麼通訊的。MQTT 之於物聯網,就好像 HTTP 之於 Web 那麼重要。目前基本所有開放雲平臺比如阿里雲、騰訊雲、青雲等都支持 MQTT 的接入。

MQTT 是什麼

MQTT,全稱爲 Message Queue Telemetry Transport。在 1999 年,由 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 爲了一個通過衛星網絡連接輸油管道的項目開發的。

之後 IBM 一直將 MQTT 作爲一個內部協議在其產品中使用,直到 2010 年,IBM 公開發布了 MQTT 3.1 版本。在 2014 年,MQTT 協議正式成爲了 OASIS(結構化信息標準促進組織)的標準協議。隨着多年的發展,MQTT 協議的重點也不再只是嵌入式系統,而是更廣泛的物聯網(Internet of Things)世界了。

MQTT 的優點

爲了滿足低電量消耗和低網絡帶寬的需求,MQTT 協議在設計之初就包含了以下一些特點:

  1. 實現簡單
  2. 提供數據傳輸的 QoS
  3. 輕量、佔用帶寬低
  4. 可傳輸任意類型的數據
  5. 可保持的會話(session)

MQTT 協議可以爲大量的低功率、工作網絡環境不可靠的物聯網設備提供通訊保障。而它的應用範圍也不僅如此,在移動互聯網領域也大有作爲:很多 Android App 的推送功能,都是基於 MQTT 實現的,也有一些 IM 的實現,是基於 MQTT 的。

MQTT 爲什麼如此輕量且靈活?

圖片
MQTT 發佈和訂閱模型

簡單來說是因爲 MQTT 協議有以下特性:

  • 基於 TCP 協議的應用層協議;
  • 採用 C/S 架構;
  • 使用訂閱/發佈模式,將消息的發送方和接受方解耦;
  • 提供 3 種消息的 QoS(Quality of Service): 至多一次,最少一次,只有一次;
  • 收發消息都是異步的,發送方不需要等待接收方應答。

雖然 MQTT 協議名稱有 Message Queue 兩個詞,但是它並不是一個像 RabbitMQ 那樣的一個消息隊列,這是初學者最容易搞混的一個問題。MQTT 跟傳統的消息隊列相比,有以下一些區別:

  1. 在傳統消息隊列中,在發送消息之前,必須先創建相應的隊列;在 MQTT 中,不需要預先創建要發佈的主題(可訂閱的 Topic);
  2. 在傳統消息隊列中,未被消費的消息總是會被保存在某個隊列中,直到有一個消費者將其消費;在 MQTT 中,如果發佈一個沒有被任何客戶端訂閱的消息,這個消息將被直接扔掉;
  3. 在傳統消息隊列中,一個消息只能被一個客戶端獲取,在 MQTT 中,一個消息可以被多個訂閱者獲取,MQTT 協議也不支持指定消息被單一的客戶端獲取。

一個物聯網老兵的經驗之談

我從 2015 年開始帶領團隊在物聯網領域創業,從物聯網軟硬件平臺的架構到實現,從上線運營到盈利,中間走過一些彎路,也踩過一些坑。同時,我在社區、論壇、QQ 羣裏面也經常看見一些剛剛接觸 MQTT 的同學在問各種問題。我曾經在網絡上面也搜索過 MQTT 相關的內容,發現系統介紹 MQTT 協議的內容很少,要麼是翻譯協議的 Specification,要麼是單獨實現某一個功能的教程。只教其然,未教其所以然。

所以我總結了自己的實踐經驗,以及我看到的大家常遇到的問題,寫了這一門課程,系統地介紹 MQTT 協議,希望對學習 MQTT 的同學有所幫助。

課程大綱

本課程共有三部分內容,總計 14 課:
在這裏插入圖片描述

  • 第一部分:講解 MQTT 協議以及其特性,並輔以代碼。
  • 第二部分:講解一個 AI+IoT 實戰項目。
  • 第三部分:講解如何搭建 MQTT Broker 和安全實踐,同時也會介紹 MQTT 5.0 版本的新特性。

掃描下方二維碼或點此試讀訂閱

在這裏插入圖片描述

其他推薦

本課程地址:https://gitbook.cn/gitchat/column/5be4f4df2c33167c317beb8c

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