技術(shù)
導(dǎo)讀:一個(gè)物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)需要具備哪些功能?與通用的大數(shù)據(jù)平臺(tái)相比,它需要具備什么樣的特征呢?我們來(lái)仔細(xì)分析一下。
物聯(lián)網(wǎng)是一個(gè)很寬泛的概念,是指各種設(shè)備、機(jī)器都通過(guò)互聯(lián)網(wǎng)連接起來(lái),車(chē)聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)等都屬于物聯(lián)網(wǎng)范疇。根據(jù)Gartner報(bào)告,聯(lián)網(wǎng)的設(shè)備在2019年已經(jīng)超過(guò)142億,預(yù)計(jì)2021年將達(dá)到250億,這是一個(gè)巨大的數(shù)量。毫無(wú)疑問(wèn),我們需要一個(gè)物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)來(lái)處理這些聯(lián)網(wǎng)設(shè)備產(chǎn)生的海量數(shù)據(jù)。
一個(gè)物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)需要具備哪些功能?與通用的大數(shù)據(jù)平臺(tái)相比,它需要具備什么樣的特征呢?我們來(lái)仔細(xì)分析一下。
1. 高效分布式
必須是高效的分布式系統(tǒng)。物聯(lián)網(wǎng)產(chǎn)生的數(shù)據(jù)量巨大,僅中國(guó)而言,就有5億多臺(tái)智能電表,每臺(tái)電表每隔15分鐘采集一次數(shù)據(jù),一天全國(guó)智能電表就會(huì)產(chǎn)生500多億條記錄。這么大的數(shù)據(jù)量,任何一臺(tái)服務(wù)器都無(wú)能力處理,因此處理系統(tǒng)必須是分布式的,水平擴(kuò)展的。為降低成本,一個(gè)節(jié)點(diǎn)的處理性能必須是高效的,需要支持?jǐn)?shù)據(jù)的快速寫(xiě)入和快速查詢。
2. 實(shí)時(shí)處理
必須是實(shí)時(shí)處理的系統(tǒng)。互聯(lián)網(wǎng)大數(shù)據(jù)處理,大家所熟悉的場(chǎng)景是用戶畫(huà)像、推薦系統(tǒng)、輿情分析等等,這些場(chǎng)景并不需要什么實(shí)時(shí)性,批處理即可。但是對(duì)于物聯(lián)網(wǎng)場(chǎng)景,需要基于采集的數(shù)據(jù)做實(shí)時(shí)預(yù)警、決策,延時(shí)要控制在秒級(jí)以內(nèi)。如果計(jì)算沒(méi)有實(shí)時(shí)性,物聯(lián)網(wǎng)的商業(yè)價(jià)值就大打折扣。
3. 高可靠性
需要運(yùn)營(yíng)商級(jí)別的高可靠服務(wù)。物聯(lián)網(wǎng)系統(tǒng)對(duì)接的往往是生產(chǎn)、經(jīng)營(yíng)系統(tǒng),如果數(shù)據(jù)處理系統(tǒng)宕機(jī),直接導(dǎo)致停產(chǎn),產(chǎn)生經(jīng)濟(jì)有損失、導(dǎo)致對(duì)終端消費(fèi)者的服務(wù)無(wú)法正常提供。比如智能電表,如果系統(tǒng)出問(wèn)題,直接導(dǎo)致的是千家萬(wàn)戶無(wú)法正常用電。因此物聯(lián)網(wǎng)大數(shù)據(jù)系統(tǒng)必須是高可靠的,必須支持?jǐn)?shù)據(jù)實(shí)時(shí)備份,必須支持異地容災(zāi),必須支持軟件、硬件在線升級(jí),必須支持在線IDC機(jī)房遷移,否則服務(wù)一定有被中斷的可能。
4. 高效緩存
需要高效的緩存功能。絕大部分場(chǎng)景,都需要能快速獲取設(shè)備當(dāng)前狀態(tài)或其他信息,用以報(bào)警、大屏展示或其他。系統(tǒng)需要提供一高效機(jī)制,讓用戶可以獲取全部、或符合過(guò)濾條件的部分設(shè)備的最新?tīng)顟B(tài)。
5. 實(shí)時(shí)流式計(jì)算
需要實(shí)時(shí)流式計(jì)算。各種實(shí)時(shí)預(yù)警或預(yù)測(cè)已經(jīng)不是簡(jiǎn)單的基于某一個(gè)閾值進(jìn)行,而是需要通過(guò)將一個(gè)或多個(gè)設(shè)備產(chǎn)生的數(shù)據(jù)流進(jìn)行實(shí)時(shí)聚合計(jì)算,不只是基于一個(gè)時(shí)間點(diǎn)、而是基于一個(gè)時(shí)間窗口進(jìn)行計(jì)算。不僅如此,計(jì)算的需求也相當(dāng)復(fù)雜,因場(chǎng)景而異,應(yīng)容許用戶自定義函數(shù)進(jìn)行計(jì)算。
6. 數(shù)據(jù)訂閱
需要支持?jǐn)?shù)據(jù)訂閱。與通用大數(shù)據(jù)平臺(tái)比較一致,同一組數(shù)據(jù)往往有很多應(yīng)用都需要,因此系統(tǒng)應(yīng)該提供訂閱功能,只要有新的數(shù)據(jù)更新,就應(yīng)該實(shí)時(shí)提醒應(yīng)用。而且這個(gè)訂閱也應(yīng)該是個(gè)性化的,容許應(yīng)用設(shè)置過(guò)濾條件,比如只訂閱某個(gè)物理量五分鐘的平均值。
7. 和歷史數(shù)據(jù)處理合二為一
實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù)的處理要合二為一。實(shí)時(shí)數(shù)據(jù)在緩存里,歷史數(shù)據(jù)在持久化存儲(chǔ)介質(zhì)里,而且可能依據(jù)時(shí)長(zhǎng),保留在不同存儲(chǔ)介質(zhì)里。系統(tǒng)應(yīng)該隱藏背后的存儲(chǔ),給用戶和應(yīng)用呈現(xiàn)的是同一個(gè)接口和界面。無(wú)論是訪問(wèn)新采集的數(shù)據(jù)還是十年前的老數(shù)據(jù),除輸入的時(shí)間參數(shù)不同之外,其余應(yīng)該是一樣的。
8. 數(shù)據(jù)持續(xù)穩(wěn)定寫(xiě)入
需要保證數(shù)據(jù)能持續(xù)穩(wěn)定寫(xiě)入。對(duì)于物聯(lián)網(wǎng)系統(tǒng),數(shù)據(jù)流量往往是平穩(wěn)的,因此數(shù)據(jù)寫(xiě)入所需要的資源往往是可以估算的。但是變化的是查詢、分析,特別是即席查詢,有可能耗費(fèi)很大的系統(tǒng)資源,不可控。因此系統(tǒng)必須保證分配足夠的資源以確保數(shù)據(jù)能夠?qū)懭胂到y(tǒng)而不被丟失。準(zhǔn)確的說(shuō),系統(tǒng)必須是一個(gè)寫(xiě)優(yōu)先系統(tǒng)。
9. 數(shù)據(jù)多維度分析
需要對(duì)數(shù)據(jù)支持靈活的多維度分析。對(duì)于聯(lián)網(wǎng)設(shè)備產(chǎn)生的數(shù)據(jù),需要進(jìn)行各種維度的統(tǒng)計(jì)分析,比如從設(shè)備所處的地域進(jìn)行分析,從設(shè)備的型號(hào)、供應(yīng)商進(jìn)行分析,從設(shè)備所使用的人員進(jìn)行分析等等。而且這些維度的分析是無(wú)法事先想好的,而是在實(shí)際運(yùn)營(yíng)過(guò)程中,根據(jù)業(yè)務(wù)發(fā)展的需求定下來(lái)的。因此物聯(lián)網(wǎng)大數(shù)據(jù)系統(tǒng)需要一個(gè)靈活的機(jī)制增加某個(gè)維度的分析。
10. 支持?jǐn)?shù)據(jù)計(jì)算
需要支持?jǐn)?shù)據(jù)降頻、插值、特殊函數(shù)計(jì)算等操作。原始數(shù)據(jù)的采集可能頻次挺高,但具體分析時(shí),往往不需要對(duì)原始收據(jù)進(jìn)行,而是數(shù)據(jù)降頻之后。系統(tǒng)需要提供高效的數(shù)據(jù)降頻操作。設(shè)備是很難同步的,不同設(shè)備采集數(shù)據(jù)的時(shí)間點(diǎn)是很難對(duì)齊的,因此分析一個(gè)特定時(shí)間點(diǎn)的值,往往需要插值才能解決,系統(tǒng)需要提供線性插值、設(shè)置固定值等多種插值策略才行。工業(yè)互聯(lián)網(wǎng)里,除通用的統(tǒng)計(jì)操作之外,往往還需要支持一些特殊函數(shù),比如時(shí)間加權(quán)平均。
11. 即席分析和查詢
需要支持即席分析和查詢。為提高大數(shù)據(jù)分析師的工作效率,系統(tǒng)應(yīng)該提供一命令行工具或容許用戶通過(guò)其他工具,執(zhí)行SQL查詢,而不是非要通過(guò)編程接口。查詢分析的結(jié)果可以很方便的導(dǎo)出,再制作成各種圖標(biāo)。
12. 靈活數(shù)據(jù)管理策略
需要提供靈活的數(shù)據(jù)管理策略。一個(gè)大的系統(tǒng),采集的數(shù)據(jù)種類(lèi)繁多,而且除采集的原始數(shù)據(jù)外,還有大量的衍生數(shù)據(jù)。這些數(shù)據(jù)各自有不同的特點(diǎn),有的采集頻次高,有的要求保留時(shí)間長(zhǎng),有的需要多個(gè)副本以保證更高的安全性,有的需要能快速訪問(wèn)。因此物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)必須提供多種策略,讓用戶可以根據(jù)特點(diǎn)進(jìn)行選擇和配置,而且各種策略并存。
13. 開(kāi)放的系統(tǒng)
必須是開(kāi)放的。系統(tǒng)需要支持業(yè)界流行的標(biāo)準(zhǔn)SQL,提供各種語(yǔ)言開(kāi)發(fā)接口,包括C/C++,Java,Go,Python,RESTful等等,也需要支持Spark,R,Matlab等等,方便集成各種機(jī)器學(xué)習(xí)、人工智能算法或其他應(yīng)用,讓大數(shù)據(jù)處理平臺(tái)能夠不斷擴(kuò)展,而不是成為一個(gè)孤島。
14. 支持異構(gòu)環(huán)境
系統(tǒng)必須支持異構(gòu)環(huán)境。大數(shù)據(jù)平臺(tái)的搭建是一個(gè)長(zhǎng)期的工作,每個(gè)批次采購(gòu)的服務(wù)器和存儲(chǔ)設(shè)備都會(huì)不一樣,系統(tǒng)必須支持各種檔次、各種不同配置的服務(wù)器和存儲(chǔ)設(shè)備并存。
15. 支持邊云協(xié)同
需要支持邊云協(xié)同。要有一套靈活的機(jī)制將邊緣計(jì)算節(jié)點(diǎn)的數(shù)據(jù)上傳到云端,根據(jù)具體需要,可以將原始數(shù)據(jù),或加工計(jì)算后的數(shù)據(jù),或僅僅符合過(guò)濾條件的數(shù)據(jù)同步到云端,而且隨時(shí)可以取消,更改策略。
16. 單一后臺(tái)管理
需要單一的后臺(tái)管理系統(tǒng)。便于查看系統(tǒng)運(yùn)行狀態(tài)、管理集群、管理用戶、管理各種系統(tǒng)資源等,而且系統(tǒng)能夠與第三方IT運(yùn)維監(jiān)測(cè)平臺(tái)無(wú)縫集成,便于管理。
17. 私有化部署
便于私有化部署。因?yàn)楹芏嗥髽I(yè)出于安全以及各種因素的考慮,希望采用私有化部署。而傳統(tǒng)的企業(yè)往往沒(méi)有很強(qiáng)的IT運(yùn)維團(tuán)隊(duì),因此在安裝、部署上需要做到簡(jiǎn)單、快捷,可維護(hù)性強(qiáng)。
以上總結(jié)了物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)的主要功能和特點(diǎn)。雖然物聯(lián)網(wǎng)大數(shù)據(jù)平臺(tái)本身也在演變之中,但總的目標(biāo)不會(huì)改變,那就是高效、可伸縮、實(shí)時(shí)、可靠、靈活、開(kāi)放、簡(jiǎn)單、易維護(hù)。