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