□ 文/閤成國
大數(shù)據(jù)被提升為國家戰(zhàn)略足見其在國民經(jīng)濟中的重要作用,各級政府部門及企事業(yè)單位也順應國家發(fā)展的要求,投入人力、資金建設大數(shù)據(jù)基礎設施,開發(fā)大數(shù)據(jù)應用,讓大數(shù)據(jù)在政務和企事業(yè)經(jīng)營中發(fā)揮重要的指導作用。但各單位在之前的信息化建設過程中,已建成一些重要的業(yè)務管理系統(tǒng)、協(xié)同系統(tǒng),這些系統(tǒng)由于業(yè)務或者內部分工的不同,數(shù)據(jù)獨立存儲彼此孤立,數(shù)據(jù)價值不能最大化的發(fā)掘。大數(shù)據(jù)應用的開發(fā)流程同傳統(tǒng)應用一樣,都要經(jīng)過數(shù)據(jù)接入、數(shù)據(jù)處理分析、數(shù)據(jù)應用開發(fā)等過程,不同的是,傳統(tǒng)應用數(shù)據(jù)來源及結構較為單一,大多重應用輕數(shù)據(jù)管理,有些甚至以人工的方式管理數(shù)據(jù),而大數(shù)據(jù)應用的數(shù)據(jù)來源更為多樣化,數(shù)據(jù)類型更加復雜化,采用傳統(tǒng)應用煙囪式的數(shù)據(jù)接入、分散式的數(shù)據(jù)管理方式已經(jīng)不能適應大數(shù)據(jù)建設對數(shù)據(jù)管理的要求了,因此建立統(tǒng)一的大數(shù)據(jù)門戶管理系統(tǒng),推動數(shù)據(jù)資源的整合及互通互用,顯得迫切和尤為重要,傳統(tǒng)應用數(shù)據(jù)管理模式向大數(shù)據(jù)應用數(shù)據(jù)統(tǒng)一管理演變如圖1所示:
數(shù)據(jù)集成環(huán)境是SEARI-TBDS解決方案的核心系統(tǒng),以全息電子檔案(FIDA)為核心理念,具有集中整合數(shù)據(jù)資源,服務用戶業(yè)務需求的核心層地位,本文提出創(chuàng)建FIDA數(shù)據(jù)門戶系統(tǒng),實現(xiàn)統(tǒng)一的數(shù)據(jù)接入及數(shù)據(jù)開放共享機制,是數(shù)據(jù)集成環(huán)境FIDA系統(tǒng)的重要基礎設施。
國內外已有很多成熟的開源技術或軟件產(chǎn)品能為FIDA數(shù)據(jù)門戶系統(tǒng)的建設提供建設思路指導及基礎組件支撐,有了這些國內外先進的技術,系統(tǒng)能在正確的方向上專注于功能的設計和實現(xiàn),在系統(tǒng)研發(fā)的過程中,主要借鑒了以下產(chǎn)品優(yōu)秀的設計思想和引入相關組件作為基礎組件支撐系統(tǒng)的研發(fā):
Kettle:一款國外優(yōu)秀的開源ETL工具,可以基于多種數(shù)據(jù)來源,完成數(shù)據(jù)的抽取、轉換、加載,將結果數(shù)據(jù)存儲到目標數(shù)據(jù)源。
Kafka:一款非常受國內外互聯(lián)網(wǎng)公司熱捧的分布式開源消息系統(tǒng)軟件,基于O(1)的磁盤數(shù)據(jù)結構實現(xiàn)消息的持久化,在普通的硬件上可以實現(xiàn)每秒數(shù)百萬的高吞吐量消息的發(fā)布訂閱。
MongoDB:是一個可擴展高性能的分布式NOSQL數(shù)據(jù)庫,面向集合且可以存儲對象數(shù)據(jù),數(shù)據(jù)結構非常自由。
ELK:包括 Elasticsearch, Logstash, Kibana三大軟件,用來構建大規(guī)模日志的實時分析處理系統(tǒng)。
SEARI-TBDS交通大數(shù)據(jù)解決方案主要包括異構數(shù)據(jù)源接入、大數(shù)據(jù)存儲、數(shù)據(jù)門戶、數(shù)據(jù)分析處理、大數(shù)據(jù)應用五大組成部分,數(shù)據(jù)門戶系統(tǒng)作為SEARI-TBDS的數(shù)據(jù)中樞紐帶,向下對接異構數(shù)據(jù)源,將數(shù)據(jù)持久化存儲到大數(shù)據(jù)平臺,向上響應數(shù)據(jù)分析處理系統(tǒng)數(shù)據(jù)請求,提供統(tǒng)一的數(shù)據(jù)訪問接口,方便數(shù)據(jù)分析處理程序的數(shù)據(jù)請求和結果回傳,最后將數(shù)據(jù)分析的結果以統(tǒng)一接口的方式提供給大數(shù)據(jù)應用渲染,供業(yè)務方使用,數(shù)據(jù)門戶系統(tǒng)的定位如下圖2所示:

