錢 奇,閆海峰,唐偉寧,覃華勤,馬先芹
(1. 南瑞集團有限公司(國網電力科學研究院有限公司),江蘇省南京市 211106;2. 北京科東電力控制系統有限責任公司,北京市 100192;3. 國網吉林省電力有限公司電力科學研究院,吉林省長春市 130022)
中國“十四五”規劃建議提出,加快數字化發展,并對建設智慧能源系統、提升新能源消納和存儲能力、加快電力市場改革提出了明確要求[1]。國家電網有限公司2020 年6 月15 日提出建設“客戶側數字新基建”重點任務,將分布式數據中心作為核心基礎平臺,以提升數字化連接感知和計算處理能力,分布式數據中心呈現出大型化、規模化的發展趨勢[2-3]。隨著電力體制改革、能源互聯網建設工作的深入開展[4-5],分布式能源、儲能、電動汽車等新設施的規模化接入[6]以及電力客戶便捷用電和智慧用能需求的快速增長,使得計量專業的業務邊界、業務內容、業務形式發生了新的變化,電力用戶用電信息采集系統(以下簡稱“采集系統”)的定位已逐漸從單一抄表向設備狀態感知、能源雙向互動、負荷柔性調控、數據實時共享等方面延伸。隨著高速電力線載波[7](HPLC)技術在低壓集中采集的推廣應用,采集數據項由電能示值、需量擴增到了電壓、電流、功率因數、功率及事件等,采集頻次從每日凍結1 次數據提升到了每15~60 min 采集1 次甚至每5 min 采集1 次數據,使得采集數據總量達到PB 級別[8],呈現了爆發式增長,對數據的采集質效、信息的存儲分析與指令的快速響應提出了更高要求。
采集系統由主站系統、通信信道、采集終端、智能電表等組成,主站系統是采集系統的關鍵部分,主要實現數據搜集、信息處理融合、在線監控和應用擴展等功能[9-11]。傳統主站系統對集中式架構存在依賴性,系統性能提升主要依靠增加CPU、內存、磁盤等方式,可擴展空間有限,在實時用電數據的采集、存儲、計算方面,暴露出了明顯的性能瓶頸,已無法滿足高頻全量集中采集需求[12-13],亟須優化主站系統架構和功能設計,全面支撐配電網設備全面感知、需求側實時響應、負荷智能調控、用戶友好互動等功能,以滿足服務政府的外需、應對公司企業數字化轉型的內需、引導用戶用能的軟需、解決新興營銷業務缺乏支撐手段的剛需。
針對當前能源互聯網形勢下主站系統面臨的問題,文獻[14]提出了一種基于云計算技術的主站系統,通過在存儲系統、并行處理機制方面應用云計算技術,以增強主站系統在海量數據入庫、查詢、計算方面的處理能力。文獻[15]提出一種應用Apache Kafka 分布式消息隊列與HBase 列式數據庫技術相結合優化主站系統的方法,提升了海量數據的入庫性能及數據查詢效率。文獻[16]采用流式計算、微服務、分布式并行計算等技術改造原有集中式架構,構建了云計算平臺上的分布式架構用電信息采集系統。這些技術方法對于解決當前在運主站系統所面臨的大規模采集數據入庫或計算問題,具有一定優化能力,但因尚未綜合考慮通信、服務器、終端設備、應用擴展等影響因素,難以滿足大規模用戶采集的實際工程應用需求。
本文從實際工程應用角度出發,設計了一套基于分布式技術的高性能、高可用采集主站系統架構,提出了解決海量終端并發的異步網絡通信模型,研究了分布式任務調度算法,進行了分布式存儲體系設計改造,引進了分布式并行計算方法,整體提升了主站系統采集能力、數據存儲能力及分析處理能力。最后,通過工程實例分析驗證了系統的實用性,滿足了新一代采集系統支撐用戶靈活、便捷、高效、實時的用能的需求。
分布式架構被廣泛應用在輸配電領域,作為一種專門針對海量數據場景的有效解決方案[17-19],由部署在不同服務器上實現不同功能的節點組成,各節點之間相互連接、相互協同從而實現整個系統的高效處理,適用于能源互聯網形勢下的新一代采集主站系統建設。本文基于分布式技術構建了高并發、低延時、易擴展、高穩定性的采集主站系統分布式架構,如圖1 所示。

