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