▲圖2:數(shù)據(jù)門戶系統(tǒng)在SEARI-TBDS大數(shù)據(jù)解決方案中的定位
數(shù)據(jù)門戶系統(tǒng)FIDA.DPS是SEARI-TBDS解決方案中的重要基礎設施,在功能上主要負責大數(shù)據(jù)平臺對內對外的數(shù)據(jù)接入及數(shù)據(jù)提供兩大功能:
數(shù)據(jù)接入:大數(shù)據(jù)平臺只有匯聚足夠多的數(shù)據(jù),才能進行數(shù)據(jù)的多維度挖掘碰撞分析,這些數(shù)據(jù)來源于不同的業(yè)務系統(tǒng)或者外部系統(tǒng),他們的格式多種多樣、存儲的載體也不盡相同;數(shù)據(jù)接入將這些異構數(shù)據(jù)的接入工作流程進行抽象,找出共性部分,將數(shù)據(jù)接入流程標準化,抽象為數(shù)據(jù)源管理、接入配置、接入服務、數(shù)據(jù)接入清單、接入監(jiān)控五大組件。
數(shù)據(jù)提供:數(shù)據(jù)中心匯聚的各類數(shù)據(jù),最終需要提供給上層應用或外部系統(tǒng)使用,才能發(fā)揮數(shù)據(jù)的應用價值,因此需要統(tǒng)一的數(shù)據(jù)提供接口,保障提供數(shù)據(jù)的一致性、便利性、安全性。數(shù)據(jù)提供以數(shù)據(jù)中心的數(shù)據(jù)為載體,由接入數(shù)據(jù)源管理、提供配置、提供服務、數(shù)據(jù)提供清單、服務認證、用戶管理、訂閱管理、服務監(jiān)控八大組件組成。
FIDA.DPS數(shù)據(jù)接入功能模塊主要負責將業(yè)務平臺及外部系統(tǒng)數(shù)據(jù)接入到大數(shù)據(jù)平臺中,同時完成數(shù)據(jù)轉換,將結果數(shù)據(jù)存儲到大數(shù)據(jù)平臺。
數(shù)據(jù)標準化接入流程如圖3所示:

▲圖3:數(shù)據(jù)標準化接入流程
● 數(shù)據(jù)抽取
負責從數(shù)據(jù)源獲取原始數(shù)據(jù),涉及到數(shù)據(jù)源支持、數(shù)據(jù)轉換、數(shù)據(jù)對象化及數(shù)據(jù)存儲功能。
● 數(shù)據(jù)轉換
數(shù)據(jù)轉換主要包括數(shù)據(jù)變換、數(shù)據(jù)字段添加合并與拆分、缺省字段賦值、數(shù)據(jù)翻譯(編碼轉換)、數(shù)據(jù)合并、數(shù)據(jù)聚合等。
● 數(shù)據(jù)對象化組織
按照數(shù)據(jù)分析處理的要求,以對象化的方式組織數(shù)據(jù),數(shù)據(jù)對象化組織由FIDA.BDO軟件實現(xiàn),本文不擴展討論。
● 數(shù)據(jù)存儲
接入數(shù)據(jù)按照不同的使用要求,存儲到文件系統(tǒng)、關系型數(shù)據(jù)庫、大數(shù)據(jù)平臺中。