圖1 分布式主站系統架構Fig.1 Architecture of distributed master station system
采集主站系統分布式架構方案在4 個層次完成設計,分別為采集通信層、任務調度層、分布式存儲層及并行計算層。采集通信層通過構建分布式異步網絡通信完成海量終端高并發接入及報文分布式處理,任務調度層通過分布式任務調度實現采集任務的分片執行,分布式存儲層基于混合存儲策略實現數據按類型、時間、用途的綜合存儲,并行計算層通過引入高效計算框架提升采集數據的實時分析能力。
采集通信層整體負責與采集終端及任務調度層的通信,通過通信調度集群、通信前置集群和采集前置集群構建分布式前置采集架構,實現采集任務報文的組裝下發及終端采集信息報文的識別處理。主站系統分布式前置采集架構如圖2 所示。

圖2 分布式前置采集架構Fig.2 Architecture of distributed pre-acquisition
采集終端經過通用分組無線業務(GPRS)、碼分多址(CDMA)、光纖、230 MHz 無線專網等網絡渠道與采集通信層進行交互。為降低數據采集在通信過程的邏輯處理復雜度,基于通信調度構建分布式異步網絡通信模型,實現通信層協同工作,降低采集通信間的耦合性,同時提升通信交互整體效率。基于通信調度的異步網絡通信模型如圖3 所示。

圖3 異步網絡通信模型Fig.3 Asynchronous network communication model
通信調度集群是實現通信層整體異步網絡通信及分布式管理的控制樞紐,負責采集前置機和通信前置機間的通信管理。一方面將通信前置機上送的采集報文異步甄別后按終端及任務類型分布式調度至對應采集前置機處理,另一方面將采集前置機的下行采集報文異步判別后按終端分布式調度至相應通信前置機。終端鏈路經硬件負載均衡器負載均攤于通信前置機集群,通信前置機將終端鏈路信息上報至調度前置機進行統一維護,調度前置機按照通信優先級、終端鏈路信息實現通信報文、響應報文的上下交互控制,在提高系統整體并發性能的同時實現主站系統數據采集與交互能力的提升。
通信前置集群負責維護采集主站系統與終端之間的遠程通信鏈路,實現信道底層的心跳握手、鏈路連接及原始通信報文的收發。針對海量終端高并發鏈接請求量達30 萬以上,且均為長鏈接的需求,基于非阻塞式輸入輸出(NIO)的通信框架,將通信鏈路原有的select 技術升級為使用Linux 內核提供的異步Epoll 多路復用技術,構建終端鏈接層的異步網絡通信機制,基于自平衡二叉樹紅黑樹并結合雙向鏈表,將鏈路維護時間復雜度由O(n)降低為O(1),實現以最小的資源消耗滿足最大并發處理的需求。表1 為并發接入能力提升的測試數據依據。

表1 并發鏈路維護技術的CPU 耗時對比Table 1 CPU time-consuming comparison of concurrent link maintenance technology
經過底層通信改造,系統單臺前置的接入能力從3 萬提升到10 萬,并發通信能力從5 000 提升到3 萬,結合硬件負載均衡模式及通信調度的管理,實現了終端數量的動態擴展,滿足全省終端接入及海量數據高并發通信需求。
采集前置集群負責將采集任務按規約類型組裝成通信報文,調用加密機對其進行加密并按國家電網公司安全應用層(State Grid secure application layer,SSAL)協議進行二次封裝后經調度前置機下發至通信前置機,同時接收通信前置機上送的終端上行報文,識別規約類型并解析后上送至任務調度層。為提升通信資源的最大化利用,采集前置設計了動態組幀策略,主站系統按照終端廠家、協議版本在組幀時自動組裝成不同的下行報文,并計算單終端下行請求最優幀數,其公式為:

式中:F為總幀數;M為終端采集的總電表數;Nd為數據單元個數;Lm為最大響應長度(單位為B);Lp為采集單只電表終端可能回碼長度(單位為B)。如一只1376.1 終端召測100 只電表日凍結正向有功示數,假設配置的數據單元個數是8、最大響應長度為500 B,組幀一只表終端可能回碼的長度為50 B,則總幀數為13 幀。采集前置按照終端型號,配置每種終端單幀報文支持的最大響應長度和數據單元個數。在對某個終端下行請求組幀時,根據終端參數動態組幀,選擇最優幀數。經優化改造,采集前置將更專注于報文處理,整體效率提升近3 倍,同步提升了資源利用率及通信成功率。
任務調度層主要解決既定周期或動態新增采集任務、業務請求任務、數據上報任務等的并行調度執行,同時支撐定時任務配置、任務狀態分析、任務補抄、系統資源監視等功能。采集主站系統(以國網吉林省電力有限公司為例)每日至少執行45 類、約215 個非高頻采集任務,需耗費大量系統資源處理任務編排及任務執行,集中式任務調度受資源及并行效率限制,難以匹配高頻采集任務需求。基于分布式任務調度技術,重點實現對采集前置按終端進行采集任務的分布式分配,由分布式消息隊列配合完成。分布式任務調度邏輯架構如圖4 所示。

