深度剖析物聯(lián)網(wǎng)服務(wù)結(jié)構(gòu)如何構(gòu)建
講到物聯(lián)網(wǎng),大多數(shù)人還是不太清楚物聯(lián)網(wǎng)具體是什么、運(yùn)作模式什么樣、作用如何。而本文中,筆者就從物聯(lián)網(wǎng)的三個(gè)構(gòu)成要素出發(fā),向我們介紹什么是物聯(lián)網(wǎng)。
近年來,物聯(lián)網(wǎng)在國(guó)內(nèi)乃至全世界都非常火熱,它被稱為三次信息產(chǎn)業(yè)浪潮,將極大地改變?nèi)藗兊纳罘绞脚c人類社會(huì)的運(yùn)行。
作為發(fā)展不是特別成熟的行業(yè),很多人對(duì)于物聯(lián)網(wǎng)結(jié)構(gòu)還不具備特別清晰的認(rèn)識(shí)。作為物聯(lián)網(wǎng)行業(yè)中摸爬滾打6年的老兵,本次我將用通俗易懂的語言,解開物聯(lián)網(wǎng)服務(wù)的神秘面紗,希望幫助各位童鞋更加深刻的理解物聯(lián)網(wǎng)服務(wù)結(jié)構(gòu)的搭建。
一、引言
簡(jiǎn)單地說實(shí)現(xiàn)物聯(lián)網(wǎng)時(shí),主要是在服務(wù)上解決兩個(gè)層面的東西:
1. 把設(shè)備采集的傳感器數(shù)據(jù),通過各種網(wǎng)絡(luò)方式傳輸?shù)椒?wù)器保存在數(shù)據(jù)庫(kù),并對(duì)采集的數(shù)據(jù)進(jìn)行加工分析,然后執(zhí)行對(duì)應(yīng)呈現(xiàn)和響應(yīng)。
2. 基于控制設(shè)備的需求,需要能夠?qū)崿F(xiàn)向設(shè)備發(fā)送相關(guān)指令和信息,讓設(shè)備作出對(duì)應(yīng)響應(yīng)。
本次我們也將是主要這兩個(gè)層面進(jìn)行剖析,幫助大家理解清楚如何構(gòu)建物聯(lián)網(wǎng)服務(wù),以及用于實(shí)現(xiàn)物聯(lián)網(wǎng)的重要要素。
結(jié)合物聯(lián)網(wǎng)標(biāo)準(zhǔn)的三層的結(jié)構(gòu)定義,同時(shí)考慮實(shí)際運(yùn)用的通俗說法,我們可以將物聯(lián)網(wǎng)劃分為3個(gè)構(gòu)成要素:設(shè)備、網(wǎng)關(guān)、服務(wù)器。
二、要素之設(shè)備
大家很容易理解和感知的是——身邊的智能手機(jī)以及其他智能硬件設(shè)備,都是由硬件和軟件兩部分組成的。
硬件主要是經(jīng)過ID設(shè)計(jì)、MD設(shè)計(jì),然后基于實(shí)體制作的精致實(shí)體。軟件則是基于使用使用需求制作來控制硬件的。設(shè)備開發(fā)的角度看問題,就是在最大限度內(nèi)實(shí)現(xiàn)硬件和軟件的完美結(jié)合。
對(duì)于平日里從事應(yīng)用程序開發(fā)的工程師來說,說到設(shè)備開發(fā),多少都很感覺茫然,在考慮設(shè)備軟件開發(fā)時(shí),也多少會(huì)擔(dān)心以下問題:
- 做硬件設(shè)備的控制軟件需不需要對(duì)硬件有深入的了解
- 開發(fā)設(shè)備軟件需要什么樣的專業(yè)知識(shí)
- 開發(fā)設(shè)備軟件需要一些不同于應(yīng)用程序的開發(fā)環(huán)境嗎
毫無疑問,需要!
設(shè)備軟件就是大家通常聽到的“嵌入式程序”,主要就是控制設(shè)備中的各種器件,需要較強(qiáng)的專業(yè)性以及一些硬件功底。
2.1 連通性給設(shè)備帶來的變化
在設(shè)備層面,物聯(lián)網(wǎng)會(huì)帶來哪些變化呢?總結(jié)下來就是“連通性”,幫助設(shè)備實(shí)現(xiàn)與外部系統(tǒng)或者設(shè)備的相互連接。
以前由于一些原因,很多設(shè)備是不具備連通性的:一些是因?yàn)橹皼]有詳細(xì)的需求,另外一些是由于設(shè)備本身就是用來獨(dú)立實(shí)現(xiàn)功能的。這樣的設(shè)備一旦出廠就沒有再對(duì)產(chǎn)品進(jìn)行升級(jí)了,所以研發(fā)周期相對(duì)較長(zhǎng),對(duì)于測(cè)試也相對(duì)嚴(yán)苛。
賦予連通性后,物聯(lián)網(wǎng)設(shè)備就不僅僅是是一個(gè)設(shè)備本身份,還提供的是一種與云服務(wù)或者智能手機(jī)等外部機(jī)器組合在一起的服務(wù)。這樣的情況下,更新設(shè)備應(yīng)用程序變得非常簡(jiǎn)單,產(chǎn)品發(fā)布之后,還可以根據(jù)用戶反饋,采用OTA方式不斷改良設(shè)備軟件。此外,還可以在云端對(duì)大量設(shè)備進(jìn)行匯總和信息整合加工,以應(yīng)用程序的方式向用戶提供有益的信息。
硬件本身的開發(fā)成本競(jìng)爭(zhēng)一直都異常激化,物聯(lián)網(wǎng)會(huì)導(dǎo)致設(shè)備開發(fā)走向高級(jí)化。基于設(shè)備開發(fā),將服務(wù)整體作為一個(gè)生態(tài)系統(tǒng)來進(jìn)行適宜的設(shè)計(jì)規(guī)劃,重要性不言而喻。
比如:基于大數(shù)據(jù)算法,為用戶提供吃力設(shè)備數(shù)據(jù)的高級(jí)分析服務(wù),或者構(gòu)建應(yīng)用程序呈現(xiàn)設(shè)備的變化情況,亦或者基于人工智能計(jì)劃,使設(shè)備基于變化情況作出一些正確的反饋動(dòng)作。
為了最大程度適應(yīng)物聯(lián)網(wǎng)帶來的連通性變化,設(shè)備開發(fā)工程師和應(yīng)用程序開發(fā)工程師,需要相互理解對(duì)方并達(dá)成共識(shí)。只有雙方各自理解對(duì)方領(lǐng)域的程序是如何工作和運(yùn)行的,才能在應(yīng)用程序高速開發(fā)的牽引下,打造成非常匹配的物聯(lián)網(wǎng)設(shè)備和對(duì)應(yīng)的服務(wù)。
2.2 物聯(lián)網(wǎng)設(shè)備的組成要素
物聯(lián)網(wǎng)設(shè)備和傳統(tǒng)生活中我們所見的其他設(shè)備沒有多大的本質(zhì)區(qū)別,主要作用均是通過感知周邊環(huán)境變化,然后輸出對(duì)應(yīng)信息,或者在用戶操控下執(zhí)行某些動(dòng)作,差異點(diǎn)就在于多了一個(gè)物聯(lián)網(wǎng)網(wǎng)絡(luò)服務(wù)。
微控制器
也就是我們常說的單片機(jī),使用較為廣泛的是傳統(tǒng)的51系列單片機(jī)及STM32,是一個(gè)微型控制器芯片。支持編寫程序,然后按照對(duì)應(yīng)程序讀取各IO口狀態(tài)信息,或者利用IO口輸出各特定電信號(hào)。微控制器主要由CPU、內(nèi)存、外圍電路組成。
輸入設(shè)備
輸入設(shè)備主要是幫助設(shè)備感知周邊的數(shù)據(jù)信息,主要是一些傳感器或者按鈕等電子元件。比如我們常見的麥克風(fēng)、鼠標(biāo)、鍵盤、溫度傳感器、重力感應(yīng)陀螺儀等都屬于輸入設(shè)備,主要是負(fù)責(zé)采集信號(hào),幫助了解周邊現(xiàn)實(shí)世界的信息。
輸出設(shè)備
設(shè)備要實(shí)現(xiàn)的不僅僅是對(duì)周邊的環(huán)境信息的感知,還需要將感知的信息進(jìn)行呈現(xiàn),將狀態(tài)“可視化”。方便人類獲取信息,并進(jìn)行干預(yù)操作。向用戶反饋信息,我們常見的輸出設(shè)備有LED顯示屏、蜂鳴器等。
連接網(wǎng)絡(luò)
物聯(lián)網(wǎng)一個(gè)重要的特性就是連接網(wǎng)絡(luò),設(shè)備通過網(wǎng)絡(luò)與服務(wù)器進(jìn)行信息交換,積累數(shù)據(jù)做出分析決策,同時(shí)可以遠(yuǎn)程控制設(shè)備。連接的網(wǎng)絡(luò)包含了有線網(wǎng)絡(luò)和無線網(wǎng)絡(luò)兩種方式,根據(jù)不同應(yīng)用需求可以選擇不同連接網(wǎng)絡(luò)方式。有線連接包含以太網(wǎng)、串口通信、USB、等,無線連接包含WIFI、2G/3G/4G/5G、藍(lán)牙、NB等等。
2.3 物聯(lián)設(shè)備連接網(wǎng)絡(luò)的方式
設(shè)備連接網(wǎng)絡(luò)的方式有兩種,一種是設(shè)備直連,一種是設(shè)備連接網(wǎng)關(guān),網(wǎng)關(guān)連接網(wǎng)絡(luò)。目前發(fā)展最快的方式,主要是直連型的方式,尤其是廣域網(wǎng)通信方式下。
網(wǎng)關(guān)設(shè)備與物聯(lián)網(wǎng)設(shè)備相比較,其更加復(fù)雜可以處理數(shù)據(jù)再次發(fā)送及數(shù)據(jù)存儲(chǔ),另外通常情況下,網(wǎng)關(guān)設(shè)備還支持高級(jí)加密數(shù)據(jù),可以加大數(shù)據(jù)安全性。直連型設(shè)備無須考慮網(wǎng)關(guān),構(gòu)建系統(tǒng)更容易,但是需要考慮再次發(fā)送數(shù)據(jù)等。
2.4 傳感器機(jī)制
利用物理特性的傳感器
傳感器根據(jù)用途而內(nèi)置不同的檢測(cè)元件,檢測(cè)元件的電子特性會(huì)隨著環(huán)境的變化而變化,檢測(cè)電子特性的變化就可以檢測(cè)對(duì)應(yīng)信息的變化。
利用幾何變異的傳感器
傳感器根據(jù)不同的幾何學(xué)特性來輸出特定信息,例如測(cè)距傳感器利用與障礙物之間的幾何學(xué)關(guān)系來測(cè)算距離,不同距離傳感器輸出對(duì)應(yīng)的電壓值。
2.5 傳感器的利用過程
微控制器主要是負(fù)責(zé)接收傳感器輸出的信息及控制設(shè)備,它具體是如何控制處理電子信號(hào)的呢?
首先我們需要先了解一下傳感器的電子信號(hào)特性。傳感器具備具有毫伏級(jí)的微信號(hào),并且輸出的是具有一定噪聲的模擬信號(hào),控制器要完整接收信息就需要進(jìn)行一系列的信號(hào)處理。
傳感器采集到信號(hào)后,由于信號(hào)比較微弱因此需要先放大信號(hào),由于微控制芯片屬于數(shù)字器件因此需要將模擬信號(hào)轉(zhuǎn)為數(shù)字信號(hào),最后是轉(zhuǎn)換成具體測(cè)量的數(shù)值。
2.6 輸出設(shè)備使用
傳感器的作用是采集信息進(jìn)行分析,處理后同樣需要把結(jié)果反饋給用戶或者環(huán)境,那么就需要使用到輸出設(shè)備。使用輸出設(shè)備,我們需要注意的輸出設(shè)備的利用效能,以便將相關(guān)結(jié)果進(jìn)行很好的呈現(xiàn)。
三、要素之網(wǎng)關(guān)
3.1 網(wǎng)關(guān)組成
在物聯(lián)網(wǎng)系統(tǒng)中,不能連接到互聯(lián)網(wǎng)的設(shè)備就需要使用網(wǎng)關(guān),網(wǎng)關(guān)主要就是負(fù)責(zé)把這些設(shè)備連接到互聯(lián)網(wǎng)那個(gè)。網(wǎng)關(guān)是指能連接多臺(tái)設(shè)備,并具備直接連接到互聯(lián)網(wǎng)的功能機(jī)器和軟件。
3.2 網(wǎng)關(guān)的作用
網(wǎng)關(guān)扮演的重要作用是采集數(shù)據(jù)的環(huán)節(jié),主要是三種功能:
1)從設(shè)備接收數(shù)據(jù)
設(shè)備和網(wǎng)關(guān)通過各種各樣的接口連接,當(dāng)通過傳感器終端連接時(shí),多數(shù)情況下是傳感器單方面持續(xù)向服務(wù)器發(fā)送數(shù)據(jù)。根據(jù)設(shè)備不同,也存在設(shè)備申請(qǐng)從外部獲取數(shù)據(jù)時(shí),服務(wù)器向設(shè)備發(fā)送數(shù)據(jù)的情況,這個(gè)時(shí)候就需要通過網(wǎng)關(guān)申請(qǐng)數(shù)據(jù)。
2)生成要發(fā)送的數(shù)據(jù)
從設(shè)備接收到數(shù)據(jù)后,就需要轉(zhuǎn)換成能發(fā)送給服務(wù)器的格式,通常是轉(zhuǎn)化成數(shù)值數(shù)據(jù)或者字符串格式。發(fā)送數(shù)據(jù)的過程中,可能會(huì)存在這樣的操作,對(duì)數(shù)據(jù)進(jìn)行整合減少數(shù)據(jù)量,或者合并發(fā)送。
3)把數(shù)據(jù)發(fā)送到服務(wù)器
向服務(wù)器發(fā)送數(shù)據(jù)的協(xié)議取決于服務(wù)器端,如果需要發(fā)現(xiàn)接收數(shù)據(jù),需要實(shí)現(xiàn)準(zhǔn)備好相關(guān)功能設(shè)置。
四、要素之服務(wù)器
服務(wù)器在整個(gè)物聯(lián)網(wǎng)服務(wù)結(jié)構(gòu)中,主要扮演者4層作用,即:數(shù)據(jù)接收、數(shù)據(jù)處理、存儲(chǔ)數(shù)據(jù)、反控?cái)?shù)據(jù)發(fā)送。
4.1 數(shù)據(jù)接收
服務(wù)器通過約定的協(xié)議接收來自設(shè)備端的數(shù)據(jù),協(xié)議包含有HTTP協(xié)議、WebSocket、MQTT、COAP等,下面我們將來詳細(xì)了解一下各個(gè)協(xié)議。
HTTP、WebSocket都是常見協(xié)議我們就不說了,我們來看一下MQTT協(xié)議。
MQTT是最近幾年出來的協(xié)議,物聯(lián)網(wǎng)領(lǐng)域會(huì)將其作為標(biāo)準(zhǔn)協(xié)議,MQTT原本是IBM公司開發(fā)的協(xié)議,現(xiàn)在開源了。
MQTT協(xié)議能夠?qū)崿F(xiàn)一對(duì)多通信,主要由發(fā)布者、訂閱者、中介構(gòu)成。中介承擔(dān)著轉(zhuǎn)發(fā)MQTT通信的服務(wù)器作用,發(fā)布者和訂閱者承擔(dān)的是客戶端的作用。發(fā)布者是發(fā)送消息的客戶端,訂閱者是接收消息的客戶端。
COAP協(xié)議設(shè)計(jì)的初衷是為了在受約束的網(wǎng)絡(luò)和終端環(huán)境下傳輸物聯(lián)網(wǎng)應(yīng)用數(shù)據(jù),所以COAP協(xié)議的設(shè)計(jì)有一些特別的考慮——它的數(shù)據(jù)包很小,再加上嚴(yán)格的重傳機(jī)制,使得COAP特別適合在帶寬不高,終端能力受限的網(wǎng)絡(luò)中使用。優(yōu)點(diǎn)是數(shù)據(jù)包小、傳輸靈活、實(shí)現(xiàn)簡(jiǎn)單,具有完善的請(qǐng)求應(yīng)答模型和重傳機(jī)制。
COAP和HTTP存在一定的對(duì)應(yīng)關(guān)系,二者互譯較為簡(jiǎn)單,這為物聯(lián)網(wǎng)和互聯(lián)網(wǎng)的對(duì)接提供了很好的標(biāo)準(zhǔn)化基礎(chǔ)。COAP的缺點(diǎn)是在業(yè)務(wù)發(fā)現(xiàn)、組播和安全方面的設(shè)計(jì)仍不完善。
聊完部分協(xié)議,還有一個(gè)重點(diǎn)的東西我們需要說一下:
數(shù)據(jù)時(shí)經(jīng)過協(xié)議進(jìn)行交換,但是數(shù)據(jù)的格式也是這個(gè)過程中很重要的一環(huán),典型的就是XML和JSON。從物聯(lián)網(wǎng)的角度來說,除了設(shè)備傳感器數(shù)據(jù)之外,還需要發(fā)送例如接收時(shí)間、設(shè)備信息等一些其他數(shù)據(jù),因此使用者就需要將從設(shè)備發(fā)送過來的數(shù)據(jù)結(jié)構(gòu)化,我們分別用XML和JSON表示傳感器的信息、設(shè)備狀態(tài)、獲取數(shù)據(jù)的時(shí)間以及發(fā)送數(shù)據(jù)的設(shè)備名稱等。
對(duì)比二者,我們可以發(fā)現(xiàn)XML格式比JSON更容易理解,然而XML字符相比更多,數(shù)據(jù)量更大,JSON格式則相反。XML和JSON數(shù)據(jù)究竟使用哪一種更好呢,我們不能直接一概而論,不過JSON數(shù)據(jù)最小,更適合移動(dòng)數(shù)據(jù)通信的情況。
設(shè)備傳來的數(shù)據(jù)和Web是有差異的,大多數(shù)是傳感器數(shù)據(jù)、語音、圖像等數(shù)值數(shù)據(jù)。與文本而言比較而言,這樣的數(shù)據(jù)更適合二進(jìn)制形式處理。基于物聯(lián)網(wǎng)服務(wù)處理這些格式時(shí),需要把文本數(shù)據(jù)轉(zhuǎn)換成數(shù)值數(shù)據(jù)和二進(jìn)制數(shù)據(jù),因此需要解析XML和JSON格式數(shù)據(jù),以及把解析的結(jié)果從文本格式轉(zhuǎn)換到二進(jìn)制形式。
如果能夠直接以二進(jìn)制形式接收數(shù)據(jù),是不是就更夠更快速地處理數(shù)據(jù)呢,對(duì)此產(chǎn)生了MessagePack格式,其數(shù)據(jù)格式與JSON相似,卻保留了二進(jìn)制的形式。人們不方便閱讀,但是機(jī)器卻很容易處理。同時(shí)因?yàn)镸essagePack發(fā)送的是二進(jìn)制數(shù)據(jù),所以比起文本形式的JSON更加緊湊。
4.2 數(shù)據(jù)處理
服務(wù)器接收到數(shù)據(jù)之后,接下來就需要對(duì)數(shù)據(jù)進(jìn)行處理。說到數(shù)據(jù)處理,基本上就是常見的那4樣:數(shù)據(jù)分析、數(shù)據(jù)加工、數(shù)據(jù)保存以及向設(shè)備發(fā)送指令。
對(duì)于數(shù)據(jù)的分析與加工,常見的有“批處理”和“流處理”兩種典型的處理方式,下面我們一起來看一下這兩種處理方式。
批處理
顧名思義批處理就是每隔一段時(shí)間處理一批積攢下來的數(shù)據(jù),通常情況下是先把數(shù)據(jù)存入數(shù)據(jù)庫(kù),隔一段時(shí)間就從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),執(zhí)行處理操作。
批處理重點(diǎn)在于在規(guī)定時(shí)間內(nèi)處理完成所有的數(shù)據(jù),因此數(shù)據(jù)的數(shù)據(jù)量越大,就需要越好性能的機(jī)器。要處理來自于數(shù)量龐大的設(shè)備發(fā)出來的傳感器數(shù)據(jù)和圖像等大型數(shù)據(jù),就需要使用分布式處理平臺(tái)軟件,高效處理數(shù)據(jù),常見的是Hadoop和Spark。
流處理
指不保存數(shù)據(jù),按照到達(dá)服務(wù)器的順序?qū)?shù)據(jù)依次進(jìn)行處理,對(duì)于實(shí)時(shí)對(duì)數(shù)據(jù)作出反應(yīng),流處理就是一個(gè)有效的方法。
批處理是把數(shù)據(jù)積攢之后進(jìn)行隔一段時(shí)間處理,所以從數(shù)據(jù)到達(dá)至處理完畢會(huì)出現(xiàn)時(shí)間延遲。因此,流處理這樣把到達(dá)的數(shù)據(jù)逐次立即處理的方法就變得比較重要。流處理基本上不會(huì)保存數(shù)據(jù),使用過的數(shù)據(jù)直接丟棄,保存處理結(jié)果就好。
4.3 數(shù)據(jù)存儲(chǔ)
說到數(shù)據(jù)存儲(chǔ)不得不說的是數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)的作用主要是存儲(chǔ)并靈活運(yùn)用數(shù)據(jù),除此之外還包括從保存的數(shù)據(jù)中找出與所指定條件相符的數(shù)據(jù)。數(shù)據(jù)庫(kù)從作用上講,主要是數(shù)據(jù)的增刪改查,下面我們就介紹一下常見的數(shù)據(jù)庫(kù)及其特性。
關(guān)系數(shù)據(jù)庫(kù)
關(guān)系數(shù)據(jù)庫(kù)是最普通的數(shù)據(jù)庫(kù),其具備一種叫作表格的表格型數(shù)據(jù)結(jié)構(gòu),其用途在于存儲(chǔ)數(shù)據(jù),用戶通過SQL語言可以對(duì)其執(zhí)行數(shù)據(jù)的提取、插入以及刪除。關(guān)系型數(shù)據(jù)庫(kù)不擅長(zhǎng)于保存圖片、語音等二進(jìn)制形式的數(shù)據(jù)。舉個(gè)例子,如下圖可以看看示意的表格結(jié)構(gòu):
文檔型數(shù)據(jù)庫(kù)
文檔型數(shù)據(jù)庫(kù)屬于NoSQL數(shù)據(jù)庫(kù)的一種,其可以以XML和JSON這種結(jié)構(gòu)化文檔的格式保存數(shù)據(jù)。比如MongoDB就是典型的文檔型數(shù)據(jù)庫(kù),它以JSON的格式保存數(shù)據(jù),同時(shí)能夠用JSON指令檢索條件。這樣一來,在用JSON交換傳感器信息時(shí),就能直接對(duì)數(shù)據(jù)進(jìn)行保存和使用即使增加新的數(shù)據(jù)條目或者新增設(shè)備,也能直接以JSON格式保存數(shù)據(jù)。非常適合用于無法讀出設(shè)備數(shù)量和數(shù)據(jù)種類的情況,以及保存?zhèn)鞲衅鞯仍O(shè)備的數(shù)據(jù)。
鍵值存儲(chǔ)
鍵值存儲(chǔ)也屬于NoSQL數(shù)據(jù)庫(kù)的一種,就是巴一中叫作“值”(value)的數(shù)據(jù)值和與其一一對(duì)應(yīng)的“鍵”(key)的集合保存在一起。鍵值存儲(chǔ)可以保存在內(nèi)存里,也可以保存硬盤里。前者能夠?qū)崿F(xiàn)高速保存,但是軟件停止運(yùn)行時(shí),保存的內(nèi)容就會(huì)消失,因此前者適合當(dāng)緩存用。后者的速度不如前者,但是即使軟件停止運(yùn)行,數(shù)據(jù)仍然不會(huì)丟失。
4.4 反控?cái)?shù)據(jù)發(fā)送
“反控”主要是指服務(wù)器端向設(shè)備端發(fā)送數(shù)據(jù)或者指令,控制設(shè)備,發(fā)送時(shí)可以采取接收時(shí)的相關(guān)協(xié)議。下面我們列舉一下HTTP、MQTT是如何實(shí)現(xiàn)同步異步數(shù)據(jù)傳輸?shù)摹?/p>
通過HTTP發(fā)送數(shù)據(jù)
HTTP是簡(jiǎn)單的方法,在這個(gè)方法里服務(wù)器是等待接收HTTP請(qǐng)求的Web服務(wù)器,設(shè)備申請(qǐng),服務(wù)器下發(fā)數(shù)據(jù)給設(shè)備,設(shè)備端需要不斷地執(zhí)行輪詢連接,來獲取看服務(wù)器是否有需要下發(fā)的數(shù)據(jù)信息。
采用HTTP方法的主要應(yīng)用場(chǎng)景:
- 無法確定設(shè)備唯一地址,不知道該把數(shù)據(jù)發(fā)給哪個(gè)設(shè)備
- 設(shè)備考慮移動(dòng)傳輸費(fèi)用問題(節(jié)省)
通過MQTT發(fā)送數(shù)據(jù)
上面我們已經(jīng)介紹了HTTP方法由設(shè)備訪問服務(wù)器獲取數(shù)據(jù),這種方法只要客戶端沒有發(fā)出申請(qǐng),數(shù)據(jù)就不會(huì)被發(fā)送。當(dāng)然使用者可以在服務(wù)器端來連接設(shè)備,但是新增設(shè)備后,服務(wù)器如何管理龐大的設(shè)備呢?基于此我們考慮MQTT方法,運(yùn)用其發(fā)布/訂閱的優(yōu)點(diǎn)。
實(shí)現(xiàn)步驟:
step1:設(shè)備作為訂閱者,向MQTT中介進(jìn)行訂閱
step2:服務(wù)器作為發(fā)布者,向MQTT中介進(jìn)行發(fā)布
該種模式下,發(fā)送服務(wù)器只需要把確定的數(shù)據(jù)加在主題上發(fā)送就行了,服務(wù)器和設(shè)備之間無需知道對(duì)方的地址,只需要知道中介的地址即可。一旦訂閱者斷開,中介將肩負(fù)起斷開時(shí)的發(fā)送,在設(shè)備重連后再次發(fā)送數(shù)據(jù)。運(yùn)用MQTT協(xié)議后,服務(wù)器反控下發(fā)數(shù)據(jù)到設(shè)備就變得簡(jiǎn)單了很多。
五、總結(jié)
相信經(jīng)過上面的分析總結(jié),無論是剛?cè)腴T或者還是已經(jīng)接觸過一定物聯(lián)網(wǎng)的童鞋,都能夠?qū)⒄麄€(gè)物聯(lián)網(wǎng)的實(shí)現(xiàn)架構(gòu)串聯(lián)起來了吧;并且知道中間的數(shù)據(jù)信息怎么流轉(zhuǎn)和處理,各個(gè)部分分別是怎樣的,扮演什么樣的作用。
無論你是物聯(lián)網(wǎng)硬件設(shè)備產(chǎn)品經(jīng)理,亦或者是物聯(lián)網(wǎng)云平臺(tái)及應(yīng)用產(chǎn)品經(jīng)理,相信你對(duì)于物聯(lián)網(wǎng)服務(wù)架構(gòu)都有了更加深刻的理解。最后,歡迎同行加我個(gè)人微信liu58liu進(jìn)行交流。
作者:Kent,微信公眾號(hào):Liuke2019
本文由 @Kent 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自Unsplash,基于CC0協(xié)議
網(wǎng)關(guān)作用部分主要描述北向的問題,實(shí)際上應(yīng)該描述成雙向,可以注意下。
比之前的文章更有深度,干貨滿滿的!!
點(diǎn)個(gè)贊,通俗易懂,學(xué)習(xí)了!