說(shuō)起軟件架構(gòu)總是一個(gè)很經(jīng)典的話題,軟件行業(yè)發(fā)展了很多年,從最早說(shuō)的C/S,B/S,到IOC,AOP,設(shè)計(jì)模式這些概念,再到最近幾年的大數(shù)據(jù),CAP理論,微服務(wù)化,容器化??梢哉f(shuō)近十多年來(lái),隨著軟件行業(yè),尤其是互聯(lián)網(wǎng)行業(yè)的發(fā)展,軟件架構(gòu)在變得越來(lái)越復(fù)雜,從單機(jī)軟件架構(gòu),逐漸發(fā)展到了一個(gè)大規(guī)模分布式的架構(gòu),整個(gè)過(guò)程可以說(shuō)是非常的精彩。
今天,軟件行業(yè)最火的三個(gè)概念毫無(wú)疑問(wèn)是物聯(lián)網(wǎng)、AI和區(qū)塊鏈。相比互聯(lián)網(wǎng)行業(yè),這三個(gè)行業(yè)的發(fā)展起步較晚,因此軟件架構(gòu)思想相對(duì)還不是那么成熟,也正因?yàn)榇?,給了從業(yè)技術(shù)人員一次探索和創(chuàng)造新技術(shù)的機(jī)會(huì)。我3年前有幸加入G7,隨著公司的快速發(fā)展也一起建設(shè)了G7的物聯(lián)網(wǎng)平臺(tái)架構(gòu)體系,一路走來(lái)心得體會(huì)不少,借此也做一次梳理。
物聯(lián)網(wǎng)技術(shù)和互聯(lián)網(wǎng)技術(shù)有什么不同?
百度百科對(duì)于物聯(lián)網(wǎng)的詞條里有一段話,說(shuō)的比較精煉,我在此引用下:「物聯(lián)網(wǎng)是指通過(guò)各種信息傳感設(shè)備,實(shí)時(shí)采集任何需要監(jiān)控、連接、互動(dòng)的物體或過(guò)程等各種需要的信息,與互聯(lián)網(wǎng)結(jié)合形成的一個(gè)巨大網(wǎng)絡(luò)。其目的是實(shí)現(xiàn)物與物、物與人,所有的物品與網(wǎng)絡(luò)的連接,方便識(shí)別、管理和控制?!?/p>
可以看出,物聯(lián)網(wǎng)的主要場(chǎng)景是對(duì)通過(guò)各種傳感器對(duì)物體進(jìn)行監(jiān)控,識(shí)別和控制。在物聯(lián)網(wǎng)之前,技術(shù)發(fā)展最成熟的無(wú)疑是互聯(lián)網(wǎng),我自己也是從互聯(lián)網(wǎng)行業(yè)出來(lái)的,因此在對(duì)物聯(lián)網(wǎng)技術(shù)的探索過(guò)程中,少不了和互聯(lián)網(wǎng)的技術(shù)去做比較,在我看來(lái),由于業(yè)務(wù)場(chǎng)景的不同,二者的技術(shù)關(guān)注點(diǎn)還是不太一樣的。
首先,傳統(tǒng)互聯(lián)網(wǎng)面對(duì)的是人,而物聯(lián)網(wǎng)面對(duì)的是物。這是本質(zhì)的不同,人有人的特點(diǎn),比如人的時(shí)間大多數(shù)是在看(獲取數(shù)據(jù)),而不是在寫(創(chuàng)造數(shù)據(jù)),這就決定了傳統(tǒng)互聯(lián)網(wǎng)是一個(gè)相對(duì)讀多寫少的場(chǎng)景。此外人白天得上班,晚上得睡覺(jué),這就決定了互聯(lián)網(wǎng)的流量波動(dòng)會(huì)出現(xiàn)明顯的周期特征。
而物聯(lián)網(wǎng)呢,我們要做的是對(duì)物體的監(jiān)控和控制,那么對(duì)這個(gè)物體的當(dāng)前狀態(tài),變化情況,都要變成數(shù)據(jù)傳輸?shù)椒?wù)器,相比之下,人去看這些數(shù)據(jù)倒成了一個(gè)低頻行為。與此同時(shí),這些物體產(chǎn)生的每個(gè)數(shù)據(jù)都和物體本身所在的時(shí)間和空間緊密相關(guān),所以我們稱這些數(shù)據(jù)具備明顯的時(shí)空屬性。
其次,相比傳統(tǒng)互聯(lián)網(wǎng),物聯(lián)網(wǎng)開(kāi)發(fā)是一個(gè)更長(zhǎng)鏈條的協(xié)作過(guò)程。做一個(gè)傳統(tǒng)互聯(lián)網(wǎng)軟件,我們通常是先基于業(yè)務(wù)設(shè)計(jì)數(shù)據(jù)庫(kù)結(jié)構(gòu),然后開(kāi)發(fā)對(duì)數(shù)據(jù)庫(kù)操作的代碼和界面,整個(gè)過(guò)程是很容易在一個(gè)小團(tuán)隊(duì)里閉環(huán)的。而做一個(gè)物聯(lián)網(wǎng)平臺(tái),需要從設(shè)備研發(fā)做起,通過(guò)各種傳感器來(lái)將周邊的現(xiàn)實(shí)狀態(tài)轉(zhuǎn)化為數(shù)據(jù),再通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)傳輸?shù)狡脚_(tái),平臺(tái)再這些數(shù)據(jù)進(jìn)行加工處理,變成業(yè)務(wù)所需要的結(jié)構(gòu)化數(shù)據(jù),最終再來(lái)開(kāi)發(fā)對(duì)這些數(shù)據(jù)的展示,或者我們要操作一個(gè)現(xiàn)實(shí)中的物體,也是要完成從界面到平臺(tái)到設(shè)備,最后再到控制系統(tǒng)的協(xié)作過(guò)程。
物聯(lián)網(wǎng)技術(shù)都包含什么東西?
之前畫的一個(gè)物聯(lián)網(wǎng)技術(shù)體系的簡(jiǎn)圖,從下往上有5個(gè)層次,分別是感知層、接入層、數(shù)據(jù)層、業(yè)務(wù)層和展現(xiàn)層,我下面簡(jiǎn)單說(shuō)下這5層分別需要什么能力。
感知層
感知層能力就是硬件能力,是物聯(lián)網(wǎng)最基礎(chǔ)的一層,是真正在創(chuàng)造原始數(shù)據(jù)的層面。如果沒(méi)有好的原始數(shù)據(jù),意味著我們的數(shù)據(jù)基礎(chǔ)是不可靠的。在一個(gè)不牢靠的基礎(chǔ)上,進(jìn)行的業(yè)務(wù)應(yīng)用和數(shù)據(jù)分析也是不可靠的。因此,如何保證穩(wěn)定準(zhǔn)確的數(shù)據(jù)感知和上報(bào),是這一層的重中之重。這其實(shí)是一個(gè)挺多維度的問(wèn)題,包括采用的感知方案是否合理,安裝實(shí)施工藝是否簡(jiǎn)易,信號(hào)接收是否穩(wěn)定,功耗情況是否合理等。硬件本身,從芯片選擇到主板設(shè)計(jì),每一個(gè)領(lǐng)域都需要精雕細(xì)琢。同時(shí),硬件之上的軟件設(shè)計(jì),如何快速,穩(wěn)定的在一個(gè)相對(duì)局限的資源里進(jìn)行計(jì)算,進(jìn)行數(shù)據(jù)的過(guò)濾,都是需要考慮的事情。
接入層
接入層能力是架構(gòu)和適配能力,關(guān)注的重點(diǎn)首先是可用性。接入層要連接大量的設(shè)備,這些設(shè)備每時(shí)每刻都在上報(bào)數(shù)據(jù),而且如前文談到的,設(shè)備是不會(huì)休息的,因此這種場(chǎng)景是24小時(shí)高強(qiáng)度的寫入。這就對(duì)接入層的穩(wěn)定性提出很大的挑戰(zhàn),需要通過(guò)很好的架構(gòu)和實(shí)現(xiàn),去支撐這種海量的數(shù)據(jù)上傳場(chǎng)景。
另一個(gè)需要關(guān)注的重點(diǎn)是適配能力。我們會(huì)接入很多不同種類的設(shè)備,很多設(shè)備的功能是類似的。這個(gè)適配就要分為兩個(gè)問(wèn)題去看:一個(gè)問(wèn)題是如何快速的適配這些設(shè)備的協(xié)議,讓設(shè)備進(jìn)入我們的平臺(tái);另一個(gè)問(wèn)題是,要如何把不同的設(shè)備協(xié)議,基于業(yè)務(wù)轉(zhuǎn)換成標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu),為后面的分析和挖掘工作打好數(shù)據(jù)基礎(chǔ)。
數(shù)據(jù)層
如果說(shuō)感知層和接入層是在創(chuàng)造標(biāo)準(zhǔn)化的數(shù)據(jù),那么到這一層的重點(diǎn),就變成了要存儲(chǔ)和應(yīng)用這些數(shù)據(jù)。因此我們首先要考慮,如何存儲(chǔ)如此海量而且在不斷增加的數(shù)據(jù)量。我們的存儲(chǔ)架構(gòu)要考慮可擴(kuò)展性,數(shù)據(jù)安全性,數(shù)據(jù)的易用性,以及存儲(chǔ)這些數(shù)據(jù)的成本。同時(shí),我們?nèi)绾螌?duì)海量數(shù)據(jù)進(jìn)行計(jì)算,是一個(gè)典型的大數(shù)據(jù)問(wèn)題。因此我們需要通過(guò)大數(shù)據(jù)架構(gòu)來(lái)支撐這些計(jì)算。對(duì)數(shù)據(jù)的分析,如果要變成對(duì)未來(lái)的預(yù)言和決策,機(jī)器學(xué)習(xí)算法也是必不可少的。換句話說(shuō),數(shù)據(jù)層是物聯(lián)網(wǎng)公司的技術(shù)核心層。這一層的技術(shù)積累深度,決定了我們能夠把數(shù)據(jù)價(jià)值發(fā)揮出多少。
業(yè)務(wù)層
業(yè)務(wù)層的主要工作是考慮如何利用數(shù)據(jù)和算法,解決具體的業(yè)務(wù)問(wèn)題。業(yè)務(wù)層和數(shù)據(jù)層應(yīng)該是一個(gè)相互驅(qū)動(dòng)的關(guān)系。業(yè)務(wù)會(huì)基于用戶的需求,對(duì)數(shù)據(jù)層的技術(shù)提出更高的要求。技術(shù)也需要不斷提升,反向?yàn)闃I(yè)務(wù)去提供更好的架構(gòu)基礎(chǔ)、算法能力。因此,單純的技術(shù)驅(qū)動(dòng)和產(chǎn)品驅(qū)動(dòng)都是不夠的,只有技術(shù)和產(chǎn)品相結(jié)合才能發(fā)揮最大的價(jià)值。
如果從技術(shù)層面看,業(yè)務(wù)層面對(duì)的技術(shù)壓力是來(lái)自于直接的用戶訪問(wèn)。因此,傳統(tǒng)互聯(lián)網(wǎng)公司的微服務(wù)化,緩存策略,消息訂閱等技術(shù)在這一層是很適用的。同時(shí),物聯(lián)網(wǎng)的業(yè)務(wù)還是很有自身的特點(diǎn):比如會(huì)有大量的實(shí)時(shí)計(jì)算需求,去快速的給客戶反映當(dāng)前的情況。我們生成的各種事件報(bào)警,都離不開(kāi)要設(shè)計(jì)實(shí)時(shí)流式處理的算法,需要不斷對(duì)一段時(shí)間的數(shù)據(jù)進(jìn)行統(tǒng)計(jì),也是一大特點(diǎn)。物聯(lián)網(wǎng)的數(shù)據(jù)有明顯的時(shí)間序列性和位置相關(guān)性。因此,基于這兩個(gè)特點(diǎn)的業(yè)務(wù)會(huì)特別多,都需要用專門的技術(shù)方案來(lái)支持。
展現(xiàn)層
展現(xiàn)層就是用戶界面。在G7這一層會(huì)更加偏重于數(shù)據(jù)的展現(xiàn)。回到剛才說(shuō)到的物聯(lián)網(wǎng)數(shù)據(jù)兩大特性:時(shí)間序列性和位置相關(guān)性。實(shí)際上這兩個(gè)特性在從數(shù)據(jù)層開(kāi)始,再到業(yè)務(wù)層和展現(xiàn)層,都在影響著我們的設(shè)計(jì)。因此,展現(xiàn)層需要去考慮:如何針對(duì)兩個(gè)特點(diǎn)去進(jìn)行數(shù)據(jù)UI組件的設(shè)計(jì)。另外,物聯(lián)網(wǎng)中有很多大數(shù)據(jù)分析,對(duì)大數(shù)據(jù)的直觀展現(xiàn),也是展現(xiàn)層需要考慮的問(wèn)題。
如何支持業(yè)務(wù)快速創(chuàng)新
如上文所說(shuō),物聯(lián)網(wǎng)領(lǐng)域的技術(shù)開(kāi)發(fā)是一個(gè)長(zhǎng)鏈條,高復(fù)雜度的過(guò)程,而G7又是一家不斷的在進(jìn)行業(yè)務(wù)創(chuàng)新的公司,如何通過(guò)良好的架構(gòu)設(shè)計(jì)來(lái)支持快速的業(yè)務(wù)創(chuàng)新,是我們必須要去深入思考的問(wèn)題。
我們也在這個(gè)問(wèn)題上經(jīng)過(guò)一段時(shí)間的探索,并得到了兩個(gè)基本認(rèn)知:
小團(tuán)隊(duì)自包含是支持快速創(chuàng)新的唯一保證
需要通過(guò)一個(gè)強(qiáng)大的平臺(tái)來(lái)提供小團(tuán)隊(duì)自包含所需要的各項(xiàng)能力
第一點(diǎn)很容易理解,無(wú)論有多好的過(guò)程管理,跨團(tuán)隊(duì)協(xié)作也比不上一只自包含的團(tuán)隊(duì),我們需要思考的是如何讓這個(gè)團(tuán)隊(duì)真正的能做到自包含,需要為這個(gè)小團(tuán)隊(duì)提供什么能力來(lái)提高他們的速度。
我們給出的答案是IoT PaaS平臺(tái)和IoT業(yè)務(wù)中臺(tái),下面分別解釋一下這兩個(gè)平臺(tái)的作用。
IoT PaaS
PaaS不是新的概念,但基于IoT的PaaS應(yīng)該如何打造,我們認(rèn)為IoT的PaaS應(yīng)該具備5個(gè)能力:
設(shè)備接入能力:通過(guò)可自動(dòng)伸縮的容器化技術(shù),提供統(tǒng)一的的連接管理和監(jiān)控能力,僅僅把協(xié)議解析的核心代碼部分暴露出來(lái)給到業(yè)務(wù)方自行開(kāi)發(fā)。
數(shù)據(jù)獲取能力:通過(guò)一個(gè)統(tǒng)一的消息隊(duì)列來(lái)讓業(yè)務(wù)方能夠自行獲取數(shù)據(jù),業(yè)務(wù)可按照自己需要的方式來(lái)進(jìn)行處理。
數(shù)據(jù)存儲(chǔ)能力:提供統(tǒng)一的數(shù)據(jù)庫(kù)存儲(chǔ)方案,集中為業(yè)務(wù)解決物聯(lián)網(wǎng)的海量時(shí)序數(shù)據(jù)存儲(chǔ)問(wèn)題。
實(shí)時(shí)計(jì)算能力:提供統(tǒng)一的流式計(jì)算平臺(tái),讓業(yè)務(wù)方可以在此之上自行進(jìn)行實(shí)時(shí)計(jì)算,不用考慮資源問(wèn)題。
離線計(jì)算能力:提供統(tǒng)一的離線計(jì)算平臺(tái),使大數(shù)據(jù)處理和任務(wù)調(diào)度也變得容易。
為此,我們提供了5個(gè)平臺(tái)來(lái)提供上面所說(shuō)的5個(gè)能力,分別是Eacoon, GMQ, CubeDB , GLink和GStove。
所有平臺(tái)提供統(tǒng)一的運(yùn)維保障,而業(yè)務(wù)可以基于這一套平臺(tái)實(shí)現(xiàn)從接入到處理到存儲(chǔ)的一站式處理,真正實(shí)現(xiàn)小團(tuán)隊(duì)自包含。
IoT業(yè)務(wù)中臺(tái)
上一節(jié)中的IoT PaaS體系實(shí)現(xiàn)了創(chuàng)新業(yè)務(wù)的自包含開(kāi)發(fā),但與此同時(shí),我們還要去抽取這些業(yè)務(wù)的共性部分,進(jìn)一步簡(jiǎn)化業(yè)務(wù)開(kāi)發(fā)的工作量,IoT業(yè)務(wù)中臺(tái)因此應(yīng)運(yùn)而生。
IoT業(yè)務(wù)中臺(tái)是對(duì)IoT業(yè)務(wù)的高度抽象,從抽象程度的由低到高包含三層即:設(shè)備抽象,車輛抽象和物流業(yè)務(wù)抽象。
設(shè)備抽象:目的是把遠(yuǎn)程的設(shè)備變成在平臺(tái)上的一個(gè)設(shè)備實(shí)體,可以簡(jiǎn)單的對(duì)其進(jìn)行操控和數(shù)據(jù)的獲取。
車輛抽象:在這個(gè)層面上我們開(kāi)始忽略設(shè)備本身,設(shè)備只是去獲取車輛數(shù)據(jù)的方式,通過(guò)這個(gè)抽象我們能夠以車輛的維度來(lái)控制和獲取數(shù)據(jù),而無(wú)需關(guān)心上面裝了什么設(shè)備。
物流業(yè)務(wù)抽象:在這個(gè)層面上我們通過(guò)對(duì)車上數(shù)據(jù)的理解,把其轉(zhuǎn)換成物流業(yè)務(wù)的維度,包括當(dāng)前站點(diǎn),任務(wù)狀態(tài),司機(jī)狀態(tài),道路偏離等。
因此,G7的IOT業(yè)務(wù)中臺(tái),就是要把這幾層抽象不斷的完善,做到極致,通過(guò)這幾個(gè)層面的抽象,也能夠使得業(yè)務(wù)在開(kāi)發(fā)的時(shí)候,能夠很多的現(xiàn)有的抽象可以使用,而不需要從頭做起,從而極大的提高業(yè)務(wù)開(kāi)發(fā)的效率。
總結(jié):
本文總體介紹了物聯(lián)網(wǎng)平臺(tái)的技術(shù)特點(diǎn),也簡(jiǎn)單闡述了一個(gè)成熟的物聯(lián)網(wǎng)架構(gòu)的基本思想和架構(gòu)方法,希望能夠使大家更加清楚一個(gè)合理的物聯(lián)網(wǎng)架構(gòu)的形態(tài),里面的細(xì)節(jié)我們后續(xù)再展開(kāi)討論。
作者簡(jiǎn)介:趙云濤,從事軟件技術(shù)十多年,經(jīng)歷了企業(yè)開(kāi)發(fā)、互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)+AI多個(gè)技術(shù)大潮。曾任職于搜狐,聯(lián)想,阿里巴巴,現(xiàn)為G7技術(shù)合伙人,負(fù)責(zé)G7 IoT平臺(tái)和管車軟件平臺(tái)研發(fā)。
掃一掃在手機(jī)上閱讀本文章