圖4 分布式任務調度邏輯架構Fig.4 Logic architecture of distributed task scheduling
為滿足采集系統整體資源調度性能需求,分布式任務調度由自行全新設計的TNRM(由Task、Node、Resource 及Mutual exclusion degree 首字母構成)算法實現,算法綜合考慮任務頻次、終端節點數量、服務器資源間的相互關系,實現最優終端采集任務分配。分布式任務調度算法描述如下:
描述1:令T表示任務集合{t1,t2,…,ti},其中i為任務數。 任務ti按執行周期展開表示為{ti1,ti2,…,tij},其 中tij表 示 第j個 周 期 執 行ti的 子任務。
描述2:令N表示終端集合{n1,n2,…,np},其中p為終端數。
描述3:令服務器資源綜合性能評估指標集合R表示為{r1,r2,…,ro},其中o為分布式服務器節點數,ro指標數據由對第o個服務器節點經性能調優后,通過單一任務經壓力測試機性能測試后的服務器綜合表現得出,取并發處理能力。令Co表示服務器節點o在所有節點中的分布式處理能力占比,表示為如下公式:

式中:htn表示第t個子任務是否處理終端n的采集任務,是則為1,否則為0。
描述5:為了將不同終端任務放置于同一服務器節點執行,且保證互相干擾性最小,引入任務互斥度概念,假設M12表示終端n1與終端n2在同一服務器節點上執行時的綜合互斥度,m表示終端n1與終端n2在執行具體子任務時的互斥度,則進行如下定義。
1)如果有相同任務執行,則完全互斥,m=1。
2)如果無相同任務執行,但執行時間重合,則完全互斥,m=1。
3)如果無相同任務執行,且執行時間不完全重合,則部分互斥,通過式(4)計算互斥度。

式中:At12為終端n1與終端n2在執行子任務時相重疊的時間秒數;Bt12為2 個終端在執行相同子任務時共同需要的時間秒數;0 <m<1。
4)如果無相同任務執行,且執行時間不重合,則完全不互斥,m=0。
由此可得到終端n1與終端n2在同一服務器節點執行所有子任務時的互斥度矩陣為:

由此可得到所有終端在同一服務器節點執行時的互斥度矩陣為:

式中:Mp1為第p個終端與第1 個終端的綜合互斥度,直接置零表示與本身不互斥。
則只要求出終端間互斥度行列相加之和最小的數,且滿足并發執行任務數小于服務器節點處理能力即可求得最佳分配路徑。
描述6:設G為最優分配集合,v為集合中所有終端在同一時間執行時的最大任務并發數,w為集合中所有終端間互斥度行列相加之和,則G應滿足min(w)且v<ro K,其中K為系數,服務器資源調用不能超過此系數,通常取0.8 以下。
經以上綜合步驟,通過將服務器資源、并發任務數、終端并發量、資源占用互斥度的綜合計算,實現了采集任務的分布式分配及服務器資源的最大化利用。本算法同時也與任務調度較常用的蟻群算法及傳統輪詢調度、min-min 類算法進行了特性對比,如表2 所示。

表2 任務調度算法特性對比Table 2 Characteristic comparison of task scheduling algorithms
蟻群算法需進行信息素長期積累訓練[20],傳統算法未充分考慮分布式環境的復雜性[21],本文算法雖在單一任務最優化上存在弱勢,但綜合考慮了復雜任務類型與終端鏈路的最佳匹配,除提升服務器資源利用率外可節省網絡資源消耗,并可實現算法的自優化,以及支撐服務器資源的動態擴增。經工程應用跟蹤驗證,采集任務全部均攤至理想節點,鏈路命中率100%,本文算法適用于高并發終端鏈接下的采集主站系統任務調度。
在任務調度中融入分布式消息隊列Kafka,可對系統中各類采集任務按照緊急程度、重要性進行分類[22],以多消息主題、多優先級任務收發隊列實現任務的分級管理,支撐數據召測、參數下發、控制指令下發、采集數據上送等任務分主題交互,提高采集交互效率的同時,降低任務與通信層的依賴。
分布式存儲層實現采集系統業務數據的綜合存儲。針對采集數據日均增量超80 GB、月均增量超2.5 TB、年均增量超30 TB 的情況,綜合考慮高頻數據采集引起的高并發入庫性能需求、存儲可擴展性需求、對外數據共享需求,通過引入多類型分布式存儲框架,重構由分布式存取服務、分布式內存庫、分布式關系庫、生產查詢數據庫以及分布式大數據庫共同組成的主站系統存儲體系,以支撐海量多用途的數據存儲。分布式存儲架構如圖5 所示。

