劉雪劍 徐贏 張輝 馬崇瑞
(1.北京中電普華信息技術(shù)有限公司 北京市 100000 2.國網(wǎng)遼寧省電力有限公司大連供電公司 遼寧省大連市 116000)
數(shù)據(jù)中心是公司重要的基本支持平臺。在2019年,該公司將統(tǒng)一組織數(shù)據(jù)中心技術(shù)能力規(guī)劃和產(chǎn)品選擇。在全方位服務(wù)的統(tǒng)一數(shù)據(jù)中心分析領(lǐng)域的現(xiàn)有組件的基礎(chǔ)上,將引進成熟數(shù)據(jù)中臺產(chǎn)品來改進數(shù)據(jù)中心組件系統(tǒng)。
根據(jù)前期公司規(guī)劃的數(shù)據(jù)中臺能力架構(gòu),數(shù)據(jù)中臺技術(shù)能力主要包括數(shù)據(jù)接入、存儲計算、數(shù)據(jù)分析、數(shù)據(jù)服務(wù)、數(shù)據(jù)資產(chǎn)管理、運營管理六方面。
根據(jù)數(shù)據(jù)中臺技術(shù)能力架構(gòu),數(shù)據(jù)接入、數(shù)據(jù)計算存儲、數(shù)據(jù)分析、數(shù)據(jù)服務(wù)、數(shù)據(jù)資產(chǎn)管理、數(shù)據(jù)運營管理六方面能力對應(yīng)國網(wǎng)公司16 種技術(shù)組件,對應(yīng)1 種公司自研組件,六大能力。
數(shù)據(jù)接入方面,包括DataHub、DTS、DataWorks DI 三種組件,其中DataHub 組件功能類似開源Kafka 組件,主要用于結(jié)構(gòu)化數(shù)據(jù)增量和采集量測類數(shù)據(jù)實時接入;DTS 組件功能類似Oracle OGG組件,主要用于存儲結(jié)構(gòu)化數(shù)據(jù)的關(guān)系型數(shù)據(jù)庫間的數(shù)據(jù)復(fù)制和遷移;DataWorks DI 組件功能類似Informatica 組件,主要用于結(jié)構(gòu)化數(shù)據(jù)全量抽取或增量標識的數(shù)據(jù)增量抽取。
數(shù)據(jù)存儲計算方面, 包括MaxCompute、DRDS、OTS、TSDB、Blink、MaxcomputeSpark、GraphCompute、OSS總計8種組件,其中MaxCompute 組件在數(shù)據(jù)存儲上類似開源Hive+HDFS,同事提供分布式數(shù)據(jù)倉庫和離線計算服務(wù),Maxcompute Spark 提供內(nèi)存計算服務(wù),MaxCompute Analytic 類似GBase 數(shù)據(jù)庫,提供即席查詢和多維匯總計算能力;DRDS 組件與RDS 組件結(jié)合提供分布式關(guān)系數(shù)據(jù)庫服務(wù);OTS 組件功能類似開源HBase 數(shù)據(jù)庫,用于海量結(jié)構(gòu)化數(shù)據(jù)存儲;TSDB 組件功能類似開源OPEN TSDB組件,主要用于采集量測類時序數(shù)據(jù)存儲;Blink 組件功能類似開源Flink 組件,用于流式數(shù)據(jù)實時計算,OSS 組件為對象存儲,可用于存儲非結(jié)構(gòu)數(shù)據(jù)。
數(shù)據(jù)服務(wù)方面, 包括DataWorks 組件和CSB 組件,用于數(shù)據(jù)服務(wù)封裝,服務(wù)封裝后統(tǒng)一注冊至云上API 網(wǎng)關(guān)對外服務(wù)。
數(shù)據(jù)分析方面,包括QuickBI 組件,用于數(shù)據(jù)自助式分析和報表可視化展示。
數(shù)據(jù)資源管理和運營管理方面,包括DataWorks、DataQ 組件,其中DataQ 組件主要用于標簽管理,數(shù)據(jù)資源管理和運營管理能力由DataWorks 統(tǒng)一提供。
以應(yīng)用需求為導(dǎo)向,結(jié)合國網(wǎng)技術(shù)產(chǎn)品特點,設(shè)計構(gòu)建數(shù)據(jù)中臺總體架構(gòu),全面支撐離線數(shù)據(jù)分析、實時計算、非結(jié)構(gòu)化數(shù)據(jù)三類應(yīng)用場景構(gòu)建。數(shù)據(jù)中臺總體架構(gòu)如圖1所示。
(1)實時計算場景:該場景重點基于結(jié)構(gòu)化數(shù)據(jù)、量測數(shù)據(jù),經(jīng)過數(shù)據(jù)實時接入、流式計算處理,以服務(wù)訂閱的方式為應(yīng)用提供實時數(shù)據(jù)。
圖1:國網(wǎng)數(shù)據(jù)中臺總體架構(gòu)圖
(2)離線數(shù)據(jù)分析場景:該場景重點基于結(jié)構(gòu)化數(shù)據(jù)、量測數(shù)據(jù),經(jīng)過數(shù)據(jù)接入、數(shù)據(jù)整合(量測數(shù)據(jù)關(guān)聯(lián)計算或清洗轉(zhuǎn)換)、(寬表)邏輯處理或分析模型運算、服務(wù)封裝發(fā)布等環(huán)節(jié)后,滿足應(yīng)用T+1 或H+1 數(shù)據(jù)分析需求。
(3)非結(jié)構(gòu)化數(shù)據(jù)場景:該場景基于非結(jié)構(gòu)化數(shù)據(jù),經(jīng)過非結(jié)構(gòu)化對象存儲、非結(jié)構(gòu)化內(nèi)容提取分析、結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)換等環(huán)節(jié)后,滿足應(yīng)用對非結(jié)構(gòu)化數(shù)據(jù)的分析處理需求。
此次數(shù)據(jù)中臺試點建設(shè)涉及離線數(shù)據(jù)分析場景和實時計算場景。多維精益管理體系頻道化報表、現(xiàn)代(智慧)供應(yīng)鏈智慧運營中心、數(shù)字化審計涉及離線數(shù)據(jù)分析場景;供電服務(wù)指揮平臺、同期線損主要涉及量測數(shù)據(jù)計算場景。
3.2.1 數(shù)據(jù)流轉(zhuǎn)架構(gòu)
對2019年各試點單位多維精益管理體系頻道化報表、現(xiàn)代(智慧)供應(yīng)鏈智慧運營中心、數(shù)字化審計等業(yè)務(wù)邏輯和數(shù)據(jù)邏輯進行分析提煉后,形成基于結(jié)構(gòu)化數(shù)據(jù)分析計算的典型數(shù)據(jù)流轉(zhuǎn)結(jié)構(gòu)。
結(jié)構(gòu)化數(shù)據(jù)在中臺流轉(zhuǎn)主要經(jīng)過貼源層、共享層和分析層三層。其中貼源層定位為貼近源業(yè)務(wù)系統(tǒng),主要存儲源業(yè)務(wù)系統(tǒng)的存量及增量數(shù)據(jù),其表結(jié)構(gòu)與源業(yè)務(wù)系表結(jié)構(gòu)基本保持一致;共享層定位為模型層,用于存儲按照SG-CIM 模型整合轉(zhuǎn)換的模型表;分析層用于存儲按業(yè)務(wù)邏輯處理后的結(jié)果表。具體的結(jié)構(gòu)化數(shù)據(jù)流向如下:
(1)源業(yè)務(wù)系統(tǒng)至貼源層:源系統(tǒng)數(shù)據(jù)通過數(shù)據(jù)接入工具全量抽取到中臺貼源層中,并根據(jù)實際業(yè)務(wù)需求配置增量數(shù)據(jù)接入的頻度。
(2)貼源層至共享層:依據(jù)國網(wǎng)下發(fā)的SG-CIM 模型,通過數(shù)據(jù)集成開發(fā)工具在共享層建模,按照模型將貼源層數(shù)據(jù)進行清洗整合,形成模型表存入共享層。
(3)共享層至分析層:依據(jù)具體的業(yè)務(wù)場景需求,對共享層的物理模型表按照具體業(yè)務(wù)分析計算邏輯,進行數(shù)據(jù)開發(fā)并形成結(jié)果表存儲至分析層。
3.2.2 技術(shù)架構(gòu)
貼源層使用分布式數(shù)據(jù)倉庫MaxCompute,源業(yè)務(wù)系統(tǒng)數(shù)據(jù)通過DataWorks、DTS、OGG、DataHub 組件接入;共享層使用分布式數(shù)據(jù)倉庫MaxCompute,通過DataWorks 組件完成貼源層數(shù)據(jù)表到SG-CIM 模型層數(shù)據(jù)表轉(zhuǎn)化;分析層使用MaxCompute Analytic、DRDS(RDS),基于業(yè)務(wù)邏輯通過DataWorks 組件完成業(yè)務(wù)分析計算后的結(jié)果表開發(fā);通過DataWorks 組件對計算結(jié)果封裝為Webservice、Restful 等類型的數(shù)據(jù)服務(wù)API,發(fā)布注冊至API網(wǎng)關(guān)后,供外部報表工具調(diào)用進行可視化展示。
源端數(shù)據(jù)接入:針對源端為Oracle 數(shù)據(jù)庫的數(shù)據(jù)表,采用“定期全量抽取”和“初始化存量抽取+增量接入定期合并”的方式接入數(shù)據(jù)中臺,具體如下:
全量抽取:使用DataWorks DI 組件通過Oracle 數(shù)據(jù)庫只讀賬號直連源端數(shù)據(jù)庫,將全量數(shù)據(jù)的一次性批量接入和定期全量寫入
MaxCompute。
增量接入:使用OGG+DataHub 組合方式,源端業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫OGG 服務(wù)增量數(shù)據(jù)實時同步至數(shù)據(jù)中臺OGG 目標端服務(wù),經(jīng)DataHub 插件解析后,以流方式通過DataHub 寫入MaxCompute 貼源層增量表中;增量數(shù)據(jù)按業(yè)務(wù)需要通過DataWorks 與上一周期數(shù)據(jù)進行合并。
數(shù)據(jù)清洗整合:按照SG-CIM 模型,使用DataWorks 工具在共享層中創(chuàng)建模型物理表,基于模型表與貼源表的映射關(guān)系和清洗規(guī)則,形成SQL 計算邏輯,執(zhí)行數(shù)據(jù)同步任務(wù)將貼源層數(shù)據(jù)進行轉(zhuǎn)換寫入共享層模型物理表。
數(shù)據(jù)分析計算:基于DataWorks 可以對貼源層和共享層模型數(shù)據(jù)進行分析計算,使用封裝好的數(shù)據(jù)分析服務(wù)及算法模型服務(wù),將數(shù)據(jù)通過DataWorks 數(shù)據(jù)集成同步至分析層DRDS(RDS)或MaxCompute Analytic,形成統(tǒng)計指標結(jié)果、主題關(guān)聯(lián)寬表等,供上層應(yīng)用使用。
進行數(shù)據(jù)分析計算時,根據(jù)模型數(shù)據(jù)的復(fù)雜度和業(yè)務(wù)需求,合理選用DataWorks 的數(shù)據(jù)分析計算工具(包括ODPS Spark、PyODPS 或ODPS SQL)。ODPS SQL 適合處理邏輯清晰,針對某一行或者多行不會進行多次迭代計算,通常循環(huán)一次就可實現(xiàn)的數(shù)據(jù)開發(fā)場景。需要多次迭代或者動態(tài)查詢并計算的場景結(jié)合自身開發(fā)能力,選用ODPS Spark 或者PyODPS 進行數(shù)據(jù)開發(fā)。通過編寫數(shù)據(jù)分析計算腳本或者程序,進行計算匯總、形成寬表,再通過DataWorks DI 將匯總數(shù)據(jù)同步到分析層DRDS 中。
數(shù)據(jù)服務(wù):基于DataWorks 數(shù)據(jù)服務(wù)模塊,將分析層計算結(jié)果數(shù)據(jù)封裝為數(shù)據(jù)服務(wù)API 接口,發(fā)布至API 網(wǎng)關(guān),在API 網(wǎng)關(guān)組件上對發(fā)布的API 進行調(diào)用授權(quán)許可。根據(jù)調(diào)用規(guī)模采用不同方式,當(dāng)單個數(shù)據(jù)服務(wù)返回結(jié)果超過2000 條或大小超過5MB 時,使用數(shù)據(jù)分頁查詢機制,通過構(gòu)建帶分頁功能的數(shù)據(jù)服務(wù),業(yè)務(wù)應(yīng)用調(diào)用數(shù)據(jù)服務(wù)時指定分頁頁數(shù)和每頁數(shù)據(jù)條數(shù)參數(shù),通過多次調(diào)用完成全部數(shù)據(jù)結(jié)果查詢。
3.3.1 數(shù)據(jù)流轉(zhuǎn)架構(gòu)
根據(jù)公司采集量測類應(yīng)用的數(shù)據(jù)需求,采集量測類數(shù)據(jù)包括離線計算及實時計算兩類,具體的量測數(shù)據(jù)流轉(zhuǎn)為:
(1)實時計算類采集量測數(shù)據(jù)接入。
(2)實時數(shù)據(jù)關(guān)聯(lián)計算。
(3)實時計算結(jié)果發(fā)布。
(4)實時計算維度表映射。
3.3.2 技術(shù)架構(gòu)
2019年部分省公司未部署TSDB 數(shù)據(jù)庫,試點驗證主要采用Maxcompute 數(shù)據(jù)庫和OTS 數(shù)據(jù)庫,經(jīng)與原廠技術(shù)專家溝通,在采集量測類應(yīng)用技術(shù)架構(gòu)中,建議采用TSDB 存儲處理采集量測數(shù)據(jù),計算結(jié)果可基于MaxCompute Analytic 構(gòu)建數(shù)據(jù)服務(wù),同時TSDB與其他中臺組件集成性還需要進一步驗證。
接入層:采集量測類數(shù)據(jù)使用DataWorks 從大數(shù)據(jù)平臺HBase全量遷移;使用OGG + DataHub 實現(xiàn)增量數(shù)據(jù)抽取。檔案結(jié)構(gòu)化數(shù)據(jù)使用dataworks 工具實現(xiàn)全量數(shù)據(jù)抽??;使用OGG + DataHub實現(xiàn)增量數(shù)據(jù)抽取。
計算存儲層:通過MaxCompute 構(gòu)建離線數(shù)據(jù)場景,通過TSDB、OTS 構(gòu)建準實時數(shù)據(jù)場景,通過DataWorks+MaxCompute開展離線計算、統(tǒng)計分析,通過Blink+DataHub 開展實時計算。
數(shù)據(jù)服務(wù)層:基于DataWorks 提供Webservice、Restful 等API服務(wù),通過QuickBI 服務(wù)開發(fā)相關(guān)數(shù)據(jù)報表。
源端為Oracle 表,通過OGG+DataHub 方式進行接入,通過OGG 程序?qū)racle 生產(chǎn)庫中數(shù)據(jù)同步至實時數(shù)據(jù)分發(fā)平臺DataHub,通過Blink 流計算組件將DataHub 中數(shù)據(jù)進行清洗換為標準模型后雙發(fā)至TSDB/OTS 和MaxCompute 中。
源端為增量E 文件,通過自研解析工具Eparse 解析E 文件方式進行接入,利用采集量測組件SG-ETL 將原始E 文件轉(zhuǎn)換為標準E 文件,自研解析工具Eparse 解析標準E 文件后發(fā)送數(shù)據(jù)至DataHub,通過Blink 組件將DataHub 中數(shù)據(jù)雙發(fā)至TSDB/OTS 和MaxCompute 中。
采集量測存量數(shù)據(jù)存儲在全業(yè)務(wù)統(tǒng)一數(shù)據(jù)中心HBase 中,將全業(yè)務(wù)統(tǒng)一數(shù)據(jù)中心HBase 中存量量測數(shù)據(jù)通過DataWorks 組件遷移至MaxCompute。DataWorks 數(shù)據(jù)開發(fā)中通過OPDS SQL 將HBase數(shù)據(jù)表中RowKey 拆分寫入到MaxCompute 中。
通過“消息隊列+實時計算”組件完成采集量測類實時計算,實時計算引擎通過實時消費DataHub 數(shù)據(jù)和維度表(實時計算關(guān)聯(lián)的全部表都是維度表,如用戶檔案表等)關(guān)聯(lián)完成實時計算,實時計算維度表類型包括分布式列式數(shù)據(jù)庫OTS、分布式數(shù)據(jù)倉庫MaxCompute 和關(guān)系型數(shù)據(jù)庫DRDS/RDS 中,實時計算結(jié)果數(shù)據(jù)按需支撐量測業(yè)務(wù)應(yīng)用。
根據(jù)不同業(yè)務(wù)的分析計算需求,可按需將實時計算結(jié)果數(shù)據(jù)存儲至分析型數(shù)據(jù)庫(支撐數(shù)據(jù)服務(wù)發(fā)布)、分布式數(shù)據(jù)倉庫(支撐離線類分析計算)、消息隊列(支撐數(shù)據(jù)實時發(fā)布訂閱)及時序數(shù)據(jù)庫(支撐時序數(shù)據(jù)處理)以支撐業(yè)務(wù)應(yīng)用。
通過數(shù)據(jù)中臺DataWorks 組件實現(xiàn)數(shù)據(jù)服務(wù)的快速封裝發(fā)布,支持向?qū)J胶蚐QL 模式兩種模式,通過API 網(wǎng)關(guān)實現(xiàn)數(shù)據(jù)服務(wù)的統(tǒng)一管理,支持DRDS、RDS、OTS 等數(shù)據(jù)源。