鄭楷洪,李鵬,楊勁鋒,王鑫,張文瀚,周尚禮,曾璐琨,李勝
(1.南方電網(wǎng)數(shù)字電網(wǎng)研究院有限公司,廣州510663;2. 中國(guó)南方電網(wǎng)有限責(zé)任公司,廣州510663;3. 浙江大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,杭州310058)
近年來(lái),智能電網(wǎng)建設(shè)發(fā)展迅速,智能電表安裝數(shù)量越來(lái)越多,電力計(jì)量系統(tǒng)需要采集和處理的數(shù)據(jù)量日益增多。目前國(guó)內(nèi)電力計(jì)量系統(tǒng)可以滿(mǎn)足一般量級(jí)的計(jì)量服務(wù),但無(wú)法集中處理來(lái)自各省市的大規(guī)模電能量數(shù)據(jù),對(duì)海量數(shù)據(jù)的利用率較低。為解決上述問(wèn)題,南方電網(wǎng)研發(fā)上線(xiàn)了網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)。該平臺(tái)可以對(duì)全南方電網(wǎng)的電力計(jì)量數(shù)據(jù)進(jìn)行統(tǒng)一采集、統(tǒng)一管理、統(tǒng)一分析、統(tǒng)一應(yīng)用,從而為電力營(yíng)銷(xiāo)業(yè)務(wù)提供決策支持。近幾年來(lái),隨著數(shù)字電網(wǎng)建設(shè)的進(jìn)一步發(fā)展,電能量數(shù)據(jù)規(guī)模進(jìn)一步擴(kuò)大,該平臺(tái)采用的傳統(tǒng)式架構(gòu)存在:1)集中式數(shù)據(jù)采集效率不高;2)數(shù)據(jù)處理并發(fā)量偏低;3)傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)無(wú)法滿(mǎn)足大數(shù)據(jù)擴(kuò)展需求;4)系統(tǒng)可用性低等問(wèn)題。本文論述了如何對(duì)該平臺(tái)架構(gòu)升級(jí)改造,以支持大規(guī)模電力計(jì)量數(shù)據(jù)的采集、處理、計(jì)算和存儲(chǔ)等各方面業(yè)務(wù)。
針對(duì)上述研究問(wèn)題,國(guó)內(nèi)外已開(kāi)展相關(guān)研究工作。在電能量數(shù)據(jù)采集的實(shí)時(shí)性方面,Sariri S等構(gòu)建出一種基于Secure Shell通道技術(shù)的實(shí)時(shí)電力數(shù)據(jù)采集系統(tǒng),用來(lái)實(shí)時(shí)采集用戶(hù)電力數(shù)據(jù),掌握用戶(hù)電力需求[1]。Nithin S等構(gòu)造出一種智能電網(wǎng)中實(shí)時(shí)用電數(shù)據(jù)收集單元,該單元使用基于傅立葉變換的方法來(lái)計(jì)算電壓、電流、相量和頻率,實(shí)時(shí)性較高[2]。
在電能量數(shù)據(jù)采集的安全性方面,H. Mohammed等利用對(duì)稱(chēng)密鑰密碼術(shù)和哈希操作,提出一種基于隱私保護(hù)的數(shù)據(jù)采集方案,實(shí)驗(yàn)證明該方案性能優(yōu)越[3]。隨著數(shù)據(jù)采集效率的提高,對(duì)數(shù)據(jù)的計(jì)算處理能力有了更高要求。為了實(shí)現(xiàn)對(duì)海量電力數(shù)據(jù)的快速并行分析計(jì)算,日本Kyushu電力公司上線(xiàn)使用Hadoop云計(jì)算平臺(tái),在數(shù)據(jù)處理上具有較高的效率[4]。C. Lackner等開(kāi)發(fā)了相量測(cè)量單元數(shù)據(jù)狀態(tài)估計(jì)器和拓?fù)涮幚砥髯鳛镺penPDC適配器,實(shí)現(xiàn)了電力計(jì)量數(shù)據(jù)的實(shí)時(shí)處理和接收,并且可以很容易地應(yīng)用到現(xiàn)有相量數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中[5]。鄭楷洪等將人工智能技術(shù)應(yīng)用到電網(wǎng)具體業(yè)務(wù)場(chǎng)景,利用智能數(shù)據(jù)分析技術(shù)對(duì)海量電能量數(shù)據(jù)進(jìn)行分析計(jì)算,提高數(shù)據(jù)計(jì)算能力[6]。
在大規(guī)模電能量數(shù)據(jù)的存儲(chǔ)方面,Perisic等基于MongoDB數(shù)據(jù)庫(kù)支持自動(dòng)分片、自動(dòng)故障轉(zhuǎn)移且支持的數(shù)據(jù)結(jié)構(gòu)多樣的特點(diǎn),提出使用MongoDB數(shù)據(jù)庫(kù)存儲(chǔ)電能量數(shù)據(jù)[7]。Xu等提出一種將高級(jí)量測(cè)體系(advanced metering infrastructure,AMI)數(shù)據(jù)根據(jù)其各自特征分為測(cè)量數(shù)據(jù)和管理數(shù)據(jù)的方法,該方法混合Hadoop分布式文件系統(tǒng)和關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)對(duì)電能量數(shù)據(jù)進(jìn)行分類(lèi)、存儲(chǔ)和統(tǒng)一訪(fǎng)問(wèn),具有高效率和強(qiáng)伸縮性的優(yōu)勢(shì)[8]。S. Yoon等提出一種具有高速數(shù)據(jù)流處理能力的存儲(chǔ)結(jié)構(gòu),以突破對(duì)電力數(shù)據(jù)查詢(xún)速度的限制[9]。R. Hao等針對(duì)電能信息采集系統(tǒng)中數(shù)據(jù)重復(fù)采集、利用率低、數(shù)據(jù)共享困難的問(wèn)題,提出了一種基于遠(yuǎn)程字典服務(wù)(remote dictionary server,Redis)和有序集合數(shù)據(jù)庫(kù)(sorted set data base,SSDB)的變電站多維歷史數(shù)據(jù)統(tǒng)一存儲(chǔ)技術(shù),實(shí)現(xiàn)了歷史數(shù)據(jù)的永久存儲(chǔ)[10]。
隨著分布式架構(gòu)和技術(shù)的日趨成熟,越來(lái)越多的分布式技術(shù)被應(yīng)用于電力計(jì)量領(lǐng)域。盧繼哲等基于區(qū)塊鏈技術(shù)提出一種電能量數(shù)據(jù)分布式采集模式,可以在提高計(jì)量設(shè)備數(shù)據(jù)采集效率的前提下保證采集過(guò)程數(shù)據(jù)的安全性[11]。李瑾等提出基于區(qū)塊鏈的分布式電能量數(shù)據(jù)可信存儲(chǔ)機(jī)制,解決了電能量數(shù)據(jù)中心化存儲(chǔ)安全性和存儲(chǔ)效率低下的問(wèn)題[12]。陳森利等基于Redis數(shù)據(jù)庫(kù)的分布式擴(kuò)展機(jī)制提出動(dòng)態(tài)分布式緩存系統(tǒng),能夠處理海量數(shù)據(jù),具有高效、可靠、擴(kuò)展方便等特點(diǎn)[13]。王和棟等為提高省級(jí)計(jì)量自動(dòng)化系統(tǒng)的數(shù)據(jù)處理效率,提出分布式并行處理的方法,有效解決了海量數(shù)據(jù)在存儲(chǔ)、容錯(cuò)、吞吐量等方面的問(wèn)題[14]。呂中梁等所提出的電力系統(tǒng)能量管理系統(tǒng)(energy management system,EMS)高級(jí)應(yīng)用微服務(wù)Web架構(gòu)有著可移動(dòng)使用、具備熱升級(jí)功能等優(yōu)勢(shì),從而保障了系統(tǒng)安全、可靠,為調(diào)度員提供了更為靈活的決策支持[15]。賀勇等基于分布式實(shí)時(shí)計(jì)算框架,提出一種電能量數(shù)據(jù)異常特征提取在線(xiàn)預(yù)警系統(tǒng),可以用來(lái)實(shí)時(shí)檢測(cè)有無(wú)異常數(shù)據(jù)并提供報(bào)警,證明了該分布式實(shí)時(shí)計(jì)算框架在數(shù)據(jù)計(jì)算分析方面的有效性[16]。李朋等采用分布式架構(gòu)技術(shù)對(duì)抄表系統(tǒng)進(jìn)行升級(jí),提高了各功能模塊間的數(shù)據(jù)交互效率[17]。
基于上述幾個(gè)主要方面的研究現(xiàn)狀和技術(shù)要素考慮,本文在數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)等方面對(duì)南方電網(wǎng)平臺(tái)所使用的面向大規(guī)模電能量數(shù)據(jù)的全棧全分布式架構(gòu)展開(kāi)論述。所謂全棧,即在電能量數(shù)據(jù)的采集、處理、存儲(chǔ)等一系列過(guò)程中對(duì)電能量數(shù)據(jù)進(jìn)行管理,并應(yīng)用于南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái),滿(mǎn)足平臺(tái)多業(yè)務(wù)需求。性能測(cè)試和實(shí)踐應(yīng)用結(jié)果表明了本文所提架構(gòu),具有數(shù)據(jù)吞吐量大、處理效率高、高并發(fā)存儲(chǔ)訪(fǎng)問(wèn)等優(yōu)點(diǎn),具有一定的創(chuàng)新性和行業(yè)借鑒性。
本文基于大數(shù)據(jù)技術(shù),針對(duì)網(wǎng)級(jí)電能量數(shù)據(jù)的采集、處理、存儲(chǔ),提出了一個(gè)全棧全分布式架構(gòu),可以提供多種業(yè)務(wù)應(yīng)用。架構(gòu)采用分布式存儲(chǔ)、分布式計(jì)算、分布式消息隊(duì)列和分布式應(yīng)用技術(shù)。其中分布式存儲(chǔ)包括分布式內(nèi)存庫(kù)、分布式關(guān)系庫(kù)和分布式大數(shù)據(jù)平臺(tái);分布式計(jì)算包括分布式的內(nèi)存計(jì)算和分布式離線(xiàn)計(jì)算;分布式消息隊(duì)列使用 Kafka,分布式應(yīng)用采用微服務(wù)架構(gòu)實(shí)現(xiàn)。
網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)通過(guò)采集平臺(tái)從各省級(jí)計(jì)量自動(dòng)化系統(tǒng)數(shù)據(jù)上送隊(duì)列中獲取數(shù)據(jù),對(duì)采集到的大規(guī)模電能量數(shù)據(jù)進(jìn)行分析、處理和存儲(chǔ),進(jìn)而實(shí)現(xiàn)各類(lèi)業(yè)務(wù)應(yīng)用。平臺(tái)架構(gòu)由數(shù)據(jù)采集層、數(shù)據(jù)處理層和業(yè)務(wù)應(yīng)用層組成,結(jié)構(gòu)如圖1所示。
圖1 網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)分布式架構(gòu)Fig.1 Distributed architecture of electrical energy data platform of power grid
在數(shù)據(jù)采集層,各省計(jì)量自動(dòng)化系統(tǒng)首先進(jìn)行原始數(shù)據(jù)采集及預(yù)處理,構(gòu)成分子公司互聯(lián)網(wǎng)數(shù)據(jù)中心(Internet data center,IDC)。各分子公司按照接口規(guī)范格式,將各類(lèi)數(shù)據(jù)上送到由各Kafka消息隊(duì)列組成的總公司IDC區(qū)。數(shù)據(jù)源裝載服務(wù)將實(shí)時(shí)檔案數(shù)據(jù)、實(shí)時(shí)采集數(shù)據(jù)、各項(xiàng)統(tǒng)計(jì)指標(biāo)結(jié)果數(shù)據(jù),裝載到網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)的相應(yīng)存儲(chǔ)中。數(shù)據(jù)源裝載服務(wù)采用分布式技術(shù)框架,可以保證數(shù)據(jù)采集和傳輸?shù)膶?shí)時(shí)性。
在數(shù)據(jù)處理層,通過(guò)大數(shù)據(jù)分析和數(shù)據(jù)挖掘技術(shù),對(duì)采集到的源數(shù)據(jù)進(jìn)行加工,包括數(shù)據(jù)的清洗、校驗(yàn)、指標(biāo)計(jì)算等。得到加工結(jié)果并存儲(chǔ)在分布式關(guān)系庫(kù)、內(nèi)存庫(kù)等數(shù)據(jù)庫(kù)中,用于支撐實(shí)時(shí)業(yè)務(wù)、非實(shí)時(shí)業(yè)務(wù)和數(shù)據(jù)挖掘業(yè)務(wù)。
在業(yè)務(wù)應(yīng)用層,采用“微服務(wù)+微應(yīng)用”的互聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)平臺(tái)業(yè)務(wù)應(yīng)用。微服務(wù)通過(guò)訪(fǎng)問(wèn)分布式關(guān)系數(shù)據(jù)庫(kù)、大規(guī)模并行處理(massively parallel processing,MPP)、內(nèi)存數(shù)據(jù)庫(kù)等提供微服務(wù)業(yè)務(wù)接口。微應(yīng)用通過(guò)各種前端展現(xiàn)工具,基于微服務(wù)提供的業(yè)務(wù)接口組裝前端業(yè)務(wù)應(yīng)用??偣靖綦x安全區(qū)(demilitarized zone,DMZ)將外部應(yīng)用與內(nèi)部網(wǎng)絡(luò)進(jìn)行隔離,保護(hù)內(nèi)部網(wǎng)絡(luò)安全。
數(shù)據(jù)采集分為兩部分,一部分是從各省及超高壓的 Kafka 隊(duì)列中采集實(shí)時(shí)電能量數(shù)據(jù)存儲(chǔ)到實(shí)時(shí)庫(kù)和分布式庫(kù),另一部分采集企業(yè)內(nèi)其他系統(tǒng)的數(shù)據(jù)。為了實(shí)現(xiàn)數(shù)據(jù)大規(guī)模并行采集,保證采集數(shù)據(jù)的高速穩(wěn)定,采集集群采用分布式部署。圖2所示為南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)數(shù)據(jù)采集流程。
圖2 數(shù)據(jù)采集邏輯架構(gòu)Fig.2 Logical architecture of data collection
數(shù)據(jù)采集流程分為7個(gè)部分,分別為數(shù)據(jù)上送、上送數(shù)據(jù)獲取、檔案變更數(shù)據(jù)發(fā)布、上送數(shù)據(jù)裝載、MPP數(shù)據(jù)裝載、檔案變更數(shù)據(jù)獲取和檔案子集數(shù)據(jù)裝載,具體描述如下。
1)數(shù)據(jù)上送:各省級(jí)計(jì)量自動(dòng)化系統(tǒng)將采集數(shù)據(jù)、檔案變更數(shù)據(jù)及其他數(shù)據(jù)通過(guò)專(zhuān)用程序上送到網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)消息隊(duì)列,作為平臺(tái)數(shù)據(jù)源。
2)上送數(shù)據(jù)獲?。翰捎没谂渲玫姆植际蕉鄬?shí)例集群模式部署網(wǎng)側(cè)的數(shù)據(jù)源獲取工具,在配置獲取消息時(shí),每個(gè)消息主題可以配置一個(gè)或多個(gè)消費(fèi)實(shí)例,每個(gè)消費(fèi)實(shí)例也可以配置多個(gè)消費(fèi)者消費(fèi)不同的消息主題。
3)檔案變更數(shù)據(jù)發(fā)布:考慮到檔案數(shù)據(jù)的動(dòng)態(tài)性,不僅要將檔案數(shù)據(jù)裝載到持久化存儲(chǔ)中,還要檢測(cè)其是否發(fā)生變更,并將變更數(shù)據(jù)發(fā)布到“變更檔案隊(duì)列”,供各前端MySQL數(shù)據(jù)庫(kù)中的檔案子集更新使用。
4)上送數(shù)據(jù)裝載:針對(duì)不同類(lèi)型的上送數(shù)據(jù),本文設(shè)計(jì)了形成上送日志、形成MPP數(shù)據(jù)源、裝載到HBASE數(shù)據(jù)庫(kù)3種上送數(shù)據(jù)裝載方式,同時(shí)為了保證數(shù)據(jù)裝載的性能和實(shí)時(shí)性,裝載過(guò)程基于分時(shí)斷面和最大批次2個(gè)參數(shù)進(jìn)行。
5)MPP數(shù)據(jù)裝載:為保證準(zhǔn)實(shí)時(shí)數(shù)據(jù)的裝載,MPP數(shù)據(jù)裝載程序應(yīng)實(shí)時(shí)監(jiān)控MPP數(shù)據(jù)源目錄,同時(shí)由于MPP數(shù)據(jù)庫(kù)不能直接獲取和裝載消息隊(duì)列信息,因此通過(guò)上送數(shù)據(jù)裝載程序?qū)⑵涮幚沓煞制瑪?shù)據(jù)文件再進(jìn)行裝載。
6)檔案變更數(shù)據(jù)獲?。荷纤蛿?shù)據(jù)裝載程序在獲取并處理檔案數(shù)據(jù)時(shí)標(biāo)識(shí)出檔案變更記錄,并對(duì)檔案變更數(shù)據(jù)進(jìn)行全字段差異性對(duì)比,為了提升對(duì)比性能,采用全字段檔案數(shù)據(jù)Json數(shù)據(jù)字符串Hash碼對(duì)比的方式進(jìn)行對(duì)比。
7)檔案子集數(shù)據(jù)裝載:各前端應(yīng)用MPP數(shù)據(jù)根據(jù)需要從變更檔案隊(duì)列中獲取數(shù)據(jù),根據(jù)前端應(yīng)用MPP前端數(shù)據(jù)庫(kù)的需要,更新相關(guān)對(duì)象的相關(guān)字段。
相較于傳統(tǒng)架構(gòu)的集中式電能量數(shù)據(jù)采集,這種分布式部署的采集集群具有更高的采集效率和更大的數(shù)據(jù)吞吐量,可以保證未來(lái)全網(wǎng)范圍內(nèi)的電能量數(shù)據(jù)采集的時(shí)效性。
南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)以Kafka消息隊(duì)列接收五省兩市數(shù)據(jù),為了保證Kafka數(shù)據(jù)處理的時(shí)間先后順序,需要確保同一測(cè)點(diǎn)數(shù)據(jù)發(fā)送到同一個(gè)Kafka的分區(qū)中。Kafka將消息以主題(Topic)進(jìn)行歸納,每一個(gè)Kafka分區(qū)的服務(wù)端都設(shè)置不同的主題(Topic),Kafka客戶(hù)端根據(jù)Topic向指定Kafka分區(qū)發(fā)送數(shù)據(jù),保證測(cè)點(diǎn)數(shù)據(jù)和Kafka分區(qū)的一一對(duì)應(yīng)。為了提高數(shù)據(jù)吞吐量,實(shí)現(xiàn)實(shí)時(shí)流數(shù)據(jù)處理,采用Spark Streaming框架獲取數(shù)據(jù)源。為了平衡服務(wù)器壓力,使用消息分區(qū)算法保障各分區(qū)消息數(shù)量的平衡。分區(qū)算法采用MurmurHash[18]對(duì)測(cè)點(diǎn)計(jì)算Hash值,并用其絕對(duì)值與分區(qū)數(shù)量取模。
針對(duì)現(xiàn)實(shí)業(yè)務(wù)數(shù)據(jù)量級(jí)較大,數(shù)據(jù)上傳存在漏傳、延遲傳輸、重復(fù)上傳等外在因素,為了保證數(shù)據(jù)的實(shí)時(shí)性和準(zhǔn)確性,將數(shù)據(jù)處理過(guò)程分為實(shí)時(shí)數(shù)據(jù)處理和歷史數(shù)據(jù)處理,處理流程如圖3所示。
圖3 數(shù)據(jù)處理流程Fig.3 Data processing flow
2.2.1 實(shí)時(shí)數(shù)據(jù)處理
為保證數(shù)據(jù)的準(zhǔn)確性及完整性,避免因網(wǎng)絡(luò)或采集程序出錯(cuò)導(dǎo)致實(shí)時(shí)數(shù)據(jù)丟失,各業(yè)務(wù)系統(tǒng)對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行累積,目前采取保留當(dāng)天和最近5 d數(shù)據(jù)的措施。由于實(shí)時(shí)數(shù)據(jù)需要對(duì)比與當(dāng)前時(shí)間最接近的數(shù)據(jù)指標(biāo),因此需要快速讀取大量近實(shí)時(shí)數(shù)據(jù),并進(jìn)行大規(guī)模的并行計(jì)算,最后將計(jì)算結(jié)果反饋到結(jié)果庫(kù)中。
將實(shí)時(shí)數(shù)據(jù)處理過(guò)程分為3部分。首先由于從Kafka接收的外部數(shù)據(jù)存在較多不確定因素,每次Spark Streaming接收到數(shù)據(jù)都要先進(jìn)行數(shù)據(jù)清洗與校驗(yàn),剔除同一批次中重復(fù)的數(shù)據(jù),并將數(shù)據(jù)發(fā)送到Redis數(shù)據(jù)庫(kù)中,利用Lua腳本對(duì)Redis插入的數(shù)據(jù)和原始數(shù)據(jù)進(jìn)行去重操作。然后通過(guò)調(diào)度器每15 min定時(shí)啟動(dòng)Spark Job對(duì)Redis近5 d的歷史數(shù)據(jù)進(jìn)行指標(biāo)計(jì)算,并將計(jì)算結(jié)果輸出到分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)相應(yīng)的目錄中。最后調(diào)度器定時(shí)啟動(dòng)同步Spark Job檢查相同業(yè)務(wù)時(shí)間點(diǎn)下面最舊一次計(jì)算的結(jié)果目錄文件,與最新一次計(jì)算結(jié)果的目錄文件進(jìn)行差異對(duì)比,對(duì)有修改和新增操作的指令進(jìn)行歸類(lèi),最后增量同步到MPP數(shù)據(jù)庫(kù)。
2.2.2 歷史數(shù)據(jù)處理
為避免因?yàn)榫W(wǎng)絡(luò)或采集程序原因?qū)е翹天前指標(biāo)數(shù)據(jù)計(jì)算錯(cuò)誤,對(duì)近兩星期內(nèi)的數(shù)據(jù)進(jìn)行指標(biāo)重算,并且通過(guò)手動(dòng)指定的方式對(duì)歷史的某一天進(jìn)行指標(biāo)重算,最后將計(jì)算結(jié)果反饋到結(jié)果庫(kù)中。
將歷史數(shù)據(jù)處理過(guò)程分為3部分。首先對(duì)Spark Streaming接到的數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗與校驗(yàn),并將數(shù)據(jù)發(fā)送到Hbase和MPP數(shù)據(jù)庫(kù)。一方面,端系統(tǒng)(end system,ES)從Hbase中讀取數(shù)據(jù),通過(guò)網(wǎng)絡(luò)向網(wǎng)級(jí)電能量系統(tǒng)輸送明細(xì)初始數(shù)據(jù)。另一方面,調(diào)度器每日定時(shí)啟動(dòng)Spark job程序?qū)base 5 d前至近兩星期內(nèi)的歷史數(shù)據(jù)進(jìn)行指標(biāo)計(jì)算,并將計(jì)算結(jié)果輸出HDFS中。最后調(diào)度器定時(shí)啟動(dòng)同步Spark Job檢查相同業(yè)務(wù)時(shí)間點(diǎn)下面最舊一次計(jì)算的結(jié)果目錄文件,與最新一次計(jì)算結(jié)果的目錄文件進(jìn)行差異對(duì)比,對(duì)有修改和新增操作的指令進(jìn)行歸類(lèi),最后增量同步到MPP數(shù)據(jù)庫(kù)。
2.2.3 數(shù)據(jù)計(jì)算分層
為了保證數(shù)據(jù)計(jì)算的準(zhǔn)確性和計(jì)算結(jié)果的及時(shí)性,依據(jù)如圖4所示的數(shù)據(jù)依賴(lài)關(guān)系對(duì)數(shù)據(jù)計(jì)算過(guò)程進(jìn)行分層,包括業(yè)務(wù)數(shù)據(jù)層、公共明細(xì)層、公共匯總層、應(yīng)用數(shù)據(jù)層和實(shí)時(shí)維度層,明確各層處理的數(shù)據(jù)類(lèi)型如下所示。
圖4 大數(shù)據(jù)計(jì)算依賴(lài)Fig.4 Big data computing dependency
1)業(yè)務(wù)數(shù)據(jù)層
業(yè)務(wù)數(shù)據(jù)層主要處理來(lái)自省級(jí)計(jì)量系統(tǒng)的原始數(shù)據(jù),包含了所有采集數(shù)據(jù)、檔案數(shù)據(jù)、和指標(biāo)數(shù)據(jù)。數(shù)據(jù)質(zhì)量中心對(duì)這類(lèi)數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗、數(shù)據(jù)校驗(yàn),因此數(shù)據(jù)粒度是最細(xì)的。
2)公共明細(xì)層
公共明細(xì)層是在業(yè)務(wù)數(shù)據(jù)層基礎(chǔ)上,根據(jù)業(yè)務(wù)過(guò)程建模出來(lái)的實(shí)時(shí)事實(shí)明細(xì)層,比如小時(shí)電量、小時(shí)功率、日電量等,這種數(shù)據(jù)會(huì)回流到離線(xiàn)計(jì)算供下游使用,最大程度地保證實(shí)時(shí)和離線(xiàn)數(shù)據(jù)在業(yè)務(wù)數(shù)據(jù)層和公共明細(xì)層是一致的。
3)公共匯總層
公共匯總層在訂閱公共明細(xì)層的數(shù)據(jù)后,會(huì)在實(shí)時(shí)任務(wù)中計(jì)算各個(gè)維度的匯總指標(biāo)。如果維度是各類(lèi)業(yè)務(wù)通用的,則會(huì)放在公共匯總層,作為通用的數(shù)據(jù)模型使用。
4)應(yīng)用數(shù)據(jù)層
應(yīng)用數(shù)據(jù)層的計(jì)算結(jié)果將直接用于系統(tǒng)應(yīng)用展示,如線(xiàn)損數(shù)據(jù)、指標(biāo)統(tǒng)計(jì)數(shù)據(jù)等。
5)實(shí)時(shí)維度層
實(shí)時(shí)維度層數(shù)據(jù)從離線(xiàn)維表層導(dǎo)出,抽取到在線(xiàn)計(jì)算中供實(shí)時(shí)應(yīng)用調(diào)用。該層對(duì)實(shí)時(shí)應(yīng)用來(lái)說(shuō)是靜態(tài)的,所有的數(shù)據(jù)抽取、轉(zhuǎn)換、加載(extract-transform-load,ETL)處理工作會(huì)在離線(xiàn)計(jì)算中完成。
基于Spark對(duì)數(shù)據(jù)集的共享和重用,加快數(shù)據(jù)訪(fǎng)問(wèn)速度的優(yōu)勢(shì),本文架構(gòu)在計(jì)算層采用基于內(nèi)存計(jì)算的Spark分布式計(jì)算框架,執(zhí)行各項(xiàng)計(jì)算功能,如圖5所示。通過(guò)設(shè)計(jì)計(jì)算組件實(shí)現(xiàn)計(jì)算邏輯,通過(guò)計(jì)算調(diào)度組件分配計(jì)算資源、創(chuàng)建計(jì)算任務(wù),并監(jiān)控、協(xié)調(diào)計(jì)算任務(wù)的執(zhí)行,將計(jì)算結(jié)果通過(guò)計(jì)算入庫(kù)程序分別寫(xiě)入分布式數(shù)據(jù)庫(kù)、關(guān)系數(shù)據(jù)庫(kù)和內(nèi)存數(shù)據(jù)庫(kù)。
圖5 分布式計(jì)算架構(gòu)Fig.5 Architecture of distributed computing
傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)已經(jīng)無(wú)法滿(mǎn)足存儲(chǔ)容量和擴(kuò)展性的需求。因此,本文將主從分布式內(nèi)存數(shù)據(jù)庫(kù)與Hbase分布式數(shù)據(jù)庫(kù)結(jié)合,如圖6所示,數(shù)據(jù)庫(kù)存儲(chǔ)2部分?jǐn)?shù)據(jù):1)實(shí)時(shí)計(jì)算結(jié)果數(shù)據(jù),支撐實(shí)時(shí)性要求高的業(yè)務(wù),比如省級(jí)系統(tǒng)狀態(tài)監(jiān)控、終端在線(xiàn)率、終端信號(hào)強(qiáng)度、地圖展示、實(shí)時(shí)停電情況、實(shí)時(shí)采集完整率等;2)原始采集的電能量數(shù)據(jù),支持?jǐn)?shù)據(jù)的準(zhǔn)實(shí)時(shí)發(fā)布及計(jì)算。使用分布式內(nèi)存數(shù)據(jù)庫(kù)可實(shí)現(xiàn)高熱度數(shù)據(jù)的高并發(fā)高性能訪(fǎng)問(wèn),對(duì)于關(guān)鍵功能提供最為高效的數(shù)據(jù)訪(fǎng)問(wèn)支持。
圖6 分布式內(nèi)存數(shù)據(jù)庫(kù)Fig.6 Distributed memory database
本文架構(gòu)已經(jīng)應(yīng)用于南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái),截至目前,平臺(tái)已經(jīng)在大客戶(hù)監(jiān)控、線(xiàn)損分析、電力交易、停電監(jiān)控、業(yè)務(wù)監(jiān)測(cè)、用電分析、指標(biāo)監(jiān)測(cè)等方面表現(xiàn)出良好的應(yīng)用效果。下面將給出應(yīng)用分布式架構(gòu)前后平臺(tái)性能測(cè)試對(duì)比,以及架構(gòu)在網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)的應(yīng)用效果。
4.1.1 系統(tǒng)性能對(duì)比
本文依據(jù)南方電網(wǎng)《計(jì)量自動(dòng)化系統(tǒng)主站技術(shù)規(guī)范》[19]中技術(shù)指標(biāo)要求,對(duì)平臺(tái)的信息處理指標(biāo)如系統(tǒng)數(shù)據(jù)正確率、數(shù)據(jù)完整率,實(shí)時(shí)性指標(biāo)如重要信息(重要狀態(tài)信息及總功率和電能量等)巡檢時(shí)間、常規(guī)數(shù)據(jù)召測(cè)和設(shè)置響應(yīng)時(shí)間(指主站發(fā)送召測(cè)命令到主站顯示數(shù)據(jù)的時(shí)間)、歷史數(shù)據(jù)召測(cè)響應(yīng)時(shí)間(指主站發(fā)送召測(cè)命令到主站顯示數(shù)據(jù)的時(shí)間)、常規(guī)數(shù)據(jù)查詢(xún)(指查詢(xún)1個(gè)計(jì)量點(diǎn)1個(gè)月的表碼數(shù)據(jù)所需的時(shí)間)、大規(guī)模數(shù)據(jù)查詢(xún)(指查詢(xún)10 000個(gè)計(jì)量點(diǎn)1個(gè)月的表碼數(shù)據(jù)所需的時(shí)間)以及可用性指標(biāo)如系統(tǒng)年可用率進(jìn)行測(cè)試。測(cè)試結(jié)果表明,使用本文架構(gòu)平臺(tái)的各項(xiàng)性能指標(biāo)不僅達(dá)到了計(jì)量自動(dòng)化系統(tǒng)主站技術(shù)規(guī)范中技術(shù)指標(biāo)的要求,而且要優(yōu)于原架構(gòu)的性能。原架構(gòu)和本文架構(gòu)性能測(cè)試對(duì)比結(jié)果如表1所示。
表1 系統(tǒng)性能對(duì)比Tab.1 System performance comparison
4.1.2 數(shù)據(jù)采集CPU測(cè)算
數(shù)據(jù)采集CPU測(cè)算主要參照實(shí)際測(cè)試結(jié)果,測(cè)試在一定服務(wù)器資源的配置下,在要求的時(shí)間內(nèi),能完成多少計(jì)量點(diǎn)采集數(shù)據(jù)的入庫(kù)。測(cè)試情況如下:4臺(tái)2路12核心服務(wù)器,共96個(gè)CPU線(xiàn)程,原架構(gòu)入庫(kù)程序在5 min內(nèi)完成1 000萬(wàn)計(jì)量點(diǎn)數(shù)據(jù)的入庫(kù),運(yùn)行負(fù)載率為30%,而采用本文分布式架構(gòu)入庫(kù)程序在5 min內(nèi)完成3 500萬(wàn)計(jì)量點(diǎn)數(shù)據(jù)的入庫(kù),運(yùn)行負(fù)載率為50%,數(shù)據(jù)采集效率大大提升,結(jié)果如表2所示。
表2 數(shù)據(jù)采集CPU測(cè)算Tab.2 Data acquisition CPU measurement
4.1.3 數(shù)據(jù)計(jì)算處理CPU測(cè)算
數(shù)據(jù)計(jì)算處理CPU測(cè)算主要測(cè)試在一定服務(wù)器資源的配置下,在要求的時(shí)間內(nèi),能完成多少計(jì)量點(diǎn)采集數(shù)據(jù)的計(jì)算處理,以測(cè)試系統(tǒng)的并行計(jì)算能力。測(cè)試情況如下:8臺(tái)2路12核心服務(wù)器,可運(yùn)行線(xiàn)程共192個(gè)CPU線(xiàn)程,原架構(gòu)計(jì)算處理程序在10 min內(nèi)完成1 000萬(wàn)計(jì)量點(diǎn)數(shù)據(jù)的入庫(kù),運(yùn)行負(fù)載率為30%,而采用本文分布式架構(gòu)計(jì)算處理程序在10 min內(nèi)完成4 000萬(wàn)計(jì)量點(diǎn)數(shù)據(jù)的入庫(kù),運(yùn)行負(fù)載率為55%,數(shù)據(jù)計(jì)算處理能力有了較大提升,結(jié)果如表3所示。
表3 數(shù)據(jù)計(jì)算處理CPU測(cè)算Tab.3 Data calculation processing CPU measurement
4.1.4 數(shù)據(jù)存儲(chǔ)容量測(cè)試
存儲(chǔ)容量根據(jù)存儲(chǔ)計(jì)量條數(shù)及每條計(jì)量所占空間進(jìn)行估算,測(cè)量點(diǎn)分為廠(chǎng)站、公變、專(zhuān)變、低壓部分,按照HDFS文件及列簇估算空間對(duì)分布式數(shù)據(jù)庫(kù)進(jìn)行計(jì)算,計(jì)量條數(shù)根據(jù)采集頻率及存儲(chǔ)周期進(jìn)行計(jì)算,具體計(jì)算公式為:
存儲(chǔ)容量=測(cè)量點(diǎn)數(shù)據(jù)×采集頻率×每條計(jì)錄所占空間×存儲(chǔ)周期。
由于文章篇幅限制,展示部分?jǐn)?shù)據(jù)存儲(chǔ)容量測(cè)試結(jié)果,如表4所示。從上述測(cè)試結(jié)果可知,使用全棧全分布式架構(gòu)后網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)在數(shù)據(jù)采集、數(shù)據(jù)計(jì)算處理性能要優(yōu)于原架構(gòu),同時(shí)數(shù)據(jù)存儲(chǔ)容量達(dá)到較高級(jí)別。
表4 Hbase數(shù)據(jù)庫(kù)存儲(chǔ)容量Tab.4 Hbase database storage capacity
圖7 南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)截圖Fig.7 Screenshot of electric energy data platform of CSG
得益于分布式架構(gòu)強(qiáng)大的應(yīng)用擴(kuò)展能力,目前網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)開(kāi)發(fā)了數(shù)據(jù)管理、監(jiān)測(cè)中心、數(shù)據(jù)統(tǒng)計(jì)分析、智能運(yùn)維支撐、輔助決策、系統(tǒng)管理、綜合資源監(jiān)測(cè)、統(tǒng)一服務(wù)、綜合展示9個(gè)業(yè)務(wù)功能模塊,如圖7所示。全面接入9.8萬(wàn)座廠(chǎng)站、70.1萬(wàn)臺(tái)專(zhuān)變、84.4萬(wàn)臺(tái)公變以及9 404.6萬(wàn)戶(hù)低壓用戶(hù)數(shù)據(jù),實(shí)現(xiàn)了全網(wǎng)電能計(jì)量數(shù)據(jù)的統(tǒng)一采集、存儲(chǔ)、監(jiān)控及應(yīng)用。隨著業(yè)務(wù)的不斷發(fā)展,未來(lái)會(huì)加入更多業(yè)務(wù)功能模塊,進(jìn)一步提高平臺(tái)的服務(wù)能力。
本文基于國(guó)內(nèi)外電力計(jì)量領(lǐng)域的研究現(xiàn)狀,結(jié)合分布式架構(gòu)的優(yōu)點(diǎn),設(shè)計(jì)面向大規(guī)模電能量數(shù)據(jù)的全棧全分布式架構(gòu),并應(yīng)用于南方電網(wǎng)網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)。從平臺(tái)的數(shù)據(jù)采集和數(shù)據(jù)處理兩個(gè)模塊對(duì)架構(gòu)設(shè)計(jì)展開(kāi)介紹,使用分布式內(nèi)存計(jì)算技術(shù)和分布式內(nèi)存數(shù)據(jù)庫(kù)技術(shù)提高平臺(tái)對(duì)海量數(shù)據(jù)的處理能力以及存儲(chǔ)能力。平臺(tái)性能測(cè)試和實(shí)際應(yīng)用效果表明,新架構(gòu)下的網(wǎng)級(jí)電能量數(shù)據(jù)平臺(tái)大數(shù)據(jù)采集、處理和存儲(chǔ)能力有著較大的提升,可以穩(wěn)定支撐業(yè)務(wù)應(yīng)用擴(kuò)展,為電網(wǎng)安全運(yùn)行、可靠供電、優(yōu)質(zhì)服務(wù)、信息輔助決策提供完備、及時(shí)、準(zhǔn)確、安全的支持。