圖5 分布式存儲邏輯架構Fig.5 Logic architecture of distributed storage
存儲層首先將上送至分布式消息隊列的采集數據(上報任務數據和異常事件)經數據存取服務監聽并反序列化后按類型、頻度分別存儲于分布式內存庫、分布式關系數據庫、生產查詢庫及分布式大數據庫,實現數據的按需分類存儲。
分布式內存庫可緩解數據庫服務器磁盤輸入輸出(IO)存取壓力,提高數據訪問實時性[23],采用Redis Cluster 技術研制實現。設計類關系型庫表結構,將數據庫態號、應用號、表號、域號、記錄號按照規則生成唯一邏輯號,并與內存物理地址映射,數據存取時直接操作指定的內存物理地址。分布式內存庫通過提供標準應用程序接口(API)傳參方式,實現數據的快速存取,部分接口設計如表3 所示。

表3 分布式內存庫接口設計Table 3 Interface design of distributed memory database
分布式內存庫可存儲檔案數據、終端地址碼、采集任務、終端在線信息、任務執行結果、實時計算結果、系統配置參數、高頻更新數據等信息,保證了數據的實時訪問,有效支撐了任務調度層及并行計算層的高效執行。
分布式關系數據庫因存儲節點可線性增加,不存在單點故障,海量數據并行入庫能力強,具備高可用性及高擴展性等優點,用于支撐高頻采集數據存儲,實現在線事務處理應用。分布式關系數據庫采用MySQL 數據庫搭配MyCat 代理中間件構建,支持分片分析、路由分析、讀寫分離分析、緩存分析等數據處理功能[24]。在關系數據的分布式存儲設計上采用了取模分片、范圍分片、時間分片、哈希分片等多種混合分片策略實現,整體原則如下:
1)對于數據量小于等于500 萬條且增量較小的實體,數據統一存儲在同一個數據節點;
2)對于數據量大于500 萬條、拆分后單表數據量小于等于1 000 萬條且增量較大的實體,將實體主鍵值按照數據節點數量取模進行分庫存儲;
3)對于數據量大于500 萬條、拆分后單表數據量大于1 000 萬條且增量較大的實體,在實體主鍵值按照數據節點數量取模進行分庫存儲基礎上,再按照數據采集日期切分策略進行分表存儲,盡量保證水平切分后每個實體數據量小于1 000 萬。
基于以上原則,將采集類數據以測量點ID 為分庫鍵進行水平拆分,將事件類數據以終端ID 號為分庫鍵實現分庫存儲,將數據量少、查詢訪問頻率低和快速響應的業務數據(例如配置類及采集任務等數據)分配到某一節點上,以減少多庫查詢對數據集進行聚合帶來的效率問題。分布式關系庫支撐的數據存儲類型主要包括近期(6 個月至1 年)采集數據、任務數據、事件數據、計算結果數據、系統配置數據以及全量的檔案信息等。經實際工程應用表明,基于以上策略可實現數據的分片存儲及快速查詢,當存儲節點擴容時,按照已有數據節點數量倍數擴展,可實現最小化數據平滑遷移,滿足分鐘級高頻數據的存取需求。
生產查詢庫采用Oracle 數據庫存儲,基于Oracle GoldenGate(OGG)方式完成與營銷檔案系統數據的同步,同時通過保存系統檔案、工單、日凍結數據及統計分析結果數據,支撐主站系統復雜關聯查詢類業務應用功能,以及對同安全區域系統的數據共享。
分布式大數據存儲庫將不具備聯機查詢價值但具備計算挖掘價值的采集原始數據,如采集全量日凍結數據、高頻曲線數據、事件上報數據、計算結果數據、統計分析數據等海量數據,基于Extract-Transform-Load(ETL)、Sqoop、Flume 等工具完成數據同步,采用Hadoop 分布式文件系統(HDFS)、分布式列式數據庫HBase 和廉價硬件環境完成存儲。分布式大數據存儲庫可為并行計算提供大數據支撐,同時為主站系統提供歷史數據存儲備份。
并行計算層[25]基于分布式內存計算技術、分布式流式計算技術及數據挖掘、智能分析等組件構建“分布式大數據并行計算平臺”,實現采集數據的實時處理及歷史挖掘分析,以提升系統監測、用電預測、清潔能源消納、供電安全等方面的智能化程度,滿足分鐘級的低壓全量數據高頻采集需求、海量數據實時并行計算的系統計算能力需求。并行計算架構如圖6 所示。