▲圖4:數(shù)據(jù)接入核心模型
數(shù)據(jù)接入模型借鑒了Kettle的設計思想,將接入流程進行抽象為轉換和任務,其中轉換是數(shù)據(jù)接入邏輯的封裝,由一系列步驟組成,步驟按功能分為數(shù)據(jù)讀取、數(shù)據(jù)轉換、數(shù)據(jù)寫入三種,這些步驟由執(zhí)行鏈進行連接,構成一個有向無環(huán)圖,數(shù)據(jù)接入能力計算公式定義為:
CFIDA.DPS = Nread * Mtansmethod * Ywrite
其中CFIDA.DPS --數(shù)據(jù)接入能力, Nread --數(shù)據(jù)讀取能力,Mtansmethod --數(shù)據(jù)轉換能力,Ywrite--數(shù)據(jù)寫入能力。
任務封裝了接入能力的調度邏輯,調度類型分為一次性、周期性、消息觸發(fā)等方式,一個任務中包含一個轉換;接入程序(簡稱ETL主機)以后臺服務的形式運行,承載若干數(shù)據(jù)接入任務,當任務較多時,可以水平擴展,部署更多的ETL主機,完成平臺的數(shù)據(jù)接入工作,數(shù)據(jù)接入的核心模型如圖4所示:
根據(jù)數(shù)據(jù)接入的核心模型,數(shù)據(jù)的接入能力通過3個步驟體現(xiàn),分別是數(shù)據(jù)讀取、數(shù)據(jù)轉換、數(shù)據(jù)寫入,接入能力設計如圖5所示,各步驟能力說明如下:
● 數(shù)據(jù)讀取步驟Nread
讀取步驟是指獲取原始數(shù)據(jù)所支持數(shù)據(jù)源的種類,理論上可以做到無限擴展,支持的種類越多,讀取能力越強,目前支持的數(shù)據(jù)源有關系型數(shù)據(jù)庫表、NOSQL數(shù)據(jù)庫表、文件、REST接口、TCP通訊,后續(xù)可以根據(jù)需要增加新的數(shù)據(jù)源,只需增加對應的數(shù)據(jù)源讀取插件即可;
● 數(shù)據(jù)轉換步驟Mtansmethod

▲圖5:數(shù)據(jù)接入設計
轉換步驟指的是對讀取的數(shù)據(jù)進行數(shù)據(jù)變換的能力,目前支持的數(shù)據(jù)格式變換、賦缺省值、類型變換、值替換等,后續(xù)可以根據(jù)需要增加對應的轉換插件,理論上可以做到無限擴展;
● 數(shù)據(jù)寫入步驟Ywrite
寫入步驟是指將結果數(shù)據(jù)存儲所支持的目標數(shù)據(jù)源種類,目前支持的目標數(shù)據(jù)源有關系型數(shù)據(jù)庫表、NOSQL庫表、文件、HDFS、HIVE、HBASE,后續(xù)可以根據(jù)需要增加對應的目標數(shù)據(jù)源,只需添加對應的目標數(shù)據(jù)源寫入插件即可,理論上可以做到無限擴展。
通過不同的任務調度類型和轉換模式的組合,F(xiàn)IDA.DPS提供多種數(shù)據(jù)接入場景設計,接入場景設計說明如下:
● 實時數(shù)據(jù)接入場景:按照任務調度類型可以分為一次性寫入和周期性寫入,根據(jù)數(shù)據(jù)讀取寫入的存儲類型可以分為全量覆蓋、插入、更新、合并,組合可以支持8種應用場景。
● 歷史數(shù)據(jù)的全量接入場景:歷史數(shù)據(jù)的全量接入是指在系統(tǒng)中將離線的歷史數(shù)據(jù)的一次性導入。
● 歷史數(shù)據(jù)的增量接入場景:歷史數(shù)據(jù)由于采集周期較長,通常按采集時間周期性的增量接入。
接入監(jiān)控設計
接入監(jiān)控是數(shù)據(jù)接入的眼睛,便于及時掌控數(shù)據(jù)接入的運行狀態(tài),通過使用Kafka的即時傳輸告警信息,使用ELK收集處理分析接入日志,使用MongoDB存儲基礎配置信息和分析結果,使用Spring Cloud構建分布式的服務,將這些技術有機的結合運用,實現(xiàn)ETL主機監(jiān)控、接入任務監(jiān)控及報警功能。
FIDA.DPS數(shù)據(jù)提供功能模塊主要負責從大數(shù)據(jù)平臺獲取原始存儲、中間結果、分析處理后的結果數(shù)據(jù),根據(jù)數(shù)據(jù)開放和用戶訂閱的需求對外提供數(shù)據(jù)接口,供上層應用或外部系統(tǒng)使用。
數(shù)據(jù)標準化提供的整體處理流程如圖6所示:

▲圖6:數(shù)據(jù)標準化提供流程
● 數(shù)據(jù)查詢
從大數(shù)據(jù)平臺的關系型數(shù)據(jù)庫或分布式文件系統(tǒng)中獲取數(shù)據(jù)。
● 數(shù)據(jù)篩選
根據(jù)用戶或業(yè)務應用訂閱情況篩選數(shù)據(jù)。
● 數(shù)據(jù)組織
根據(jù)數(shù)據(jù)模型組織數(shù)據(jù),生成對象化數(shù)據(jù)。
● 數(shù)據(jù)接口
提供應用獲取數(shù)據(jù)的標準接口,主要體現(xiàn)為REST接口、文件等方式。
數(shù)據(jù)提供采用統(tǒng)一開放接口的方式對外提供數(shù)據(jù),接口請求采用REST的方式,每一個開放的數(shù)據(jù)項在系統(tǒng)中以一個數(shù)據(jù)服務的形式存在,數(shù)據(jù)服務基于Spring Cloud 的分布式微服務架構實現(xiàn),使用Eureka server作為服務的注冊中心,使用Zuul網(wǎng)關組件統(tǒng)一微服務請求的入口,將數(shù)據(jù)請求轉發(fā)到具體的數(shù)據(jù)服務上,完成數(shù)據(jù)提供功能。
數(shù)據(jù)提供服務接口調用采用認證機制,用戶使用接口需先登陸,根據(jù)預分配的用戶名和密碼登錄成功后系統(tǒng)分配訪問令牌,服務接口調用時需將訪問令牌作為參數(shù)提交,接口調用時檢查令牌,判斷是否有權限訪問。

▲圖7:FIDA數(shù)據(jù)門戶界面原型
數(shù)據(jù)使用方在使用數(shù)據(jù)服務時,需在系統(tǒng)統(tǒng)一注冊登記,分配賬戶密碼及訪問密鑰,提交數(shù)據(jù)服務訂閱請求,經(jīng)審核后方可使用數(shù)據(jù),系統(tǒng)會對用戶的請求和數(shù)據(jù)服務的響應情況進行監(jiān)控,保障數(shù)據(jù)服務正常運行。
作為大數(shù)據(jù)平臺的數(shù)據(jù)中樞,F(xiàn)IDA系統(tǒng)承擔數(shù)據(jù)操作系統(tǒng)職能,F(xiàn)IDA.DPS門戶系統(tǒng)承擔系統(tǒng)數(shù)據(jù)通道的作用,目前,該系統(tǒng)成功應用于公安交管行業(yè)的大數(shù)據(jù)平臺建設當中。某新區(qū)交管部門的大數(shù)據(jù)智能研判平臺建設中,使用FIDA數(shù)據(jù)門戶系統(tǒng)匯聚警情、違法、事故、路網(wǎng)、車輛、人口、設備設施等各類數(shù)據(jù)300多項,都按照標準的流程配置完成數(shù)據(jù)接入,其中基礎數(shù)據(jù)170多項,實時數(shù)據(jù)和歷史數(shù)據(jù)各60多項;此外開放共享數(shù)據(jù)80多項,通過統(tǒng)一的接口,供大數(shù)據(jù)研判應用和業(yè)務系統(tǒng)使用。FIDA數(shù)據(jù)門戶系統(tǒng)主要界面原型如圖7所示:
本文主要從大數(shù)據(jù)環(huán)境下強調了統(tǒng)一數(shù)據(jù)管理的重要性和必要性,從功能上闡述了FIDA.DPS的體系結構,又分別從數(shù)據(jù)接入和數(shù)據(jù)提供兩方面介紹了系統(tǒng)設計思想用以指導系統(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ù)源可以做到配置即可使用,另外預留擴展接口可以根據(jù)數(shù)據(jù)應用需求進行數(shù)據(jù)接入和提供的多維度擴展。