李恩洲,況立群,張 元,韓 燮,熊風光
(中北大學 大數(shù)據(jù)學院,山西 太原 030051)
近年來,國內外針對供熱系統(tǒng)的研究主要集中在供熱設備以及故障檢測方面[1-3],其中在智能故障診斷系統(tǒng)的研究中,對換熱器的診斷已經形成了良好的生態(tài)系統(tǒng)[4]。文獻[5]針對集中供熱系統(tǒng)中多熱源調度優(yōu)化模型進行了參數(shù)的調節(jié),使得整個運行環(huán)境從能耗和污染物排放量方面得到了最優(yōu)解。對于智慧供熱解決方案的研究,主要面向特定區(qū)域、特定的供熱環(huán)境,實現(xiàn)了從熱源、管網(wǎng)、場站,到戶內的數(shù)據(jù)互聯(lián)互通與共享。
而對于跨區(qū)域及城市的供熱管理體系,目前尚未形成統(tǒng)一的標準。對于省市一體化的供熱監(jiān)測還未形成成型的系統(tǒng)。并且隨著地域的擴大,使用單一的數(shù)據(jù)庫服務已經不能滿足供熱設備集群的實時數(shù)據(jù)以及元數(shù)據(jù)的處理,由設備集群產生的高并發(fā)數(shù)據(jù)勢必會使數(shù)據(jù)庫服務器產生性能問題。文中旨在研究一種智慧供熱大數(shù)據(jù)平臺,通過構建kafka+Spark Streaming處理機制解決海量實時數(shù)據(jù)和離線數(shù)據(jù)處理,對于供熱環(huán)境的外部影響因素也可以依據(jù)該平臺進行相關分析。同時,可定制化的將供熱系統(tǒng)的重要參數(shù)布局在可視化頁面中,便于實時查看。另外,對相關參數(shù)實施預警處理,使得通過互聯(lián)網(wǎng)對供熱系統(tǒng)的故障診斷更加方便快捷。
平臺為整個供熱環(huán)境提供了一系列的配套服務,包括整體環(huán)境如天氣、供熱面積、能耗、換熱站數(shù)據(jù)分析、數(shù)據(jù)展示等,這些服務可以為供熱管理人員提供便捷的管理,使各項工作化繁為簡。系統(tǒng)通過對供熱設備中已有的數(shù)據(jù)采集設備與供熱設備相關的配套服務進行數(shù)據(jù)交互,將供熱設備中產生的數(shù)據(jù)進行清洗、分析和計算,一方面將處理結果傳輸至相應的應用,另一方面將數(shù)據(jù)持久化,存儲至數(shù)據(jù)庫中。數(shù)據(jù)以json數(shù)據(jù)形式進行傳遞[6],并將數(shù)據(jù)進行格式化處理,從而解決數(shù)據(jù)可視化中的數(shù)據(jù)統(tǒng)一問題,最后傳入到客戶端。管理人員可以在系統(tǒng)中監(jiān)控和觀察設備,以方便工作人員進行相應的處理,具體業(yè)務框架如圖1所示。
圖1 平臺整體業(yè)務框架
平臺架構以云計算為基礎,云計算通過Internet提供快速創(chuàng)新,彈性資源和規(guī)模經濟,對于云服務,通常按照使用量支付費用,從而幫助降低運維成本,使基礎設施更有效的運行,并能根據(jù)業(yè)務需求的變化調整對服務的使用[7],云計算服務提供了基本的四大類服務:基礎結構即服務(IaaS)、平臺即服務(PaaS)、無服務器計算和軟件即服務(SaaS),具體平臺架構如圖2所示。
圖2 云平臺系統(tǒng)結構
感知層即數(shù)據(jù)采集層,是熱源、熱網(wǎng)、換熱站、末端用戶等供熱環(huán)節(jié)中的各類監(jiān)控系統(tǒng)和管理服務的整合,其中包括PLC控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)、數(shù)據(jù)交互系統(tǒng)、用戶交互系統(tǒng)、地理信息系統(tǒng)、設備監(jiān)控管理系統(tǒng)、視頻監(jiān)控系統(tǒng)等業(yè)務模塊,它將物理、交互、音視頻等各類型信息按照統(tǒng)一標準化對數(shù)據(jù)進行清洗、過濾、轉換,通過傳輸層將數(shù)據(jù)傳輸?shù)街行钠脚_。
基礎設施層(IaaS)是系統(tǒng)業(yè)務的底部支撐載體,內部包括物理資源層、資源虛擬化層和云服務管理層。
(1)物理資源層:指的是計算服務集群,包括熱力能源web服務器、后端服務器、數(shù)據(jù)庫服務器。
(2)資源虛擬化層:是云計算的根本技術支撐,存儲方面則主要使用分布式存儲架構共享存儲集群,用來針對不同的存儲數(shù)據(jù),例如換熱站供溫供壓等參數(shù)數(shù)據(jù)的分類存儲。
(3)云服務管理層:為IaaS架構中最為關鍵的一層,通過云服務管理可以對供熱設備進行開關控制、權限設置、故障恢復等管理。
PaaS提供了應用程序和開發(fā)環(huán)境,將各種業(yè)務能力進行整合,具體可以歸為熱力能源web服務器、二次能源系統(tǒng)開放平臺、熱網(wǎng)運行監(jiān)控系統(tǒng)開放平臺、設備管理系統(tǒng)開放平臺,向下根據(jù)業(yè)務能力需要測算基礎服務能力;通過IaaS提供的API(application programming interface,應用程序接口)調用硬件資源,向上提供業(yè)務調度中心服務,實時監(jiān)控平臺的各種資源,并將這些資源通過API開放給SaaS用戶。
軟件服務層(SaaS)在PaaS層之上,它將智慧供熱系統(tǒng)下的子系統(tǒng),以服務的形式發(fā)布在云平臺之上,便于企業(yè)更好地規(guī)劃系統(tǒng)模塊結構,進行及時調整和快速部署。這些子系統(tǒng)包括熱網(wǎng)監(jiān)控系統(tǒng)、全網(wǎng)平衡分析系統(tǒng)、在線熱網(wǎng)水力分析系統(tǒng)、熱網(wǎng)能耗分析系統(tǒng)與供熱地理信息系統(tǒng)、熱用戶室內測溫、熱計量系統(tǒng)、氣象數(shù)據(jù)分析系統(tǒng)。
文中以山西省供熱體系為例進行熱力能源管理平臺實例分析,針對供熱系統(tǒng)中管理員對整個供熱環(huán)境的態(tài)勢感知和供熱設備實時數(shù)據(jù)和離線數(shù)據(jù)處理困難的問題。并且考慮到管理人員需要進行相關的匯報工作,故選用開源web框架React作為數(shù)據(jù)可視化的實現(xiàn)基礎,以G2數(shù)據(jù)可視化組件進行數(shù)據(jù)的多元化展示,具體方案如下。
通過調研山西省各大熱力公司的數(shù)據(jù)監(jiān)控業(yè)務,總結出軟件主要功能需求如下:
(1)用戶管理:對使用平臺的用戶進行管理和授權。
(2)設備信息提取:對設備產生的相關數(shù)據(jù)進行提取清洗和分析,并將相關結果存儲在數(shù)據(jù)庫中。
(3)設備遠程控制:從不同的維度出發(fā),進行設備的遠程控制,包括開關控制、參數(shù)設置、預警控制。
(4)熱力系統(tǒng)重要參數(shù)的運行數(shù)據(jù)以及信息的可視化。
(5)展示相關換熱站的數(shù)據(jù)信息。
(6)能耗相關數(shù)據(jù)信息。
(7)系統(tǒng)操作日志的記錄。
3.2.1 用戶管理
對每一個供熱地點,系統(tǒng)都會為其分配一個管理員賬戶,管理員賬戶不可刪除,具有最高權限,可以管理其下面的所有賬戶,在管理員賬戶之下可以申請二級賬戶,方便工作人員的管理,同時對供熱設備的故障處理信息進行記錄。對于管理賬戶,可以進行所有設備數(shù)據(jù)操作,并生成日志記錄。管理員賬戶可以新增或者刪除權限較低的賬戶。
3.2.2 數(shù)據(jù)處理模塊
關于供熱設備的數(shù)據(jù)清洗和處理,文中采用kafka+Spark Streaming的方式進行實時數(shù)據(jù)流式處理,對于大量設備的原始數(shù)據(jù)進行高并發(fā)的清洗和轉換,然后將數(shù)據(jù)通過統(tǒng)一結構化模型的api實時顯示在web端,離線數(shù)據(jù)可通過對應的api進入到相關數(shù)據(jù)庫中進行存儲,具體流程如圖3所示。
3.2.3 可視化模塊管理
對于供熱系統(tǒng)中概覽數(shù)據(jù)展示設計為九宮格的形式,主要展示對于供熱系統(tǒng)相關參數(shù)的分析,包括天氣情況、熱源實時數(shù)據(jù)、熱源歷史數(shù)據(jù)、供熱地區(qū)的排行、告警信息、能源消耗占比、室溫實時數(shù)據(jù)以及對總體環(huán)境的數(shù)據(jù)的展示。
(1)天氣的展示主要以折線圖的方式進行,展示從當天起前七天的最高溫和最低溫,具體的天氣的分析會在單獨的頁面進行管理和查看。
(2)熱源數(shù)據(jù)的展示分為實時數(shù)據(jù)和歷史數(shù)據(jù)。實時數(shù)據(jù)主要運用對照的方式進行展示,例如供水溫度與回水溫度的對比。考慮到實時數(shù)據(jù)的特點,將折線圖進行改進,加入了標準線以及實時數(shù)據(jù)的刷新,對于觸及報警線及以上的數(shù)據(jù),進行預警處理;對于熱源歷史數(shù)據(jù)的展示主要是選擇從當天起前七天數(shù)據(jù)作為展示周期,對比數(shù)據(jù)分析從而了解供熱設備系統(tǒng)的運行狀況,進行針對性的調整。
(3)數(shù)據(jù)榜單的設計主要以供熱系統(tǒng)所管理的區(qū)域進行,按照換熱站的供熱情況,取較好和較差的供熱表現(xiàn)的換熱站進行數(shù)據(jù)展示,在獲取數(shù)據(jù)的過程中進行排序以及數(shù)據(jù)處理。
(4)告警信息和室溫實時數(shù)據(jù)的處理以列表的方式進行滾動輪播,考慮到供熱系統(tǒng)管理區(qū)域的小區(qū)數(shù)量以及實時更新的特點,相比柱狀圖、餅圖、雷達圖等圖形化展示方式更有利于工作人員進行觀看,可以展示各個區(qū)域的供熱情況,減少了工作人員的操作,提高了便捷性。
(5)系統(tǒng)在板塊劃分中加入了總體實時數(shù)據(jù)的一個展示,展示的內容主要包括熱源數(shù)量、換熱站數(shù)量、天氣信息、供熱面積以及所有能耗的總數(shù)和設備負荷的相關數(shù)據(jù),便于工作人員判斷設備的運轉情況。
圖3 平臺數(shù)據(jù)流圖
3.2.4 供熱設備數(shù)據(jù)管理
對于換熱站數(shù)據(jù)的管理包括報表數(shù)據(jù)、操作日志數(shù)據(jù),對于報表主要展示的數(shù)據(jù)為換熱站的基礎數(shù)據(jù),操作日志主要展示的數(shù)據(jù)為某一管理人員對換熱站的相關操作并且記錄了改動前后的變化。
3.2.5 能耗管理
能耗管理模塊中有三個功能:綜合報表、環(huán)比報表和能耗排行。綜合報表主要顯示的是所有換熱站在某一時間段的熱、電、水耗的相關數(shù)據(jù),用戶可以查詢任意時間段內的數(shù)據(jù);環(huán)比報表在顯示能耗的相關數(shù)據(jù)的基礎上加入了時間段的比對,可以比對任意兩個時間段的換熱站的能耗數(shù)據(jù),用于更好地管理供熱系統(tǒng)。同時兩個報表提供了下載和打印功能,可以直接將查詢的數(shù)據(jù)轉換為excel表格。此外,該模塊提供在線打印功能。
3.3.1 基于React的前端技術
在Web開發(fā)中,需要將變化的數(shù)據(jù)實時反映到UI(user interface)上,這時就需要對DOM(document object model)進行操作,而復雜且頻繁的DOM操作通常是性能瓶頸產生的原因。因此,文中采用的React框架中引入了虛擬DOM(virtual DOM)的機制:在瀏覽器端用Javascript實現(xiàn)了一套DOM API[8]?;赗eact進行開發(fā)時,所有的DOM構造都是通過虛擬DOM進行,每當數(shù)據(jù)發(fā)生變化時,React都會重新構建整個DOM樹,然后將當前DOM樹和上一次的DOM樹進行對比,得到兩者的不同,然后將需要變化的部分做瀏覽器DOM更新。
同時,為了使得前后端有效地進行交互,引入Node.js,一個事件驅動I/O服務端JavaScript環(huán)境,基于Google的V8引擎,該框架善于處理高并發(fā)需求、單線程、擁有事件機制以及跨平臺的特性,使得它在數(shù)據(jù)通信頻繁的實時業(yè)務場景下產生了較大的優(yōu)勢[9]。Node.js的最重要的功能是事件驅動的,這意味著服務器僅在用戶有事件時才響應。以Node.js充當瀏覽器的服務器,將數(shù)據(jù)轉發(fā)到后端服務器,并通過路由的方式控制頁面跳轉的邏輯。
而antdesignpro這套企業(yè)級中后臺前端開發(fā)框架應用了React框架的相關技術并且在antdesign的設計規(guī)范和基礎組件的基礎上進行進一步封裝[10]。antdesignpro結合dva框架,通過reducers、effect和subscriptions組織model;基于babel-plugin-dva-hmr實現(xiàn)components、routes和models的HMR(hot module replacement),既滿足了MVC(model-view-controller)中的‘V’即視圖部分[11],同時又滿足了前后端數(shù)據(jù)交互的部分,具體原理如圖4所示。
圖4 React架構原理
平臺將基于React的前端框架進行研發(fā),優(yōu)化內容主要有可視化組件封裝、主題切換預留接口、table標簽二次封裝。
對于可視化組件的封裝,以bizcharts為主,將bizcharts圖形的基本類型:折線圖、柱狀圖、餅圖、條形圖封裝成組件,通過引用相應的組件即可進行個性化的定制,并且提供了圖形基本類型的樣式,供研究人員參考。
對于主題切換,根據(jù)不同熱力公司地區(qū)和行業(yè)特點開發(fā)了科技藍和莊重灰等多種主題風格供熱力能源服務商進行選擇。此外,該模塊提供統(tǒng)一接口,使得服務商可針對不同地區(qū),不同環(huán)境進行定制化設計,以此增加平臺的可復用性。
對于報表的展示,除了對于數(shù)據(jù)的顯示,還封裝了數(shù)據(jù)過濾、排序、文本類型、表格風格等功能,使得平臺可以根據(jù)熱力站的需求調用相應API進行相應的設置,從而更好地進行數(shù)據(jù)展示。
3.3.2 大數(shù)據(jù)實時可視化展現(xiàn)技術
對于供熱系統(tǒng)中重要參數(shù)的實時大數(shù)據(jù)在可視化頁面中的展示,文中基于G2的React封裝圖表組件庫[12]BizCharts來實現(xiàn)。通過BizCharts中提供的API:Guide屬性來繪制圖表的輔助元素,達到圖表定制化設計,同時研發(fā)dataSet獨立數(shù)據(jù)模塊,為數(shù)據(jù)可視化場景提供狀態(tài)驅動。文中研發(fā)的大數(shù)據(jù)可視化展示技術,首先將數(shù)據(jù)分批請求,通過限定請求時間范圍的大小,將其分成若干份Request,其次循環(huán)異步批次處理,后端將請求的數(shù)據(jù)以數(shù)據(jù)流形式發(fā)送,將得到的數(shù)據(jù)存儲為csv文件,文件命名方式通過請求參數(shù)命名,最后在視圖驅動程序中加載csv文件即可,同時,在請求前需進行csv文件掃描,查找是否存在查詢的記錄,如果存在,則直接加載文件,避免了多次請求服務器引起的帶寬和并發(fā)。
3.3.3 駕駛艙自由布局
平臺支持自定義概覽主頁面,即駕駛艙,通過該功能,用戶可以在面板上自由的拖拽,修改頁面中的組件,從而呈現(xiàn)出個性化的監(jiān)控頁面。React-Grid-Layout是基于React的網(wǎng)格布局系統(tǒng),支持響應式,在組件改變大小的時候,內部的圖形和內容會隨著組件的改變而進行響應式變化,并且支持斷點,斷點布局可由用戶提供或自動生成,而且不需要jQuery支撐,其中有幾個重要的函數(shù)用于布局中:
(1)WidthProvider:一個用于響應元素高度的高級函數(shù),主要作用是綁定onresize事件,當組件改變時,用于重新計算元素的寬度。
(2)GirdItem:根據(jù)x、y坐標計算出組件所在的位置。
具體流程如圖5所示。
圖5 駕駛艙自定義實現(xiàn)流程
3.3.4 數(shù)據(jù)處理技術
從研究和商業(yè)水平的角度看,云一直是信息技術領域最熱門的討論主題之一。但是,對于云存儲而言,沒有主流的統(tǒng)一存儲解決方案[13],使得云端存儲大量冗余數(shù)據(jù),影響其性能。故采用kafka+Spark Streaming的設計方案,對供熱設備元數(shù)據(jù)進行清洗和處理[14],使得大量的數(shù)據(jù)無須存儲在云端,僅需要把消息隊列中的數(shù)據(jù)進行分布式存儲,減小了對云存儲的壓力。
kafka是一個高吞吐的分布式消息隊列系統(tǒng),特點是生產者消費者模式,先進先出(FIFO)保證順序和數(shù)據(jù)不丟失,默認每隔7天清理數(shù)據(jù)。
其中主要分為兩部分:producer為消息生產者,Consumer為消息消費者,在系統(tǒng)中,將Spark Streaming作為Consumer。Broker為kafka集群的服務程序,負責處理消息讀寫請求和存儲消息。在kafka cluster這一層里,有多個Broker。元數(shù)據(jù)信息存在zookeeper中,包括存儲消費偏移量、topic話題信息、partition信息。
Spark Streaming支持從多種數(shù)據(jù)源獲取數(shù)據(jù),其中一個核心為支持一個高層的抽象,稱為離散流(Discretized Stream)也稱作DStream,代表連續(xù)的數(shù)據(jù)流。在內部,DStream是由一系列RDD組成的。一批數(shù)據(jù)在Spark內核中對應一個RDD實例,因此,對應流數(shù)據(jù)的DStream可以看成是一組RDD,即一個RDD的序列。也就是說,在流數(shù)據(jù)分成一批一批后,生成一個先進先出的隊列,Spark Engine從該隊列中依次取出批數(shù)據(jù),并把批數(shù)據(jù)封裝成一個RDD,然后再進行處理,最后將結果進入統(tǒng)一services接口,將數(shù)據(jù)格式化后進行實時顯示,或者將數(shù)據(jù)進行存儲。確保數(shù)據(jù)的有效性和實時性。
3.3.5 SpringBoot
Spring開源框架是基于J2EE框架的研發(fā)產品。其中Spring MVC框架(MVC是模型視圖控制器,通過將業(yè)務邏輯,數(shù)據(jù)和界面顯示分離的方法來組織代碼)被廣泛用于各種Web產品的研發(fā)中。SpringBoot項目是Pivotal團隊開發(fā)的新Spring框架。其開發(fā)的目的是解決Spring開發(fā)過程中的復雜配置操作并最終實現(xiàn)零配置。其簡化的應用程序開發(fā)和構建過程使開發(fā)人員擺脫了繁瑣的配置文件,并投入了大量精力進行項目邏輯研究和開發(fā)。它致力于成為快速應用程序開發(fā)的領導者[15],同時,其內嵌的Tomcat服務器,直接將項目打包成jar包,從而簡化了項目的部署工作。
系統(tǒng)的具體效果如圖6所示。
圖6 加時間進度條的可視化數(shù)據(jù)顯示
考慮到供熱系統(tǒng)的時間維度問題,故在平臺中設計了歷史數(shù)據(jù)曲線可視化模型,具體效果如圖7所示,其中頂部進行換熱站以及時間段的選擇。為了避免時間跨度較大導致的卡頓現(xiàn)象,設計了時間間隔,以應對大數(shù)據(jù)量導致的數(shù)據(jù)傳輸問題。可視化組件以折線圖為基礎模型,在模型之上設計了時間進度條,通過拖拽進度條可以顯示該時間段內的任意段時間的數(shù)據(jù),平臺展示出整體供熱系統(tǒng)的歷史溫度、歷史熱量流量、歷史壓力、歷史設備狀態(tài),使得管理者可以更加直觀地進行系統(tǒng)的分析與診斷。
平臺提供了不同維度的設備監(jiān)控,并且通過點擊設備的組件,實現(xiàn)遠程控制設備,具體設計如圖7所示。
圖7 加時間進度條的可視化數(shù)據(jù)顯示
經測試,系統(tǒng)無異常,并且對于頁面的顯示和用戶交互方面與系統(tǒng)需求一致。
供熱平臺對供熱系統(tǒng)工業(yè)自動化、信息化、智慧化發(fā)展,起到了一定的推動作用,整合現(xiàn)有資源打造智慧供熱是供熱產業(yè)發(fā)展的未來方向。文中基于React框架,實現(xiàn)了供熱環(huán)境的數(shù)據(jù)處理、展示以及監(jiān)測供熱過程,并且針對供熱系統(tǒng)的特殊性,研發(fā)出定制化的可視化組件,最后,將平臺應用于山西省的供熱系統(tǒng)中,驗證了平臺的可用性。