圖6 并行計算邏輯架構Fig.6 Logic architecture of parallel computing
分布式內存計算基于Spark 技術的彈性分布式數據集(resilient distributed dataset,RDD)、有向無環圖(directed acyclic graph,DAG)特性,實現計量在線監測分析、臺區線損分析、多維指標統計、電量統計分析、臺區負荷分析、防竊電挖掘分析等高級功能的并行計算。以臺區線損分析為例,首先基于HBase 設計以臺區編號、采集批次、測量點號為主的Rowkey,采集數據按Rowkey 規則存入列式數據庫,經內存計算平臺調用后,基于公式[(供電量?售電量)/供電量]×100%完成線損率[26]的并行計算。計算后的結果被推送至消息隊列,應用層通過消息訂閱,將計算結果以WebSocket 方式主動推送至線損可視化看板、線損在線監測等前端。通過對線損波動情況的實時掌握,幫助供電部門制定和實施經濟合理的線損率指標,及時發現電網結構、用電、計量設備性能及運行狀況等方面的薄弱環節,減少人為錯誤和高損發生率,為線損管理提供及時科學的決策支撐。
分布式流計算基于Storm 技術,實現消息流數據的邊采集邊計算,典型的應用有基于事件流的停電故障、停電范圍實時研判。主站系統首先將上報的停電事件流推送至消息隊列,流計算平臺接收到訂閱的消息后,對停電事件的有效性與真實性進行實時甄別,過濾掉無效事件及垃圾數據后,實時完成停電事件的準確性研判及有效性研判,以及停電影響范圍的智能研判,經研判后的停電信息經接口動態推送至供電服務指揮系統及客戶服務系統,支撐主動搶修業務,提升服務響應速度與客戶體驗。
在國網吉林省電力有限公司主站系統建設項目中,開展了基于分布式技術的采集主站系統工程應用。該省電力公司低壓用戶約1 360 萬戶,共計約14 萬臺集中器及16 萬臺專用變壓器終端,整體部署運行在由近100 臺服務器組成的節點、集群環境上。單臺服務器基本配置為CPU 2 個,共16 核,主頻2.1 GHz,內存128 GB。
選取了全量低壓用戶日凍結示值數據采集及變壓器實時組合曲線采集2 個任務,只統計任務第1 次執行結果,觀察一周計算平均性能。基于分布式技術的采集主站系統與集中式采集主站系統在并發接入、數據通信、任務調度、數據入庫、計算各方面的平均性能對比如表4 所示。

表4 2 種用電信息采集主站性能對比Table 4 Performance comparison of two main stations for power consumption information acquisition
2 種不同架構主站系統下,變壓器實時組合曲線采集單個數據項,從采集任務調度、任務下發至完成入庫,以及單臺區線損計算(按服務器并行均攤后),分項平均耗時對比結果如圖7 所示。

圖7 實時組合曲線單個數據項處理平均耗時Fig.7 Average processing time of single data item of real-time composite curve
通過表4、圖7 對比結果可知,本文設計的基于分布式技術的主站系統在海量數據采集、通信、存儲、并行計算方面,相對于集中式主站系統,具有明顯的性能優勢,在提升采集效率與入庫能力的同時,提升了前置并發處理能力及采集成功率。
本文基于分布式技術提出了高性能采集主站系統架構,并在國網吉林省電力有限公司進行了應用驗證。驗證結果表明,基于分布式技術的采集主站系統可以有效地提升主站系統在大規模數據采集、入庫方面的效率及服務能力,為智能電網采集系統下一步技術升級奠定了良好的理論和實踐基礎,對采集系統應用及提高采集系統對多種新需求的適應性具有借鑒意義。