物聯(lián)網(wǎng)曾被認為是繼計算機、互聯(lián)網(wǎng)之后,信息技術(shù)行業(yè)的第三次浪潮。隨著基礎(chǔ)通訊設(shè)施的不斷完善,尤其是 5G 的出現(xiàn),進一步降低了萬物互聯(lián)的門檻和成本。
物聯(lián)網(wǎng)本身也是 AI 和區(qū)塊鏈應(yīng)用很好的落地場景之一,各大云服務(wù)商也在紛紛上架物聯(lián)網(wǎng)平臺和服務(wù)。
在 AI 和區(qū)塊鏈的熱潮過去之后,物聯(lián)網(wǎng)很有可能成為下一個風口,在風口到來之前,提前進行一些知識儲備,是很有必要的。
縱觀人工智能的發(fā)展路線我們可以看到,人工智能近年來之所以能夠突飛猛進。
第一個原因是硬件的發(fā)展,使得深度學(xué)習神經(jīng)網(wǎng)絡(luò)的學(xué)習時間迅速縮短;
第二就是數(shù)據(jù),在我們這個大數(shù)據(jù)的時代,獲取大量數(shù)據(jù)的成本已經(jīng)很低了。
再來說物聯(lián)網(wǎng),像傳感器、智能家電、可穿戴設(shè)備等,每天也都在產(chǎn)生著巨量的數(shù)據(jù),這也是反饋給深度學(xué)習良好的訓(xùn)練數(shù)據(jù)。
同時,學(xué)習的結(jié)果又可以再應(yīng)用到物聯(lián)網(wǎng)的終端,形成一個良性的循環(huán)。舉個例子:
從交通探頭我們可以采集到大量的交通實時圖片,經(jīng)過處理之后,喂給神經(jīng)網(wǎng)絡(luò),比如 SSD。
SSD 學(xué)會在圖片中標注出人和汽車的位置,然后再把模型部署到探頭端,探頭就可以利用深度學(xué)習的接口,來實時地分析人流和車流情況了。
所以我認為物聯(lián)網(wǎng)是 AI 落地的一個非常好的應(yīng)用場景,隨著 AI 的迅速發(fā)展,物聯(lián)網(wǎng)這個同樣在很多年前就提出的理論和技術(shù),也會迎來新的春天。
如果想入門物聯(lián)網(wǎng),學(xué)習和了解 MQTT 協(xié)議是非常必要的,它解決了物聯(lián)網(wǎng)中的一個最基礎(chǔ)的問題,設(shè)備和設(shè)備之間,設(shè)備和云端服務(wù)之間,是怎么通訊的。
MQTT 之于物聯(lián)網(wǎng),就好像 HTTP 之于 Web 那么重要。目前基本所有開放云平臺比如阿里云、騰訊云、青云等都支持 MQTT 的接入。
MQTT 是什么?
MQTT,全稱為 Message Queue Telemetry Transport。在 1999 年,由 IBM 的 Andy Stanford-Clark 和 Arcom 的 Arlen Nipper 為了一個通過衛(wèi)星網(wǎng)絡(luò)連接輸油管道的項目開發(fā)的。
之后 IBM 一直將 MQTT 作為一個內(nèi)部協(xié)議在其產(chǎn)品中使用,直到 2010 年,IBM 公開發(fā)布了 MQTT 3.1 版本。在 2014 年,MQTT 協(xié)議正式成為了 OASIS(結(jié)構(gòu)化信息標準促進組織)的標準協(xié)議。
隨著多年的發(fā)展,MQTT 協(xié)議的重點也不再只是嵌入式系統(tǒng),而是更廣泛的物聯(lián)網(wǎng)(Internet of Things)世界了。
MQTT 的優(yōu)點
為了滿足低電量消耗和低網(wǎng)絡(luò)帶寬的需求,MQTT 協(xié)議在設(shè)計之初就包含了以下一些特點:
1. 實現(xiàn)簡單
2. 提供數(shù)據(jù)傳輸?shù)?QoS
3. 輕量、占用帶寬低
4. 可傳輸任意類型的數(shù)據(jù)
5. 可保持的會話(session)
MQTT 協(xié)議可以為大量的低功率、工作網(wǎng)絡(luò)環(huán)境不可靠的物聯(lián)網(wǎng)設(shè)備提供通訊保障。
而它的應(yīng)用范圍也不僅如此,在移動互聯(lián)網(wǎng)領(lǐng)域也大有作為:很多 Android App 的推送功能,都是基于 MQTT 實現(xiàn)的,也有一些 IM 的實現(xiàn),是基于 MQTT 的。
MQTT 為什么如此輕量且靈活?
MQTT 發(fā)布和訂閱模型
簡單來說是因為 MQTT 協(xié)議有以下特性:
基于 TCP 協(xié)議的應(yīng)用層協(xié)議;
采用 C/S 架構(gòu);
使用訂閱/發(fā)布模式,將消息的發(fā)送方和接受方解耦;
提供 3 種消息的 QoS(Quality of Service): 至多一次,最少一次,只有一次;
收發(fā)消息都是異步的,發(fā)送方不需要等待接收方應(yīng)答。
雖然 MQTT 協(xié)議名稱有 Message Queue 兩個詞,但是它并不是一個像 RabbitMQ 那樣的一個消息隊列,這是初學(xué)者最容易搞混的一個問題。MQTT 跟傳統(tǒng)的消息隊列相比,有以下一些區(qū)別:
1. 在傳統(tǒng)消息隊列中,在發(fā)送消息之前,必須先創(chuàng)建相應(yīng)的隊列;在 MQTT 中,不需要預(yù)先創(chuàng)建要發(fā)布的主題(可訂閱的 Topic);
2. 在傳統(tǒng)消息隊列中,未被消費的消息總是會被保存在某個隊列中,直到有一個消費者將其消費;在 MQTT 中,如果發(fā)布一個沒有被任何客戶端訂閱的消息,這個消息將被直接扔掉;
3. 在傳統(tǒng)消息隊列中,一個消息只能被一個客戶端獲取,在 MQTT 中,一個消息可以被多個訂閱者獲取,MQTT 協(xié)議也不支持指定消息被單一的客戶端獲取。
一個物聯(lián)網(wǎng)老兵的經(jīng)驗之談
我從 2015 年開始帶領(lǐng)團隊在物聯(lián)網(wǎng)領(lǐng)域創(chuàng)業(yè),從物聯(lián)網(wǎng)軟硬件平臺的架構(gòu)到實現(xiàn),從上線運營到盈利,中間走過一些彎路,也踩過一些坑。
同時,我在社區(qū)、論壇、QQ 群里面也經(jīng)??匆娨恍﹦倓偨佑| MQTT 的同學(xué)在問各種問題。
我曾經(jīng)在網(wǎng)絡(luò)上面也搜索過 MQTT 相關(guān)的內(nèi)容,發(fā)現(xiàn)系統(tǒng)介紹 MQTT 協(xié)議的內(nèi)容很少,要么是翻譯協(xié)議的 Specification,要么是單獨實現(xiàn)某一個功能的教程。只教其然,未教其所以然。
所以我總結(jié)了自己的實踐經(jīng)驗,以及我看到的大家常遇到的問題,寫了這一門課程,系統(tǒng)地介紹 MQTT 協(xié)議,希望對學(xué)習 MQTT 的同學(xué)有所幫助。
-
傳感器
+關(guān)注
關(guān)注
2551文章
51099瀏覽量
753606 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44635瀏覽量
373400 -
MQTT
+關(guān)注
關(guān)注
5文章
651瀏覽量
22507
原文標題:MQTT,物聯(lián)網(wǎng)圈的 HTTP,萬物互聯(lián)第一步
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論