□ 文/閤成國
大數(shù)據(jù)被提升為國家戰(zhàn)略足見其在國民經(jīng)濟中的重要作用,各級政府部門及企事業(yè)單位也順應(yīng)國家發(fā)展的要求,投入人力、資金建設(shè)大數(shù)據(jù)基礎(chǔ)設(shè)施,開發(fā)大數(shù)據(jù)應(yīng)用,讓大數(shù)據(jù)在政務(wù)和企事業(yè)經(jīng)營中發(fā)揮重要的指導(dǎo)作用。但各單位在之前的信息化建設(shè)過程中,已建成一些重要的業(yè)務(wù)管理系統(tǒng)、協(xié)同系統(tǒng),這些系統(tǒng)由于業(yè)務(wù)或者內(nèi)部分工的不同,數(shù)據(jù)獨立存儲彼此孤立,數(shù)據(jù)價值不能最大化的發(fā)掘。大數(shù)據(jù)應(yīng)用的開發(fā)流程同傳統(tǒng)應(yīng)用一樣,都要經(jīng)過數(shù)據(jù)接入、數(shù)據(jù)處理分析、數(shù)據(jù)應(yīng)用開發(fā)等過程,不同的是,傳統(tǒng)應(yīng)用數(shù)據(jù)來源及結(jié)構(gòu)較為單一,大多重應(yīng)用輕數(shù)據(jù)管理,有些甚至以人工的方式管理數(shù)據(jù),而大數(shù)據(jù)應(yīng)用的數(shù)據(jù)來源更為多樣化,數(shù)據(jù)類型更加復(fù)雜化,采用傳統(tǒng)應(yīng)用煙囪式的數(shù)據(jù)接入、分散式的數(shù)據(jù)管理方式已經(jīng)不能適應(yīng)大數(shù)據(jù)建設(shè)對數(shù)據(jù)管理的要求了,因此建立統(tǒng)一的大數(shù)據(jù)門戶管理系統(tǒng),推動數(shù)據(jù)資源的整合及互通互用,顯得迫切和尤為重要,傳統(tǒng)應(yīng)用數(shù)據(jù)管理模式向大數(shù)據(jù)應(yīng)用數(shù)據(jù)統(tǒng)一管理演變?nèi)鐖D1所示:
數(shù)據(jù)集成環(huán)境是SEARI-TBDS解決方案的核心系統(tǒng),以全息電子檔案(FIDA)為核心理念,具有集中整合數(shù)據(jù)資源,服務(wù)用戶業(yè)務(wù)需求的核心層地位,本文提出創(chuàng)建FIDA數(shù)據(jù)門戶系統(tǒng),實現(xiàn)統(tǒng)一的數(shù)據(jù)接入及數(shù)據(jù)開放共享機制,是數(shù)據(jù)集成環(huán)境FIDA系統(tǒng)的重要基礎(chǔ)設(shè)施。
國內(nèi)外已有很多成熟的開源技術(shù)或軟件產(chǎn)品能為FIDA數(shù)據(jù)門戶系統(tǒng)的建設(shè)提供建設(shè)思路指導(dǎo)及基礎(chǔ)組件支撐,有了這些國內(nèi)外先進的技術(shù),系統(tǒng)能在正確的方向上專注于功能的設(shè)計和實現(xiàn),在系統(tǒng)研發(fā)的過程中,主要借鑒了以下產(chǎn)品優(yōu)秀的設(shè)計思想和引入相關(guān)組件作為基礎(chǔ)組件支撐系統(tǒng)的研發(fā):
Kettle:一款國外優(yōu)秀的開源ETL工具,可以基于多種數(shù)據(jù)來源,完成數(shù)據(jù)的抽取、轉(zhuǎn)換、加載,將結(jié)果數(shù)據(jù)存儲到目標(biāo)數(shù)據(jù)源。
Kafka:一款非常受國內(nèi)外互聯(lián)網(wǎng)公司熱捧的分布式開源消息系統(tǒng)軟件,基于O(1)的磁盤數(shù)據(jù)結(jié)構(gòu)實現(xiàn)消息的持久化,在普通的硬件上可以實現(xiàn)每秒數(shù)百萬的高吞吐量消息的發(fā)布訂閱。
MongoDB:是一個可擴展高性能的分布式NOSQL數(shù)據(jù)庫,面向集合且可以存儲對象數(shù)據(jù),數(shù)據(jù)結(jié)構(gòu)非常自由。
ELK:包括 Elasticsearch, Logstash, Kibana三大軟件,用來構(gòu)建大規(guī)模日志的實時分析處理系統(tǒng)。
SEARI-TBDS交通大數(shù)據(jù)解決方案主要包括異構(gòu)數(shù)據(jù)源接入、大數(shù)據(jù)存儲、數(shù)據(jù)門戶、數(shù)據(jù)分析處理、大數(shù)據(jù)應(yīng)用五大組成部分,數(shù)據(jù)門戶系統(tǒng)作為SEARI-TBDS的數(shù)據(jù)中樞紐帶,向下對接異構(gòu)數(shù)據(jù)源,將數(shù)據(jù)持久化存儲到大數(shù)據(jù)平臺,向上響應(yīng)數(shù)據(jù)分析處理系統(tǒng)數(shù)據(jù)請求,提供統(tǒng)一的數(shù)據(jù)訪問接口,方便數(shù)據(jù)分析處理程序的數(shù)據(jù)請求和結(jié)果回傳,最后將數(shù)據(jù)分析的結(jié)果以統(tǒng)一接口的方式提供給大數(shù)據(jù)應(yīng)用渲染,供業(yè)務(wù)方使用,數(shù)據(jù)門戶系統(tǒng)的定位如下圖2所示:
▲圖2:數(shù)據(jù)門戶系統(tǒng)在SEARI-TBDS大數(shù)據(jù)解決方案中的定位
數(shù)據(jù)門戶系統(tǒng)FIDA.DPS是SEARI-TBDS解決方案中的重要基礎(chǔ)設(shè)施,在功能上主要負責(zé)大數(shù)據(jù)平臺對內(nèi)對外的數(shù)據(jù)接入及數(shù)據(jù)提供兩大功能:
數(shù)據(jù)接入:大數(shù)據(jù)平臺只有匯聚足夠多的數(shù)據(jù),才能進行數(shù)據(jù)的多維度挖掘碰撞分析,這些數(shù)據(jù)來源于不同的業(yè)務(wù)系統(tǒng)或者外部系統(tǒng),他們的格式多種多樣、存儲的載體也不盡相同;數(shù)據(jù)接入將這些異構(gòu)數(shù)據(jù)的接入工作流程進行抽象,找出共性部分,將數(shù)據(jù)接入流程標(biāo)準(zhǔn)化,抽象為數(shù)據(jù)源管理、接入配置、接入服務(wù)、數(shù)據(jù)接入清單、接入監(jiān)控五大組件。
數(shù)據(jù)提供:數(shù)據(jù)中心匯聚的各類數(shù)據(jù),最終需要提供給上層應(yīng)用或外部系統(tǒng)使用,才能發(fā)揮數(shù)據(jù)的應(yīng)用價值,因此需要統(tǒng)一的數(shù)據(jù)提供接口,保障提供數(shù)據(jù)的一致性、便利性、安全性。數(shù)據(jù)提供以數(shù)據(jù)中心的數(shù)據(jù)為載體,由接入數(shù)據(jù)源管理、提供配置、提供服務(wù)、數(shù)據(jù)提供清單、服務(wù)認證、用戶管理、訂閱管理、服務(wù)監(jiān)控八大組件組成。
FIDA.DPS數(shù)據(jù)接入功能模塊主要負責(zé)將業(yè)務(wù)平臺及外部系統(tǒng)數(shù)據(jù)接入到大數(shù)據(jù)平臺中,同時完成數(shù)據(jù)轉(zhuǎn)換,將結(jié)果數(shù)據(jù)存儲到大數(shù)據(jù)平臺。
數(shù)據(jù)標(biāo)準(zhǔn)化接入流程如圖3所示:
▲圖3:數(shù)據(jù)標(biāo)準(zhǔn)化接入流程
● 數(shù)據(jù)抽取
負責(zé)從數(shù)據(jù)源獲取原始數(shù)據(jù),涉及到數(shù)據(jù)源支持、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)對象化及數(shù)據(jù)存儲功能。
● 數(shù)據(jù)轉(zhuǎn)換
數(shù)據(jù)轉(zhuǎn)換主要包括數(shù)據(jù)變換、數(shù)據(jù)字段添加合并與拆分、缺省字段賦值、數(shù)據(jù)翻譯(編碼轉(zhuǎn)換)、數(shù)據(jù)合并、數(shù)據(jù)聚合等。
● 數(shù)據(jù)對象化組織
按照數(shù)據(jù)分析處理的要求,以對象化的方式組織數(shù)據(jù),數(shù)據(jù)對象化組織由FIDA.BDO軟件實現(xiàn),本文不擴展討論。
● 數(shù)據(jù)存儲
接入數(shù)據(jù)按照不同的使用要求,存儲到文件系統(tǒng)、關(guān)系型數(shù)據(jù)庫、大數(shù)據(jù)平臺中。
▲圖4:數(shù)據(jù)接入核心模型
數(shù)據(jù)接入模型借鑒了Kettle的設(shè)計思想,將接入流程進行抽象為轉(zhuǎn)換和任務(wù),其中轉(zhuǎn)換是數(shù)據(jù)接入邏輯的封裝,由一系列步驟組成,步驟按功能分為數(shù)據(jù)讀取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)寫入三種,這些步驟由執(zhí)行鏈進行連接,構(gòu)成一個有向無環(huán)圖,數(shù)據(jù)接入能力計算公式定義為:
CFIDA.DPS = Nread * Mtansmethod * Ywrite
其中CFIDA.DPS --數(shù)據(jù)接入能力, Nread --數(shù)據(jù)讀取能力,Mtansmethod --數(shù)據(jù)轉(zhuǎn)換能力,Ywrite--數(shù)據(jù)寫入能力。
任務(wù)封裝了接入能力的調(diào)度邏輯,調(diào)度類型分為一次性、周期性、消息觸發(fā)等方式,一個任務(wù)中包含一個轉(zhuǎn)換;接入程序(簡稱ETL主機)以后臺服務(wù)的形式運行,承載若干數(shù)據(jù)接入任務(wù),當(dāng)任務(wù)較多時,可以水平擴展,部署更多的ETL主機,完成平臺的數(shù)據(jù)接入工作,數(shù)據(jù)接入的核心模型如圖4所示:
根據(jù)數(shù)據(jù)接入的核心模型,數(shù)據(jù)的接入能力通過3個步驟體現(xiàn),分別是數(shù)據(jù)讀取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)寫入,接入能力設(shè)計如圖5所示,各步驟能力說明如下:
● 數(shù)據(jù)讀取步驟Nread
讀取步驟是指獲取原始數(shù)據(jù)所支持數(shù)據(jù)源的種類,理論上可以做到無限擴展,支持的種類越多,讀取能力越強,目前支持的數(shù)據(jù)源有關(guān)系型數(shù)據(jù)庫表、NOSQL數(shù)據(jù)庫表、文件、REST接口、TCP通訊,后續(xù)可以根據(jù)需要增加新的數(shù)據(jù)源,只需增加對應(yīng)的數(shù)據(jù)源讀取插件即可;
● 數(shù)據(jù)轉(zhuǎn)換步驟Mtansmethod
▲圖5:數(shù)據(jù)接入設(shè)計
轉(zhuǎn)換步驟指的是對讀取的數(shù)據(jù)進行數(shù)據(jù)變換的能力,目前支持的數(shù)據(jù)格式變換、賦缺省值、類型變換、值替換等,后續(xù)可以根據(jù)需要增加對應(yīng)的轉(zhuǎn)換插件,理論上可以做到無限擴展;
● 數(shù)據(jù)寫入步驟Ywrite
寫入步驟是指將結(jié)果數(shù)據(jù)存儲所支持的目標(biāo)數(shù)據(jù)源種類,目前支持的目標(biāo)數(shù)據(jù)源有關(guān)系型數(shù)據(jù)庫表、NOSQL庫表、文件、HDFS、HIVE、HBASE,后續(xù)可以根據(jù)需要增加對應(yīng)的目標(biāo)數(shù)據(jù)源,只需添加對應(yīng)的目標(biāo)數(shù)據(jù)源寫入插件即可,理論上可以做到無限擴展。
通過不同的任務(wù)調(diào)度類型和轉(zhuǎn)換模式的組合,F(xiàn)IDA.DPS提供多種數(shù)據(jù)接入場景設(shè)計,接入場景設(shè)計說明如下:
● 實時數(shù)據(jù)接入場景:按照任務(wù)調(diào)度類型可以分為一次性寫入和周期性寫入,根據(jù)數(shù)據(jù)讀取寫入的存儲類型可以分為全量覆蓋、插入、更新、合并,組合可以支持8種應(yīng)用場景。
● 歷史數(shù)據(jù)的全量接入場景:歷史數(shù)據(jù)的全量接入是指在系統(tǒng)中將離線的歷史數(shù)據(jù)的一次性導(dǎo)入。
● 歷史數(shù)據(jù)的增量接入場景:歷史數(shù)據(jù)由于采集周期較長,通常按采集時間周期性的增量接入。
接入監(jiān)控設(shè)計
接入監(jiān)控是數(shù)據(jù)接入的眼睛,便于及時掌控數(shù)據(jù)接入的運行狀態(tài),通過使用Kafka的即時傳輸告警信息,使用ELK收集處理分析接入日志,使用MongoDB存儲基礎(chǔ)配置信息和分析結(jié)果,使用Spring Cloud構(gòu)建分布式的服務(wù),將這些技術(shù)有機的結(jié)合運用,實現(xiàn)ETL主機監(jiān)控、接入任務(wù)監(jiān)控及報警功能。
FIDA.DPS數(shù)據(jù)提供功能模塊主要負責(zé)從大數(shù)據(jù)平臺獲取原始存儲、中間結(jié)果、分析處理后的結(jié)果數(shù)據(jù),根據(jù)數(shù)據(jù)開放和用戶訂閱的需求對外提供數(shù)據(jù)接口,供上層應(yīng)用或外部系統(tǒng)使用。
數(shù)據(jù)標(biāo)準(zhǔn)化提供的整體處理流程如圖6所示:
▲圖6:數(shù)據(jù)標(biāo)準(zhǔn)化提供流程
● 數(shù)據(jù)查詢
從大數(shù)據(jù)平臺的關(guān)系型數(shù)據(jù)庫或分布式文件系統(tǒng)中獲取數(shù)據(jù)。
● 數(shù)據(jù)篩選
根據(jù)用戶或業(yè)務(wù)應(yīng)用訂閱情況篩選數(shù)據(jù)。
● 數(shù)據(jù)組織
根據(jù)數(shù)據(jù)模型組織數(shù)據(jù),生成對象化數(shù)據(jù)。
● 數(shù)據(jù)接口
提供應(yīng)用獲取數(shù)據(jù)的標(biāo)準(zhǔn)接口,主要體現(xiàn)為REST接口、文件等方式。
數(shù)據(jù)提供采用統(tǒng)一開放接口的方式對外提供數(shù)據(jù),接口請求采用REST的方式,每一個開放的數(shù)據(jù)項在系統(tǒng)中以一個數(shù)據(jù)服務(wù)的形式存在,數(shù)據(jù)服務(wù)基于Spring Cloud 的分布式微服務(wù)架構(gòu)實現(xiàn),使用Eureka server作為服務(wù)的注冊中心,使用Zuul網(wǎng)關(guān)組件統(tǒng)一微服務(wù)請求的入口,將數(shù)據(jù)請求轉(zhuǎn)發(fā)到具體的數(shù)據(jù)服務(wù)上,完成數(shù)據(jù)提供功能。
數(shù)據(jù)提供服務(wù)接口調(diào)用采用認證機制,用戶使用接口需先登陸,根據(jù)預(yù)分配的用戶名和密碼登錄成功后系統(tǒng)分配訪問令牌,服務(wù)接口調(diào)用時需將訪問令牌作為參數(shù)提交,接口調(diào)用時檢查令牌,判斷是否有權(quán)限訪問。
▲圖7:FIDA數(shù)據(jù)門戶界面原型
數(shù)據(jù)使用方在使用數(shù)據(jù)服務(wù)時,需在系統(tǒng)統(tǒng)一注冊登記,分配賬戶密碼及訪問密鑰,提交數(shù)據(jù)服務(wù)訂閱請求,經(jīng)審核后方可使用數(shù)據(jù),系統(tǒng)會對用戶的請求和數(shù)據(jù)服務(wù)的響應(yīng)情況進行監(jiān)控,保障數(shù)據(jù)服務(wù)正常運行。
作為大數(shù)據(jù)平臺的數(shù)據(jù)中樞,F(xiàn)IDA系統(tǒng)承擔(dān)數(shù)據(jù)操作系統(tǒng)職能,F(xiàn)IDA.DPS門戶系統(tǒng)承擔(dān)系統(tǒng)數(shù)據(jù)通道的作用,目前,該系統(tǒng)成功應(yīng)用于公安交管行業(yè)的大數(shù)據(jù)平臺建設(shè)當(dāng)中。某新區(qū)交管部門的大數(shù)據(jù)智能研判平臺建設(shè)中,使用FIDA數(shù)據(jù)門戶系統(tǒng)匯聚警情、違法、事故、路網(wǎng)、車輛、人口、設(shè)備設(shè)施等各類數(shù)據(jù)300多項,都按照標(biāo)準(zhǔn)的流程配置完成數(shù)據(jù)接入,其中基礎(chǔ)數(shù)據(jù)170多項,實時數(shù)據(jù)和歷史數(shù)據(jù)各60多項;此外開放共享數(shù)據(jù)80多項,通過統(tǒng)一的接口,供大數(shù)據(jù)研判應(yīng)用和業(yè)務(wù)系統(tǒng)使用。FIDA數(shù)據(jù)門戶系統(tǒng)主要界面原型如圖7所示:
本文主要從大數(shù)據(jù)環(huán)境下強調(diào)了統(tǒng)一數(shù)據(jù)管理的重要性和必要性,從功能上闡述了FIDA.DPS的體系結(jié)構(gòu),又分別從數(shù)據(jù)接入和數(shù)據(jù)提供兩方面介紹了系統(tǒng)設(shè)計思想用以指導(dǎo)系統(tǒng)實現(xiàn)。FIDA.DPS數(shù)據(jù)門戶系統(tǒng)實現(xiàn)了對數(shù)據(jù)接入與提供的全流通過程管理,提升了用戶數(shù)據(jù)管理水平,幫助用戶全面掌控數(shù)據(jù)資產(chǎn),實現(xiàn)了數(shù)據(jù)的可監(jiān)控、可運維、在線管理,提高了系統(tǒng)的智能性與靈活性,降低了數(shù)據(jù)在流入和流出平臺的開發(fā)難度,常見數(shù)據(jù)源可以做到配置即可使用,另外預(yù)留擴展接口可以根據(jù)數(shù)據(jù)應(yīng)用需求進行數(shù)據(jù)接入和提供的多維度擴展。