建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0_第1頁
建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0_第2頁
建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0_第3頁
建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0_第4頁
建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0_第5頁
已閱讀5頁,還剩96頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

建筑能源與設(shè)備運維eWay2.2.1設(shè)計說明書V1.0第5頁/總NUMPAGES209頁建筑能源與設(shè)備運維平臺eWay2.2.1設(shè)計說明書V1.0目錄263201引言 830921.1編寫目的 892691.2項目背景 8170191.3定義 8308111.4參考資料 1057771.5遺留/關(guān)閉問題 11306722任務(wù)概述 12317102.1總體目標 12219592.2云計算模式 12120302.3研發(fā)目標 14253292.3.1總體目標 14273902.3.2迭代目標 15325362.4運行環(huán)境 16138802.4.1軟硬件環(huán)境 1635802.4.2網(wǎng)絡(luò)環(huán)境 17186812.5需求概述 17256252.6條件與限制 17137283總體設(shè)計 187093.1總體結(jié)構(gòu) 1858523.2部署方案 19260994業(yè)務(wù)流程設(shè)計(usercase與產(chǎn)品經(jīng)理的userstory對應(yīng)) 2173694.1(示例)前置上送數(shù)據(jù)到NTS-9000的業(yè)務(wù)流程 21310754.1.1(示例)前置到mmi_jk到TSServerU.exe的數(shù)據(jù)流程 23225184.1.2(示例)前置到mmi_jk到TSServerU.exe的模塊間流程 26229395接口設(shè)計 29204635.1外部接口 29149885.1.1數(shù)據(jù)服務(wù)接口 29137885.1.2告警事件接收接口 35262785.2用戶交互界面 37121685.2.1能耗監(jiān)測子系統(tǒng)網(wǎng)站地圖 37145425.2.2租戶管理子系統(tǒng)網(wǎng)站地圖 39205235.3內(nèi)部接口 3950475.3.1報表報告生成 396665.3.2消息推送 40179305.3.3Olap接口 44155296模塊設(shè)計 4682886.1應(yīng)用交互部分 46235846.1.1配置管理 4664376.2后臺服務(wù)部分(杜冠軍) 53252146.2.1預(yù)存能耗數(shù)據(jù)(王濤) 53209046.2.2KPI數(shù)據(jù)計算(王濤) 55320546.3數(shù)據(jù)服務(wù)平臺 61162206.3.1SQL服務(wù)引擎(張頂飛,變更通知) 61232156.3.2實時數(shù)據(jù)服務(wù) 6848237數(shù)據(jù)結(jié)構(gòu)設(shè)計 80321727.1公共常量定義 80118267.2告警事件定義 8022397.3平臺數(shù)據(jù)庫設(shè)計 82141247.3.1物理結(jié)構(gòu)設(shè)計 82108347.3.2邏輯結(jié)構(gòu)設(shè)計 82275307.4租戶數(shù)據(jù)庫設(shè)計 84220387.4.1物理結(jié)構(gòu)設(shè)計 84208097.4.2邏輯結(jié)構(gòu)設(shè)計 85270418(示例)性能設(shè)計 90235659錯誤處理設(shè)計 9412639.1系統(tǒng)級故障與錯誤 94247129.1.1服務(wù)器軟硬件故障 9417779.1.2數(shù)據(jù)訪問和存儲能力 94297669.2容錯處理對策 9597379.2.1數(shù)據(jù)庫分庫和分表 9544009.2.2數(shù)據(jù)庫分區(qū) 95177509.2.3數(shù)據(jù)庫主從復(fù)制 9690229.2.4服務(wù)器高可用性HA集群 972006610安全保密設(shè)計 993185610.1應(yīng)用系統(tǒng)安全性設(shè)計 99438910.2數(shù)據(jù)存儲安全性設(shè)計 99431911維護設(shè)計 100288811.1Web文本元素的可配置 100126111.2軟件運行調(diào)試日志 10146711.3數(shù)據(jù)庫備份 101827211.4配置信息校驗與自動化 1021976611.5自動網(wǎng)絡(luò)校時 1022214312附件 1032847212.1附件1:建筑類型模板 1032201812.2附件2:能耗標桿庫 103152812.3附件3:報表報告模板 103909812.4附件4:主要種類能源折算成標準煤的理論折算值 1032947812.5附件5:本項目采用的開源軟件列表 104引言編寫目的本文檔是在建筑能源與設(shè)備運維平臺eWay2.2需求規(guī)格說明書的基礎(chǔ)上,進行詳細需求分解和技術(shù)應(yīng)對后得出的概要設(shè)計說明書,旨在明確目標系統(tǒng)的總體結(jié)構(gòu)、接口形式、數(shù)據(jù)模型,以及重要業(yè)務(wù)流程和對象的設(shè)計,并明確需求用例的各個功能點在架構(gòu)中的體現(xiàn),為后續(xù)的詳細設(shè)計、編碼實現(xiàn)以及產(chǎn)品測試等工作提供指導(dǎo)性規(guī)范。本文檔預(yù)期讀者包括:(1)技術(shù)營銷人員、行業(yè)線解決方案設(shè)計人員、產(chǎn)品經(jīng)理等需求側(cè)的相關(guān)人員,用于明確和追蹤軟件產(chǎn)品需求的實現(xiàn)程度,驗證需求實現(xiàn)中的正確性和完整性。(2)項目經(jīng)理、系統(tǒng)工程師、研發(fā)工程師等研發(fā)側(cè)的相關(guān)人員,用于理解軟件系統(tǒng)組成、模塊接口、數(shù)據(jù)模型以及整體技術(shù)要求,為后續(xù)詳細設(shè)計和系統(tǒng)開發(fā)提供基礎(chǔ)和依據(jù);(3)測試工程師和品質(zhì)管理人員,用于理解軟件系統(tǒng)邊界、組成和模塊關(guān)系,確定測試方案和測試計劃,進行軟件質(zhì)量管理。項目背景擬開發(fā)系統(tǒng)名稱:本文檔規(guī)范的軟件系統(tǒng)是建筑能源與設(shè)備運維平臺eWayV2.2.1,本項目簡稱eWay2.2.1系統(tǒng)本項目以eWay2.2開發(fā)完成應(yīng)用服務(wù)平臺為基礎(chǔ),以大型建筑的能耗監(jiān)測為應(yīng)用背景開發(fā)實現(xiàn)一個基于Web的能耗監(jiān)測應(yīng)用平臺,能夠同時滿足部委級能耗監(jiān)測數(shù)據(jù)中心和開放式的能耗監(jiān)測SaaS平臺兩種產(chǎn)品形態(tài)的主要需求。定義參考資料1、本項目的經(jīng)核準的計劃任務(wù)書或合同、上級機關(guān)的批文;(1)《2.0智能建筑機電運維產(chǎn)品開發(fā)任務(wù)書201412311》(2)《2.0規(guī)劃系統(tǒng)需求清單20150104迭代版本建議》(2)《建筑能源與設(shè)備運維平臺eWay2.2需求規(guī)格說明書》2、屬于本項目的其他已發(fā)表的文件暫無。3、其他參考的文件、資料和標準(相關(guān)設(shè)備建模參考和引用)(1)JGJ/T154-2007民用建筑能耗數(shù)據(jù)采集標準(2)JG/T358-2012建筑能耗數(shù)據(jù)分類及表示方法(3)國家機關(guān)辦公建筑和大型公共建筑能耗監(jiān)測系統(tǒng)分項能耗數(shù)據(jù)采集技術(shù)導(dǎo)則(4)國家機關(guān)辦公建筑和大型公共建筑能耗監(jiān)測系統(tǒng)分項能耗數(shù)據(jù)傳輸技術(shù)導(dǎo)則(5)國家機關(guān)辦公建筑和大型公共建筑能耗監(jiān)測系統(tǒng)樓宇分項計量設(shè)計安裝技術(shù)導(dǎo)則(6)國家機關(guān)辦公建筑和大型公共建筑能耗監(jiān)測系統(tǒng)數(shù)據(jù)中心建設(shè)與維護技術(shù)導(dǎo)則(7)國家機關(guān)辦公建筑和大型公共建筑能耗監(jiān)測系統(tǒng)建設(shè)、驗收與運行管理規(guī)范(8)IEC61970能量管理系統(tǒng)應(yīng)用程序接口(EMS-API)(9)GB/TXXXXX-XXXX公共機構(gòu)節(jié)能優(yōu)化控制接口通訊技術(shù)要求(征求意見稿)遺留/關(guān)閉問題遺留問題1當電表的系數(shù)修改時,NTS-9000TSServerU.exe、TSCountServer.exe等程序,必須要重新啟動才可以,暫時無法做到熱加載。后續(xù)如何處理可兼容計費、能耗業(yè)務(wù)?2由于NTS-9000里模擬量、脈沖量、開關(guān)量的索引號是通過前置機的廠站號計算出來的,這樣可以保證從前置多次導(dǎo)入后臺時索引號不變,但當前置機的數(shù)量大于100個時,會超出模擬量、脈沖量、開關(guān)量的最大表示范圍(int4字節(jié)的范圍),此問題未做處理。3能耗統(tǒng)計程序,對于經(jīng)常出現(xiàn)的電表讀數(shù)出現(xiàn)曲線形走法、系數(shù)修改、本次值比上次值小等異常情況,暫無完美的解決方案能夠全部處理到。4NTS-9000不支持并發(fā)遙控與充值。關(guān)閉問題1問題:后臺下發(fā)遙控命令后,無法知曉遙控是否成功。解決方案:后臺下發(fā)遙控命令后,由前置返回執(zhí)行結(jié)果,如果執(zhí)行成功,證明遙控成功。此方案已在后臺mmi_jk.dll規(guī)約及前置mmi_jk.dll規(guī)約中修改完成。2問題:當數(shù)據(jù)庫性能較低且數(shù)據(jù)庫內(nèi)存被限制時,會出現(xiàn)能耗無法入庫的現(xiàn)象,導(dǎo)致頁面上無數(shù)據(jù)產(chǎn)生。解決方案:(1)調(diào)整能耗統(tǒng)計程序從數(shù)據(jù)庫中查詢表頭值的方案,由原來多次查詢多張表,修改為一次查詢表中某個時間點的的所有記錄,在程序內(nèi)存中進行篩選;(2)修改TSServerU.exe定時保存的功能,使其時間點與能耗統(tǒng)計的4分鐘整點錯開,防止同一時間入庫語句太多,數(shù)據(jù)庫性能下降太快,無法滿足入庫要求;(3)調(diào)整TSServerU.exe中定時保存功能的SQL語句的數(shù)量,降低SQL語句的顆粒度。3問題:當TSServerU.exe把SQL語句投遞給數(shù)據(jù)庫執(zhí)行時,未判斷錯誤類型的時候,會出現(xiàn)部分SQL語句有語法錯誤,但仍在不斷的執(zhí)行,占用數(shù)據(jù)庫的連接與性能。解決方案:(1)對常見的SQL語句錯誤進行分類,對于有語法錯誤的SQL語句進行過濾,不再執(zhí)行。常見分類包括:執(zhí)行超時、語法錯誤、數(shù)據(jù)庫連接中斷、數(shù)據(jù)類型超出范圍、字符串被截斷、違反完整性約束等;(2)對執(zhí)行超時、數(shù)據(jù)庫連接中斷的語句,放到data_sql目錄下繼續(xù)執(zhí)行。任務(wù)概述總體目標自動化控制系統(tǒng)有限公司以“世界領(lǐng)先的能源管理和智能控制解決方案和產(chǎn)品供應(yīng)商”為核心戰(zhàn)略目標,致力于滿足平臺商業(yè)地產(chǎn)、機場軌道、醫(yī)療衛(wèi)生和智慧小區(qū)等目標客戶在構(gòu)建綠色智能建筑方面的應(yīng)用需求,提供節(jié)能管理、用能安全、設(shè)備運維以及能源運營托管等服務(wù)。2014年,公司根據(jù)在進行技術(shù)趨勢和市場定位調(diào)研的基礎(chǔ)上,進一步確定了以“平臺戰(zhàn)略”為導(dǎo)向的商業(yè)模式:運用物聯(lián)網(wǎng)(InternetofiThing,IoT)、云計算技術(shù),依靠能源與機電設(shè)備管理兩大核心體系為支撐,以強弱電一體化監(jiān)控和大數(shù)據(jù)挖掘分析為基礎(chǔ),以運維為核心理念,構(gòu)建新一代數(shù)字機電智慧運維平臺系統(tǒng)。通過平臺系統(tǒng)實現(xiàn)管理本地化和服務(wù)云端化,將分散的設(shè)備數(shù)據(jù)轉(zhuǎn)換為系統(tǒng)的管理數(shù)據(jù),變被動式運維為主動式運維,結(jié)合客戶的業(yè)務(wù)特征,在云端策略及經(jīng)驗庫的指導(dǎo)下,實現(xiàn)對建筑機電設(shè)備的統(tǒng)一管理和優(yōu)化控制,打造智慧、低碳的“建筑生命體”并且運用平臺戰(zhàn)略在建筑物或建筑群全生命周期過程中持續(xù)為業(yè)主提供增值服務(wù)。在“平臺”戰(zhàn)略商業(yè)模式下,對下一代技術(shù)產(chǎn)品的研發(fā)需求,將不再是以單一的產(chǎn)品或系統(tǒng)為中心,而是力圖通過技術(shù)手段有效拉通從“能源和機電設(shè)備”到人之間的交互渠道,消除或降低其間的技術(shù)和操作壁壘,為“智慧、低碳、綠色建筑”涉及到的擁有者、管理者、使用者和產(chǎn)品提供者等多方提供一個互操作平臺,對技術(shù)產(chǎn)品提供者而言,這是一個開放、透明的可直接面向終端用戶的業(yè)務(wù)拓展平臺,而對于終端用戶而言,這是一個便捷、安全和個性化的業(yè)務(wù)監(jiān)管平臺。云計算模式為了更好地服務(wù)于公司市場和盈利快速發(fā)展擴張的需求,這要求eWay2系統(tǒng)軟件產(chǎn)品需要采用不同于傳統(tǒng)軟件產(chǎn)品的服務(wù)模式。由REF_Ref414573906\h圖1所示長尾模型可以看出,整體市場由大型客戶和標桿客戶、普通客戶和海量的中小型客戶組成。其中大型客戶和標桿客戶是高價值客戶,但是數(shù)量稀少,如公司已有項目中的上海中心大廈、萬達集團等,而中小型客戶市場單個客戶價值較低,但是總量巨大,如樓宇存量市場中的一些獨立單體建筑,包括中小型商場、商住樓、寫字樓、市場等等。為了實現(xiàn)公司戰(zhàn)略目標,eWay2軟件產(chǎn)品一方面要滿足的超大型客戶和標桿客戶的應(yīng)用需求和定制化需求,以保證足夠的市場影響力和前期利潤空間,同時還要積極拓展海量的中小型客戶市場。在超大型客戶和標桿客戶市場,通常采用軟件定制和客戶自建軟硬件系統(tǒng)(On-Prem)的方式實現(xiàn)。而在海量的中小型客戶市場,為了保證可控較低的單客戶部署成本,通常的做法是采用云計算技術(shù)。圖SEQ圖\*ARABIC1軟件服務(wù)的長尾模型根據(jù)美國國家標準技術(shù)研究院(NationalInstituteofStandardandTechnology,NIST)的權(quán)威定義,云計算包括SPI三大服務(wù)模式,即SaaS、PaaS和IaaS。圖SEQ圖\*ARABIC2NISTSPI模型SaaS(SoftwareasaService):提供給客戶的服務(wù)是運營商運行在云計算基礎(chǔ)設(shè)施上的應(yīng)用程序,用戶可以在各種設(shè)備上通過瘦客戶端界面訪問,如瀏覽器。消費者不需要管理或控制任何云計算基礎(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等等;PaaS(Platform-as-a-Service):提供給消費者的服務(wù)是把客戶采用提供的開發(fā)語言和工具(例如Java,python,.Net等)開發(fā)的或收購的應(yīng)用程序部署到供應(yīng)商的云計算基礎(chǔ)設(shè)施上去??蛻舨恍枰芾砘蚩刂频讓拥脑苹A(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等,但客戶能控制部署的應(yīng)用程序,也可能控制運行應(yīng)用程序的托管環(huán)境配置;IaaS(InfrastructureasaService):提供給消費者的服務(wù)是對所有設(shè)施的利用,包括處理、存儲、網(wǎng)絡(luò)和其它基本的計算資源,用戶能夠部署和運行任意軟件,包括操作系統(tǒng)和應(yīng)用程序。消費者不管理或控制任何云計算基礎(chǔ)設(shè)施,但能控制操作系統(tǒng)的選擇、存儲空間、部署的應(yīng)用,也有可能獲得有限制的網(wǎng)絡(luò)組件(例如,防火墻,負載均衡器等)的控制。其中PaaS和IaaS源于SaaS理念。PaaS和IaaS可以直接通過SOA/WebServices向平臺用戶提供服務(wù),也可以作為SaaS模式的支撐平臺間接向最終用戶服務(wù)。根據(jù)eWay2的功能需求和客戶定位,面向中小型客戶市場時,eWay2所需求的云計算屬于SaaS模式,即供給客戶的服務(wù)是運行在云計算基礎(chǔ)設(shè)施上的能源管理和設(shè)備運維的數(shù)據(jù)處理和業(yè)務(wù)應(yīng)用,用戶可以在各種設(shè)備上通過瘦客戶端界面訪問??蛻舴讲恍枰芾砘蚩刂迫魏卧朴嬎慊A(chǔ)設(shè)施,包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲等等。研發(fā)目標總體目標eWay2項目總體研制的功能模型如REF_Ref426471886\h圖3所示。系統(tǒng)向下遵循國家標準、行業(yè)標準和企業(yè)內(nèi)部標準規(guī)定,接入計量儀表、環(huán)境傳感、暖通空調(diào)、智能照明和樓宇自控等多種類型的底層設(shè)備,并通過這些底層設(shè)備實現(xiàn)對物理世界的感知和控制操作;對于大型客戶和標桿客戶,客戶需要自行建設(shè)硬件基礎(chǔ)設(shè)施并安裝部署eWay2企業(yè)級系統(tǒng),接入數(shù)據(jù)進行處理,并提供能源管理和設(shè)備運維應(yīng)用服務(wù);對于中小型客戶,eWay2前端采集和控制通過數(shù)據(jù)傳輸模塊直接進入云端的數(shù)據(jù)處理和應(yīng)用服務(wù),云端以SaaS方式提供能源管理和設(shè)備運維應(yīng)用服務(wù),客戶一次投資較少而且主要以服務(wù)租用方式使用eWay2的軟件服務(wù)。同時,企業(yè)級和云端級的數(shù)據(jù)服務(wù)部分提供開放接口,可供第三方應(yīng)用開發(fā)者調(diào)用和研發(fā)新型應(yīng)用,并納入eWay2能源管理和設(shè)備運維生態(tài)圈。圖SEQ圖\*ARABIC3eWay2總體功能模型迭代目標eWay2系統(tǒng)研發(fā)按照多輪迭代進行研發(fā)規(guī)劃,本文檔僅規(guī)定第4輪迭代(eWay2.2.1)的目標任務(wù),其功能需求和功能邊界如REF_Ref426471903\h圖4中綠色框所示。eWay2.2.1在eWay2.2研發(fā)的應(yīng)用服務(wù)內(nèi)核(ApplicationServiceKernel)的基礎(chǔ)上,結(jié)合能源管理的業(yè)務(wù)需求功能,進行進一步的功能開發(fā)和優(yōu)化,主要完成四個部分的工作:(1)面向SaaS多租戶的建筑能耗監(jiān)測應(yīng)用架構(gòu);(2)面向SaaS多租戶的建筑能耗實時監(jiān)測與報警;(3)面向SaaS多租戶的建筑能耗數(shù)據(jù)分析、統(tǒng)計與報表;(4)其他與多租戶建筑能耗監(jiān)測應(yīng)用相關(guān)的分析展現(xiàn)功能。此外,eWay2.2.1還需要衛(wèi)計委的定制化需求,作為天溯向衛(wèi)計委交付的功能主體。圖SEQ圖\*ARABIC4eWay2.2功能模型運行環(huán)境本系統(tǒng)測試運行的目標硬件環(huán)境參見下面小節(jié)規(guī)定。軟硬件環(huán)境表SEQ表\*ARABIC1系統(tǒng)軟硬件環(huán)境安裝MicrosoftOffice辦公軟件工具集合,安裝AdobePDF軟件。網(wǎng)絡(luò)環(huán)境圖SEQ圖\*ARABIC5eWay2.2測試運行網(wǎng)絡(luò)環(huán)境需求概述參見《建筑能源與設(shè)備運維平臺eWay2.2.1需求規(guī)格說明書》。條件與限制本文檔僅針對eWay系統(tǒng)的第4輪迭代,本文檔中的“本系統(tǒng)”一詞通指eWay2.2.1系統(tǒng)。第3輪迭代開發(fā)時間要求為2016.01-2016.04,即在2016年04月30日前完成規(guī)定任務(wù)的設(shè)計、研發(fā)和測試工作??傮w設(shè)計總體結(jié)構(gòu)本輪迭代開發(fā)包含兩部分:一是能耗監(jiān)測的應(yīng)用平臺的設(shè)計開發(fā),這部分是本輪迭代的主體部分,響應(yīng)能本輪迭代需求規(guī)格書的規(guī)定,開發(fā)完成多租戶的能耗監(jiān)測平臺,同時也作為典型的數(shù)據(jù)應(yīng)用方式,驗證數(shù)據(jù)服務(wù)平臺的可用性;二是服務(wù)于能耗監(jiān)測應(yīng)用的數(shù)據(jù)服務(wù)平臺的完善和優(yōu)化,這部分功能在前一輪迭代中已經(jīng)完成,但是本輪迭代需要配合能耗監(jiān)測應(yīng)用的需求進行功能完善和性能優(yōu)化,并進一步總結(jié)形成通用的數(shù)據(jù)服務(wù)平臺架構(gòu)和接口方式。能耗監(jiān)測應(yīng)用平臺的總體結(jié)構(gòu)見REF_Ref426447235\h圖6,由2個子系統(tǒng),共計5個功能部分組成。2個子系統(tǒng)是指能耗監(jiān)測子系統(tǒng)和租戶管理子系統(tǒng),二者是獨立部署的Web系統(tǒng),前者面向租戶提供能耗采集、監(jiān)測、分析、告警等業(yè)務(wù)功能,后者是完成平臺接入租戶進行維護等管理功能。5個功能組成部分包括:(1)數(shù)據(jù)存儲。包括應(yīng)用數(shù)據(jù)庫、數(shù)據(jù)服務(wù)平臺和緩存庫三種,其中應(yīng)用數(shù)據(jù)庫存儲能耗監(jiān)測子系統(tǒng)所需的應(yīng)用和配置數(shù)據(jù);數(shù)據(jù)服務(wù)平臺作為能耗監(jiān)測數(shù)據(jù)的數(shù)據(jù)源;緩存庫用于后期性能優(yōu)化使用(前期開發(fā)時暫時不做設(shè)計)。(2)公共框架。用于對數(shù)據(jù)庫、數(shù)據(jù)服務(wù)平臺、緩存庫等數(shù)據(jù)源訪問進行封裝,以及為權(quán)限管理、日志訪問、頁面公共工具等公共功能提供統(tǒng)一支持(3)后臺服務(wù)。需要在后臺進行持續(xù)運行和計算的任務(wù),包括信息推送、診斷分析、告警接收、報告報表的自動生成和推送等。(4)能耗監(jiān)測頁面。完成能耗監(jiān)測的Web交互功能。(5)租戶管理頁面。完成租戶管理的Web交互功能。圖SEQ圖\*ARABIC6eWay2能耗監(jiān)測應(yīng)用平臺模塊結(jié)構(gòu)數(shù)據(jù)服務(wù)接口的總體設(shè)計參見eWay2.0概要設(shè)計文檔,在本輪迭代中需要完善和優(yōu)化的部分參見REF_Ref426449768\r\h3.3.5小節(jié)。部署方案應(yīng)用服務(wù)通過域名方式,向以太網(wǎng)發(fā)布一個可訪問的WEB網(wǎng)站服務(wù),使用雙機熱備部署以確保服務(wù)的穩(wěn)定性,采用全局一致的安全和用戶權(quán)限校驗機制,實現(xiàn)能耗服務(wù)的安全訪問。因為前期的業(yè)務(wù)流量較少,因此在本輪迭代實現(xiàn)中僅考慮雙機熱備實現(xiàn)高可用性,暫不考慮大并發(fā)情況下的集群負載均衡和橫向擴展。以eWay2.X數(shù)據(jù)服務(wù)為黑盒型能耗數(shù)據(jù)源,應(yīng)用服務(wù)通過接口,實現(xiàn)與數(shù)據(jù)服務(wù)的數(shù)據(jù)交換。數(shù)據(jù)存儲方面,使用應(yīng)用服務(wù)自身的關(guān)系型數(shù)據(jù)庫記錄應(yīng)用數(shù)據(jù),為應(yīng)用服務(wù)提供配置和運行的數(shù)據(jù)支撐。每個租戶對應(yīng)的訪問地址為http://服務(wù)器主機地址:服務(wù)端口/租戶名/圖SEQ圖\*ARABIC7eWay2能耗監(jiān)測應(yīng)用平臺部署結(jié)構(gòu)業(yè)務(wù)流程設(shè)計(usercase與產(chǎn)品經(jīng)理的userstory對應(yīng))(示例)前置上送數(shù)據(jù)到NTS-9000的業(yè)務(wù)流程前置上送數(shù)據(jù)到NTS-9000的TSServerU.exe的總體流程如下:Mmi_jk1-mmi_jkn的規(guī)約(為dll文件)由TSServerU.exe在啟動時加載,每個mmi_jk.dll規(guī)約對應(yīng)一個前置機并與之通訊,配置IP地址、端口號后即可進行TCP或UDP方式的通訊。數(shù)據(jù)在前置定時上送到mmi_jk.dll規(guī)約后,拼接成符合mmi_jk規(guī)約格式的報文,調(diào)用NtsDllU.dll中的WriteRtdbData接口,該接口通過SendMessage的方式把數(shù)據(jù)寫入TSServerU.exe,在TSServerU.exe中經(jīng)過初步處理后,把數(shù)據(jù)寫入實時數(shù)據(jù)庫(rtdbmsU.dll),并根據(jù)數(shù)據(jù)庫中的配置,定時把實時數(shù)據(jù)的鏡像寫入歷史數(shù)據(jù)庫(SqlServer)中。寫入實時數(shù)據(jù)庫的目的,是為了組態(tài)圖上需要實時顯示數(shù)據(jù),或者為遙控操作做數(shù)據(jù)準備;而定時寫入歷史數(shù)據(jù)庫,是把數(shù)據(jù)持久化,防止數(shù)據(jù)丟失。(示例)前置到mmi_jk到TSServerU.exe的數(shù)據(jù)流程前置與后臺的通訊方式可以配置為UDP或TCP方式,TCP方式較穩(wěn)定,且有心跳機制;UDP方式的效率較高,但會造成丟包。同樣,后臺mmi_jk.dll也有對應(yīng)的配置文件,可配置連接:前置啟動時,根據(jù)配置的通訊方式,如是TCP方式,建立與后臺mmi_jk.dll的連接,如連接失敗,返回繼續(xù)連接。當連接成功時,后臺mmi_jk.dll設(shè)置標記,并開始發(fā)送心跳。心跳:后臺mmi_jk.dll與前置間通過TCP方式連接,間隔5秒發(fā)送一次心跳報文,判斷前置機是否在線,如果發(fā)送4次前置無反應(yīng)的情況下,默認為前置機離線,后臺mmi_jk.dll主動斷開與前置機的連接。在網(wǎng)絡(luò)或程序由故障恢復(fù)正常時,由前置機主動連接后臺mmi_jk.dll,進行下一次的連接與心跳流程。報文判斷:前置與后臺是TCP或UDP方式,屬于SOCKET通訊,在后臺mmi_jk.dll中,使用微軟的CSocket方式,所以,在OnReceive函數(shù)里接收到數(shù)據(jù)時,根據(jù)程序配置是TCP還是UDP方式,轉(zhuǎn)到對應(yīng)的函數(shù)處理。在此圖中是TCP方式,首先判斷接收到的報文長度是否為0,報文里的數(shù)據(jù)長度是否為0,報文頭是否為0xEB90EB90,如果有任一結(jié)果為否,此幀報文丟棄;反之,把此幀數(shù)據(jù)(新開辟的內(nèi)存)加入待處理隊列,設(shè)置線程觸發(fā)事件SetEvent,由線程在接收到信號后進行處理。前置定時上送數(shù)據(jù):前置定時上送實時數(shù)據(jù),該類數(shù)據(jù)不區(qū)分重要級別,一律定時上送給后臺mmi_jk.dll,此類數(shù)據(jù)包括全遙信(0xd7)、遙脈(0xd9)、帶標志位的遙脈(0xd9,標志位數(shù)據(jù),主要適用于NTS-EMSV1.20及以后版本)、遙測(0xd8)。前置突發(fā)上送數(shù)據(jù):此類數(shù)據(jù)主要為儀表、保護等前端設(shè)備產(chǎn)生告警、開關(guān)量變位、保護事件或故障錄波文件時,由前端設(shè)備、前置產(chǎn)生的突發(fā)上送的數(shù)據(jù),優(yōu)先級高于定時上送數(shù)據(jù),此類數(shù)據(jù)包括:保護事件:0xc3,當保護設(shè)備產(chǎn)生告警時,會產(chǎn)生保護事件,優(yōu)先級高于定時上送數(shù)據(jù),突發(fā)上送給后臺mmi_jk.dll;變位遙信:0xd0,當前端設(shè)備產(chǎn)生開關(guān)量由0變1或由1變0時,會產(chǎn)生此告警,優(yōu)先級高于定時上送數(shù)據(jù),突發(fā)上送給后臺mmi_jk.dll。該告警只是把廠站、設(shè)備號、點位信息、值上送給后臺,由后臺拼接成需要告警的字符串信息;SOE:0xd1,當前端設(shè)備產(chǎn)生開關(guān)量由0變1或由1變0時,會產(chǎn)生此告警,優(yōu)先級高于定時上送數(shù)據(jù),突發(fā)上送給后臺mmi_jk.dll。該告警與變位遙信(0xd0)不同的地方是,該告警是帶時間的字符串上送,為了防止前置、后臺所在電腦的時鐘不一致導(dǎo)致無法正確的判斷告警產(chǎn)生時的現(xiàn)象或原因;事件:0x92,此類為普通事件,優(yōu)先級高于定時上送數(shù)據(jù)。此事件主要為前置設(shè)備側(cè)通訊異常告警,突發(fā)上送給后臺mmi_jk.dll;事件:0x91,此類為普通事件,主要是前置檢測到設(shè)備有異常時,產(chǎn)生的普通告警事件,優(yōu)先級稍高于定時上送數(shù)據(jù),突發(fā)上送給后臺mmi_jk.dll。錄波:0xae,此類為儀表或保護設(shè)備出現(xiàn)異常時,由儀表或保護設(shè)備產(chǎn)生的瞬時數(shù)據(jù)的記錄數(shù)據(jù),此類數(shù)據(jù)也是優(yōu)先級高于普通定時上送數(shù)據(jù),但此類數(shù)據(jù)量較大,后臺mmi_jk.dll接收到數(shù)據(jù)后,在后臺的NTS-9000\FaultWave目錄下生成基于COMTRADE的故障錄波文件,由故障錄波分析軟件進行分析;前置被動上送-遙控:遙控分為預(yù)校驗、預(yù)校成功、遙控執(zhí)行、執(zhí)行成功四步。當后臺mmi_jk.dll下發(fā)預(yù)校命令后,等待前置返回預(yù)校結(jié)果,如超過后臺設(shè)置的超時時間,默認此次遙控失敗;反之,繼續(xù)進行遙控執(zhí)行命令的下發(fā)。同理,遙控執(zhí)行命令下發(fā)后,如果前置機返回超時,后臺mmi_jk.dll默認遙控失敗,反之,遙控成功。遙控成功后,如果設(shè)備產(chǎn)生了遙信變位(0xd0),會突發(fā)上送到后臺mmi_jk.dll,以便后臺可以及時顯示對應(yīng)的開關(guān)狀態(tài);抄表:0xdf,抄表命令由后臺mmi_jk.dll下發(fā)到前置,當前置返回數(shù)據(jù)后,默認為抄表成功,反之,超過20秒,默認為超時;設(shè)參:0xdb,原理同抄表;寫入實時庫:后臺mmi_jk.dll在判斷接收到的報文正常后,會重新拼接成一個后臺可識別的報文,調(diào)用NtsDllU.dll(公共的接口庫)中的WriteRtdbData,WriteRtdbData調(diào)用微軟的自帶的消息函數(shù)SendMessage(同步函數(shù),即:WriteRtdbData函數(shù)必須等待該函數(shù)返回,才能進行下一次的函數(shù)調(diào)用或消息發(fā)送)TSServerU.exe在接收后寫入TSServerU.exe的待處理隊列,由線程定時處理。(示例)前置到mmi_jk到TSServerU.exe的模塊間流程前置機判斷與后臺的連接方式,如果為TCP方式,前置機作為客戶端去連接后臺的mmi_jk.dll規(guī)約,連接成功后,返回消息給前置機。前置機與后臺mmi_jk.dll的配置設(shè)計如下:前置后臺mmi_jk.dll配置前置與后臺mmi_jk.dll連接成功后,由mmi_jk.dll向前置機發(fā)送心跳,間隔5秒,不可配置,以確認前置機是否在線。如果發(fā)送4次心跳,前置不回復(fù),認為前置機離線,主動斷開連接;前置與后臺mmi_jk.dll有校時功能,默認一分鐘校時一次,可在后臺配置,防止前置與后臺時間不對應(yīng),導(dǎo)致生成的告警事件、表頭數(shù)據(jù)有異常。如下截圖:前置機定時上送數(shù)據(jù)(包括:模擬量、脈沖量、全部開關(guān)量、保護事件、設(shè)參返回報文、錄波數(shù)據(jù)、抄表數(shù)據(jù)等信息),前置機突發(fā)上送數(shù)據(jù)(包括:開關(guān)量變位、SOE事件),后臺mmi_jk.dll通過socket接收后,加入緩存隊列,由線程進行異步處理。處理時,對幀數(shù)據(jù)進行判斷,并重新組包后,調(diào)用NtsDllU.dll里的WriteRtdbData接口,再調(diào)用windows的SendMessage發(fā)送給TSServerU.exe,由TSServerU.exe接收后加入緩存隊列進行異步入實時庫處理。寫入實時庫時,調(diào)用UpdateRecord寫入實時數(shù)據(jù)庫。實時數(shù)據(jù)庫中的數(shù)據(jù),可通過TSConfigU.exe工具查看,可校驗與前置中的數(shù)據(jù)是否一一對應(yīng)。TSServerU.exe定時36分鐘寫入SqlServer數(shù)據(jù)庫中。定時保存功能,是為了后續(xù)能耗統(tǒng)計使用,需要保存上一次的表頭值;保存開關(guān)量的值,防止出現(xiàn)狀態(tài)顯示異常。接口設(shè)計外部接口數(shù)據(jù)服務(wù)接口本小節(jié)列出的數(shù)據(jù)服務(wù)接口僅包括需要在本輪迭代中使用的部分。全部接口中,除登錄接口以外,其他需要包含參數(shù)session_[ID],該參數(shù)值由登錄接口返回。以下不再單獨列出。數(shù)據(jù)源管理邏輯設(shè)備管理獲取預(yù)測數(shù)據(jù)接口OLAP歷史數(shù)據(jù)統(tǒng)計接口{"results":[{"datas":["[200919.2093,水,能耗,2015,2]","[3492365.9410,水,能耗,2015,1]"],"dimentions":["NTS_SUM","CATEGORY_LEVEL2","CATEGORY_LEVEL1","YEAR_INT","MONTH_INT"]}]}消息推送記錄管理該接口2.0中已實現(xiàn),對應(yīng)的表結(jié)構(gòu)沒有變化區(qū)域維度配置告警事件接收接口告警事件接收采用TCP通信方式并作為TCP客戶端實現(xiàn),在向數(shù)據(jù)服務(wù)平臺的信息推送服務(wù)模塊主動發(fā)起連接并建立通信鏈路后,通過TCP報文交互實現(xiàn)告警接收。告警接收報文結(jié)構(gòu)報文體消息內(nèi)容格式1、消息客戶端登錄驗證(1)客戶端登錄驗證{"cmdtype":"LOGIN","params":{"username":"username","password":"password"}}(2)客戶端登錄驗證返回{"cmdtype":"LOGIN","results":{"retcode":"0",//應(yīng)答的錯誤碼。"retmesg":"登錄成功"}}2、鏈路心跳與保持(1)發(fā)送鏈路心跳{"cmdtype":"HEARTBEAT","params":{"timestamp":"2015-05-3012:30:00.000"http://發(fā)送心跳報文時的系統(tǒng)時間}}(2)鏈路心跳返回{"cmdtype":"HEARTBEAT","params":{"timestamp":"2015-05-3012:30:00.000"http://發(fā)送心跳報文時的系統(tǒng)時間}}3、服務(wù)器專用通知(1)鏈路心跳丟失通知{"cmdtype":"LOST","params":{"timestamp":"2015-05-3012:30:00.000"http://最近發(fā)送心跳報文時的系統(tǒng)時間}}(2)訂閱規(guī)則被刪除{"cmdtype":"DELETED",}(3)消息推送參見《建筑能源與設(shè)備運維平臺eWay2.0概要設(shè)計說明書》小節(jié)定義的推送報文格式用戶交互界面能耗監(jiān)測子系統(tǒng)網(wǎng)站地圖一級菜單二級菜單頁面功能點能耗縱覽GIS總覽GIS地圖駕駛艙系統(tǒng)首頁報告報表文件生成報告/報表生成文件管理報告/報表管理模板管理報告/報表模板生成策略報告/報表生成策略配置能耗分析能耗分析能耗對比能耗對比能耗分時對比單一對象多時段對比能耗排名能耗排名能耗預(yù)測能耗預(yù)測KPI排名KPI對標展示標桿功能綜合告警告警查詢告警管理告警配置告警配置一鍵診斷系統(tǒng)管理租戶詳情租戶個人詳細信息用戶管理用戶管理(可查看用戶信息)角色管理角色管理功能關(guān)聯(lián)功能關(guān)聯(lián)組織關(guān)聯(lián)組織關(guān)聯(lián)業(yè)態(tài)關(guān)聯(lián)業(yè)態(tài)關(guān)聯(lián)區(qū)域關(guān)聯(lián)區(qū)域關(guān)聯(lián)分類分項關(guān)聯(lián)分類分項關(guān)聯(lián)組織架構(gòu)部門管理業(yè)態(tài)配置業(yè)態(tài)維護區(qū)域配置區(qū)域配置分類分項分類分項自定義維度自定義維度配置管理地圖模型GIS信息管理預(yù)測任務(wù)預(yù)測任務(wù)管理能耗指標KPI管理參數(shù)配置參數(shù)集參數(shù)配置管理算子配置算子參數(shù)配置管理數(shù)據(jù)源數(shù)據(jù)采集來源管理菜單管理頁面命名推送策略配置報告/報表/告警等信息推送的策略推送記錄虛擬設(shè)備管理虛擬設(shè)備信息駕駛艙配置能耗標桿庫配置能耗標桿庫KPI錄入KPI錄入定額錄入定額錄入人工錄入日志管理系統(tǒng)/操作日志管理模板文件管理模板文件管理信息查詢設(shè)備詳情建筑詳情醫(yī)院詳情自助查詢自助查詢租戶管理租戶管理租戶管理(可以查看租戶詳情/可以審核租戶注冊反饋信息)模板管理租戶模板租戶類型模板管理(可以查看模板詳情)建筑模板建筑模板管理(可以查看模板詳情)系統(tǒng)配置系統(tǒng)配置系統(tǒng)配置租戶注冊租戶注冊租戶管理子系統(tǒng)網(wǎng)站地圖一級菜單二級菜單備注管理員登錄用戶名/密碼/驗證碼租戶注冊選擇租戶模板/填寫基本信息/填寫密碼租戶管理查看和管理租戶列表(增/刪/該)/新租戶審核模板管理租戶類型模板管理查看和管理租戶類型模板(增/刪/改)建筑類型模板管理查看和管理建筑類型模板(增/刪/改)內(nèi)部接口報表報告生成系統(tǒng)后臺服務(wù),為報告報表生成和推送提供統(tǒng)一的內(nèi)部接口,該接口供報告報表模塊調(diào)用,接口的返回值均為預(yù)定義整數(shù)。表SEQ表\*ARABIC2報告報表內(nèi)部接口返回值定義報告報表生成接口intbuildReport(StringPolicyId,ReportParamreportParam)功能:根據(jù)指定手動策略和參數(shù),生成報告報表文件,并自動生成對應(yīng)PDF文件,最后將兩文件存儲到服務(wù)器指定路徑,且記入數(shù)據(jù)庫記錄。參數(shù): PolicyId,String類型,用于指定報告報表手動生成策略的key,手動生成策略中定義了模板、數(shù)據(jù)維度、老化時間; reportParam,ReportParam類,用于指定報告報表的生成參數(shù),定義了數(shù)據(jù)時間、時間顆粒度。返回值:整型,表示生成結(jié)果。報告報表推送接口intdispatchReport(Stringfilename,Stringcreatetime,StringdispatchKey)功能:根據(jù)指定報告報表文件和推送參數(shù),向數(shù)據(jù)服務(wù)平臺提交推送。參數(shù): filename,String類型,需要推送的報告報表文件名。createtime,String類型,需要推送的報告報表生成時間。 dispatchKey,String類型,報告報表的推送策略key,關(guān)聯(lián)的推送策略中定義了推送的目標用戶及推送方式。返回:整型,表示推送結(jié)果。消息推送所有業(yè)務(wù)模塊根據(jù)業(yè)務(wù)需要產(chǎn)生通知信息,包括事件、告警、通知、公告等,轉(zhuǎn)發(fā)給推送提交模塊,由推送提交模塊接收并提交給數(shù)據(jù)服務(wù)平臺處理,然后更新推送狀態(tài)。其他模塊產(chǎn)生待推送消息并轉(zhuǎn)發(fā)給推送提交模塊,需要調(diào)用的接口和過程如下:接口列表: /** * *@Description初始化模塊. *@paramip *推送提交服務(wù)器ip *@paramport *推送提交服務(wù)器端口 *@paramreconTime *重連推送服務(wù)器的時間間隔(單位:秒) */ publicstaticvoidinit(finalStringip,finalStringport,finalStringreconTime);/***實例化待發(fā)送消息.*/publicMsg() /** *@paramalarm *設(shè)置告警消息,類別為告警時才有此項. */ publicfinalvoidsetAlarm(finalAlarmMsgalarm); /** *@paramcontent *設(shè)置消息內(nèi)容. */ publicfinalvoidsetContent(finalStringcontent); /** *@paramdestTargetList *設(shè)置發(fā)送目標. */ publicfinalvoidsetDestTargetList(finalList<Target>destTargetList); /** *@parammodule *設(shè)置模塊名稱. */ publicfinalvoidsetModule(finalStringmodule); /** *@paramsendtime *設(shè)置發(fā)送時間. */ publicfinalvoidsetSendtime(finalStringsendtime); /** *@paramsource *設(shè)置消息源. */ publicfinalvoidsetSource(finalStringsource); /** *@paramtenant *設(shè)置源所屬租戶. */ publicfinalvoidsetTenant(finalStringtenant); /** *@paramtype *設(shè)置消息類型 */ publicfinalvoidsetType(finalMsgTypetype); /** *發(fā)送消息 */ publicvoidsend()調(diào)用過程如下:(1)構(gòu)造消息體并設(shè)置相關(guān)參數(shù)Msgmsg=newMsg(); msg.setContent("消息推送服務(wù)器通信異常"); msg.setDestTargetList(Arrays.asList(newTarget(TargetType.MAILTO,"abcd@"),newTarget( TargetType.SMS,))); msg.setSendtime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss.SSS"))); msg.setSource("/tiansu/xincheng/210989/kongtiao"); msg.setTenant("tiansu"); msg.setType(MsgType.DataExceeded); msg.setModule("診斷分析服務(wù)器"); JSONObjectjo=newJSONObject(); jo.put("alarmlevel",9); jo.put("alarmnum",AlarmItem.DataPlatformCommError); AlarmMsgam=newAlarmMsg(); am.setCategories(jo);am.setId(12345); msg.setAlarm(am);(2)轉(zhuǎn)發(fā)消息msg.send();以下為其他業(yè)務(wù)模塊和推送提交服務(wù)器通信所用的通信協(xié)議,包括消息頭和消息體。其他模塊也可以根據(jù)以下協(xié)議自己實現(xiàn)消息轉(zhuǎn)發(fā)。(1)提交推送任務(wù)報文結(jié)構(gòu)字段長度字段含義說明8字節(jié)報文頭標識,固定取值為“NTS-EWAY”4字節(jié)報文總長度,包括報文頭長度和報文體內(nèi)容長度1字節(jié)協(xié)議版本號,暫時為22字節(jié)數(shù)據(jù)類型0:提交待推送消息,1:回碼,其他值保留--報文體消息內(nèi)容,Json字符串格式,長度不定(2)報文體消息內(nèi)容格式報文體使用json字符串形式,格式如下。其中如不包含dest字段,則意味著不顯式指定接收者,具體接收者由數(shù)據(jù)服務(wù)平臺根據(jù)推送策略進行指定。{"alarm":{"categories":{"alarmnum":"DataPlatformCommError","sourcetype":1,"alarmlevel":9},"souceId":"123456"},"content":"消息推送服務(wù)器通信異常","dest":["mailto://abc@","sms:/],"id":"f0feff06-9f6a-4d26-81ca-a962d9b1dfce","module":"診斷分析服務(wù)器","sendtime":"2015-10-2714:58:27.363","source":"/tiansu/xincheng/210989/kongtiao","tenant":"tiansu","time":"2015-10-2714:58:27.340","type":"DataExceeded","userid":-1}Olap接口{“addTenants”:["tiansu","aaa"]例子:{"addTenants":["wupeng","abc"]}{“delTenants”:["tiansu","aaa"]}例子:{"delTenants":["wupeng","abc"]}{“changeData”:[{“tenant”:”newcity”,”time”:”2015-09-10”},{“tenant”:”tiansu”,”time”:”2015-09-1012”}]}說明:對每一個時間點分別進行文件重新生成,支持兩種時間格式,按天的和按小時的,格式為“yyyy-mm-dd”和“yyyy-mm-ddhh”注意:時間顆粒度不要有重合,比如不要同時出現(xiàn)"2015-10-20"和"2015-10-2010"模塊設(shè)計本部分根據(jù)總體結(jié)構(gòu)對分模塊進行概要設(shè)計說明,其中每個模塊都需要實現(xiàn)的公共功能包括:(1)涉及數(shù)據(jù)查看、變更的操作(含用戶登錄),以及調(diào)用接口訪問數(shù)據(jù)服務(wù)平臺的操作都必須通過REF_Ref425971018\r\h小節(jié)設(shè)計的日志模塊向系統(tǒng)登記操作日志。(2)每個模塊都需要在功能流程初始階段進行權(quán)限判斷,對于不符合權(quán)限規(guī)定的模塊調(diào)用進行拒絕,并提示權(quán)限不允許。上述公共功能不在每個模塊設(shè)計中贅述。應(yīng)用交互部分配置管理多維對象多維對象負責提供多維對象的增刪改查操作的交互服務(wù),由平臺管理員登錄管理系統(tǒng)后對多維對象進行管理,同時產(chǎn)生操作日志。多維對象通過訪問運維數(shù)據(jù)接口,實現(xiàn)與數(shù)據(jù)服務(wù)平臺的數(shù)據(jù)交互,并通過Web界面配置系統(tǒng)業(yè)務(wù)所需的多維對象,具體完成以下功能:(1)展示KPI參數(shù)列表,通過輸入查詢條件對已有多維對象進行檢索查詢,并列表展示檢索結(jié)果。查詢條件包括:“是否可用”,“分類分項”,“關(guān)鍵字”,和“修改時間”,查詢條件為空時列出全部參數(shù)信息。對于更詳細查詢條件的需求,可以在高級查詢中進行操作,查詢條件在普通查詢的基礎(chǔ)上增加了4個維度,包括:“區(qū)域”,“組織”,“業(yè)態(tài)”,“自定義”。執(zhí)行查詢操作后回到普通查詢頁面,取消高級查詢可回到普通查詢頁面。(2)提供多維對象的新增、修改和刪除功能。在新增和修改多維對象時,需要從數(shù)據(jù)服務(wù)接口獲取“分類分項”,“區(qū)域”,“組織”,“業(yè)態(tài)”和“自定義”的模塊信息,并從中選擇。(3)保存多維對象信息功能:在多維對象信息成功變更時,將最新信息通過數(shù)據(jù)服務(wù)接口提交至數(shù)據(jù)服務(wù)平臺。一個多維對象包含下表中內(nèi)容:內(nèi)容備注輸入方式多維對象名稱對該多維對象進行命名的文字信息,如“用水量”,對應(yīng)tb_calculator中的calc_name,增改操作時,必填。錄入是否啟用表示該多為對象的狀態(tài),包含“啟用”和“不啟用”,對應(yīng)tb_calculator中的calc_enable,增改操作時,必選。下拉選擇分類分項表示該多維對象歸屬的分類分項維度,通過調(diào)用數(shù)據(jù)服務(wù)接口從數(shù)據(jù)服務(wù)平臺獲得具體數(shù)據(jù)。對應(yīng)tb_calculator中的ec_key,增改操作時,必選。下拉選擇其他維度表述該多維對象所屬的維度,包括“區(qū)域”,“組織”,“業(yè)態(tài)”,“自定義”,節(jié)點的名稱分別來自于tb_region,tb_organization,tb_profession,tb_business。通過調(diào)用數(shù)據(jù)服務(wù)接口從數(shù)據(jù)服務(wù)平臺獲得具體數(shù)據(jù),并通過樹形控件展示。增改操作時,分別展示,且至少選擇一項。列表展示時,“...”以顯示超出表格長度部分,鼠標移入時顯示詳情。樹形選擇描述對該多為對象進行內(nèi)容,功能說明的文字信息,如“所屬維度的用水量”對應(yīng)tb_calculator中的calc_des。列表展示時,以“...”顯示超出表格長度部分,鼠標移入時顯示詳情。錄入創(chuàng)建時間該條信息新增成功時的時間,格式:“yyyy-MM-ddHH:mm:ss.ms”,對應(yīng)tb_calculator中的calc_createtime。系統(tǒng)默認最后修改時間該條信息最后修改時的時間,格式:“yyyy-MM-ddHH:mm:ss.ms”,對應(yīng)tb_calculator中的calc_modifytime。系統(tǒng)默認多維對象id該多維對象的唯一主鍵,對應(yīng)tb_calculator中的calc_id。數(shù)據(jù)庫自動增長多維對象key該多維對象的業(yè)務(wù)主鍵,用于參數(shù)錄入和計算中的定位。對應(yīng)tb_calculator中的calc_key。創(chuàng)建多維對象時,復(fù)制其id。創(chuàng)建時復(fù)制多維對象id多維對象配置頁面業(yè)務(wù)行為流程說明:(1)平臺管理員登錄租戶管理系統(tǒng)。產(chǎn)生登錄日志;(2)平臺管理員在配置管理功能中選擇進入多維對象界面,頁面自動顯示當前已存在的所有多維對象列表。(3)平臺管理員根據(jù)需要選擇操作方式對多維對象進行管理。管理操作包括新增一個多維對象并錄入名稱及詳細內(nèi)容信息,編輯一個指定多維對象的名稱及詳細內(nèi)容信息。并產(chǎn)生操作日志。圖22多維對象配置頁面流程圖樣數(shù)據(jù)錄入(黃奕然)采樣數(shù)據(jù)錄入模塊用于與能耗數(shù)據(jù)錄入模塊配合管理能好點的數(shù)據(jù),不同于后者修改的是預(yù)存表中的數(shù)據(jù),該模塊是用于對實時能耗數(shù)據(jù)采樣值進行修改。該模塊通過訪問數(shù)據(jù)接口,實現(xiàn)與數(shù)據(jù)源的數(shù)據(jù)交互,并提供Web界面實現(xiàn)與登錄用戶的交互,完成以下功能:(1)定時調(diào)用數(shù)據(jù)服務(wù)接口(詳情見0章節(jié)),獲取當前租戶所有采樣點信息,提交至數(shù)據(jù)服務(wù)平臺,保存至關(guān)系數(shù)據(jù)庫中的采樣點信息表。(定時時間可在配置文件中設(shè)置)(2)能耗監(jiān)測用戶登錄系統(tǒng)后,若權(quán)限滿足(只向?qū)嶓w租戶提供該功能),加載頁面(一級)時,可查看所有預(yù)存的采樣點信息,包括采樣點名稱,分類分項,區(qū)域,組織,業(yè)態(tài),自定義維度。可根據(jù)關(guān)鍵字,維度信息進行查詢。(3)能耗監(jiān)測用戶登錄系統(tǒng)后,若權(quán)限滿足,可選擇查看時間和某一個采樣點后(查看時間以天為單位,默認為當前日期前一天,只可查詢60天以內(nèi)的數(shù)據(jù),一次只能選擇一天),通過數(shù)據(jù)服務(wù)接口(詳情見0章節(jié)),獲取對應(yīng)的實時采樣數(shù)據(jù),加載(二級)頁面并展示,展示內(nèi)容包括采樣點名稱、采樣時間(以分鐘為時間顆粒度)、表頭值、數(shù)據(jù)修改時間(頁面中可為空)。(4)采樣數(shù)據(jù)批量導(dǎo)出,若能耗監(jiān)測用戶滿足權(quán)限,可在采樣數(shù)據(jù)修改頁面(二級頁面)選中一條或多條采樣數(shù)據(jù)信息,以excel格式導(dǎo)出,導(dǎo)出內(nèi)容包括“采樣點名稱”,“采樣時間”,“表頭值”,空值以“--”展示。提供全部導(dǎo)出功能,將該頁面所有采樣數(shù)據(jù)信息全部導(dǎo)出,即所選擇的某一個采樣點的某一天的所有信息。(一次操作最多只允許導(dǎo)出一天數(shù)據(jù))(5)采樣數(shù)據(jù)批量導(dǎo)入,若能耗監(jiān)測用戶滿足權(quán)限,可在采樣數(shù)據(jù)修改頁面(二級頁面)選擇導(dǎo)入功能,將一條或多條采樣數(shù)據(jù)信息導(dǎo)入頁面,以excel為唯一識別格式,excel文檔內(nèi)的格式需與導(dǎo)出模板保持一致,否則提示錯誤,導(dǎo)入數(shù)據(jù)不允許為空值,否則提示錯誤。(6)對采樣數(shù)據(jù)的修改,若能耗監(jiān)測用戶滿足權(quán)限,可通過Web界面修改采樣數(shù)據(jù)信息,但僅能對表頭值進行修改,其他字段為不可修改狀態(tài)。修改后的表頭值需要進行校驗,必須大于前一時段的數(shù)值,小于后一時段的數(shù)值,校驗成功后,計算出增量值作為參數(shù)(參數(shù)包括:采樣點名稱,采樣時間,請求修改時間,修改后的表頭值,增量值),通過數(shù)據(jù)服務(wù)接口(詳情見0章節(jié)),傳遞參數(shù)并通知數(shù)據(jù)修復(fù)模塊(詳情見1章節(jié))處理采樣數(shù)據(jù)的修改。執(zhí)行修改操作、且校驗表頭值成功后,提示“載入中”,(請求通過數(shù)據(jù)服務(wù)接口,數(shù)據(jù)修復(fù)模塊,通過接口獲取處理信息時間可能較長,無法確保做到實時響應(yīng)),后臺處理成功后,提示“操作成功”。(7)記錄修改結(jié)果,執(zhí)行完修改操作后,通過數(shù)據(jù)服務(wù)接口獲取采樣數(shù)據(jù)修改的結(jié)果(包含采樣點名稱,采樣時間,修改后的采樣數(shù)據(jù)表頭值,發(fā)送修改請求時間,數(shù)據(jù)修改時間,采樣點所屬的維度信息),若修改成功,將修改過的記錄通過數(shù)據(jù)服務(wù)接口提交至數(shù)據(jù)服務(wù)平臺,更新關(guān)系數(shù)據(jù)庫中的采樣數(shù)據(jù)修改記錄表,并將修改后的表頭值和數(shù)據(jù)修改時間更新至頁面,彈出提示。對于成功修改后的記錄,以日志的形式保存操作記錄。(采樣點名稱,采樣時間,修改前的表頭值,修改后的表頭值,修改時間)一條采樣點信息包括(一級頁面):內(nèi)容備注允許修改采樣點名稱用于顯示名稱,便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_name否分類分項用于顯示采樣點所屬分類分項,便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_ec否所屬區(qū)域用于顯示采樣點所屬區(qū)域,便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_region否所屬組織用于顯示采樣點所屬組織,便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_org否所屬業(yè)態(tài)用于顯示采樣點所屬業(yè)態(tài),便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_pro否所屬自定義維度用于顯示采樣點所屬自定義維度,便于查詢找出所需采樣點,對應(yīng)采樣點信息表tb_sensors中的sample_business否(采樣點信息列表內(nèi)容)一條采樣數(shù)據(jù)修改信息包括(二級頁面):內(nèi)容備注是否允許修改采樣點名稱顯示采樣點名稱,對應(yīng)采樣點信息表tb_sensors中的sample_name否采樣時間顯示采樣時間,根據(jù)所選采樣點和日期,通過數(shù)據(jù)服務(wù)接口獲取否表頭值顯示表頭值,根據(jù)所選采樣點和日期,通過數(shù)據(jù)服務(wù)接口獲取是(錄入)采樣數(shù)據(jù)修改時間顯示采樣數(shù)據(jù)修改時間,通過修改操作后開啟的定時任務(wù)捕捉到否(采樣數(shù)據(jù)修改信息列表內(nèi)容)采樣數(shù)據(jù)修改模塊流程見下圖:后臺服務(wù)部分(杜冠軍)在eWay2.2應(yīng)用服務(wù)層,需要在后臺執(zhí)行部分流程,以及執(zhí)行一些預(yù)配置的數(shù)據(jù)計算。這些后臺服務(wù),都以線程任務(wù)的方式存在,并在系統(tǒng)后臺進行并發(fā)處理。因此,在eWay2.2應(yīng)用服務(wù)系統(tǒng)中,提供了基于Spring框架的多線程調(diào)度控制機制。所有后臺任務(wù)在創(chuàng)建時,都需要通過注解的方式,向框架任務(wù)管理器注冊任務(wù),并由任務(wù)管理器根據(jù)系統(tǒng)的實時負載情況,進行統(tǒng)一的并發(fā)控制和調(diào)度。預(yù)存能耗數(shù)據(jù)(王濤)能耗由多個維度對象(區(qū)域、組織、業(yè)態(tài)、分類分項、自定義維度)組成,例如“上海虹橋機場1號登機樓照明用電能耗”就是由區(qū)域維度--上海虹橋機場,組織架構(gòu)維度--1號登機樓,分類分項維度--照明用電組成?!绢A(yù)存能耗數(shù)據(jù)】主要通過向聯(lián)機分析處理系統(tǒng)(以下簡稱OLAP)傳遞參數(shù)--各能耗維度名稱,并從Kylin中獲取能耗數(shù)據(jù)?!绢A(yù)存能耗數(shù)據(jù)】由兩部分組成,每日定時預(yù)存和著色為1時定時重新預(yù)存;(1)每日定時預(yù)存:該模塊需要完成的功能有:a從數(shù)據(jù)庫中獲取能耗對象;b解析組成該對象的所有維度,并從對應(yīng)數(shù)據(jù)庫中獲取維度名稱;c將組成該能耗的多個維度名稱,加上所要查詢的時間,按一定格式組合成json字符串,通過規(guī)定的【數(shù)據(jù)服務(wù)接口】中獲取所需能耗數(shù)據(jù);d處理獲得的數(shù)據(jù)并添加到相應(yīng)能耗表中。模塊流程如如下:圖34能耗預(yù)存流程圖(2)定時重新預(yù)存:定時重新預(yù)存的對象是所有l(wèi)abel被標記為1的多維對象,功能與每日定時預(yù)存相同,區(qū)別在于每日定時預(yù)存是根據(jù)昨日日期獲取數(shù)據(jù),而定時重新預(yù)存是根據(jù)需要重新預(yù)存的多維對象的時間獲取新數(shù)據(jù);重新預(yù)存有一個時間深度,當多維對象的所在時間超過這個時間深度,則不對其重新預(yù)存,時間深度寫在配置文件中。在KPI數(shù)據(jù)計算中要求,能耗值需要按日、月、年分為三個數(shù)據(jù)表存儲,因此在查詢時,時間查詢條件需要分為按天、按月、按年;定時器在每天凌晨2點執(zhí)行,自動查詢昨日、昨日所在月以及昨日所在年的能耗值。為了避免數(shù)據(jù)量多余龐大,給系統(tǒng)性能造成壓力,能耗日表分為實時表和歷史表。歷史表中存放所有能耗值;而實時表值存放從昨日起,一年內(nèi)的日能耗值,超過一年的不會添加到實時表中。另外為了滿足獲取實時能耗的需求,預(yù)測能耗數(shù)據(jù)查詢條件中還可以按小時查詢,即每天定時查詢昨日24小時每小時的能耗值。由于按小時查詢,數(shù)據(jù)量更加龐大,在數(shù)據(jù)庫存儲時采用按月分表的方式,即屬于同一年同一月的實時能耗存儲在一個數(shù)據(jù)表中(該表以年-月命名)預(yù)存能耗數(shù)據(jù)存在以下異常情況:從【數(shù)據(jù)服務(wù)接口】獲取能耗數(shù)據(jù)時,接口發(fā)生中斷,導(dǎo)致一段時間的能耗值無法獲取。該異常處理方式是:將未能獲取到的能耗值設(shè)為0,并將數(shù)據(jù)的著色(label字段)設(shè)為1,通過“定時重新預(yù)存”重新獲取數(shù)據(jù)。從【數(shù)據(jù)服務(wù)接口】獲取能耗數(shù)據(jù)時,記錄某處能耗的設(shè)備發(fā)生故障,使得數(shù)據(jù)庫中沒有該處的能耗數(shù)據(jù)。該異常處理方式也是:將未能獲取到的能耗值設(shè)為0,并將數(shù)據(jù)的著色(label字段)設(shè)為1,通過“定時重新預(yù)存”重新獲取數(shù)據(jù)。需要注意的是,當某一時間的著色被標記為1時,該時間的上級級聯(lián)時間的能耗數(shù)據(jù),數(shù)據(jù)著色也需要被標記為1,即使獲取的該上級時間的能耗數(shù)據(jù)正常。(例如:從【數(shù)據(jù)服務(wù)接口】獲取的2015年4月3號12點的電能耗數(shù)據(jù)異常著色為1,但是獲取的2015年4月3號的電能耗數(shù)據(jù)正常,著色為0,那么也需要將這一天的能耗數(shù)據(jù)著色改為1,同理2015年4月及2015年的數(shù)據(jù)著色都為1,都需要進行重新預(yù)存。)KPI數(shù)據(jù)計算(王濤)KPI數(shù)據(jù)計算用于對能耗指標中配置的KPI公式進行計算,并將計算結(jié)果保存到相應(yīng)數(shù)據(jù)表中。公式計算由三部分組成:每日定時計算;著色不為0時定時重算;采樣數(shù)據(jù)修改后重算(1)每日定時計算:KPI日表處理流程如下圖:圖35KPI數(shù)據(jù)每日定時計算日表流程圖上圖描述的是KPI日表的計算存儲,月表和年表的流程類似,區(qū)別在于因數(shù)的獲取和結(jié)果的存儲:月表計算,kpi參數(shù)是從【KPI參數(shù)月表】中獲取,能耗值是從【能耗預(yù)存表月表】中獲取,最后獲取的KPI值則是保存到【KPI月表】中;年表類似。每日定時計算,定時器在每天凌晨2點開始自動計算昨日、昨日所在月以及昨日所在年的KPI值。公式中因數(shù)包括KPI參數(shù)和能耗值,都按日月年分為3個表(日表、月表和年表),分別存儲日、月、年的數(shù)據(jù)。KPI公式也是分別按日、月、年從三種表中獲取昨日、昨日所在月以及昨日所在年的因數(shù)的值并進行計算,最后添加到對應(yīng)的KPI日月年表中(KPI數(shù)據(jù)也分為日表、月表和年表)。每個KPI參數(shù)和能耗值都有一個字段label,當值異常時,label就標記為1,計算KPI公式時,只要因數(shù)中有一個label為1,該KPI(沒條KPI也有一個label字段)的label就為1,(公式計算本身異常,例如除數(shù)為0,KPI的label也為1)表明該條KPI數(shù)據(jù)需要進行重算。為了避免數(shù)據(jù)量多余龐大,給系統(tǒng)性能造成壓力,KPI值的日表分為實時表和歷史表。歷史表中存放所有KPI值;而實時表值存放從昨日起,一年內(nèi)的日KPI值,超過一年的不會添加到實時表中。(2)著色不為0時定時重算模塊的處理流程如下圖:圖36KPI數(shù)據(jù)著色異常定時重算流程圖上圖描述的是KPI日表的重算存儲,月表和年表的流程類似,區(qū)別在于因數(shù)的獲取和結(jié)果的存儲:月表計算,kpi參數(shù)是從【KPI參數(shù)月表】中獲取,能耗值是從【能耗預(yù)存表月表】中獲取,最后獲取的KPI值則是保存到【KPI月表】中;年表類似。著色不為0時定時重算,定時器每隔5分鐘執(zhí)行一次,計算label不為0的KPI所在日期(日、月、年)的KPI值。定時重算和每日定時計算過程類似,區(qū)別在于公式因數(shù)的獲取。每日計算是獲取昨日、昨日所在月以及昨日所在年的因數(shù)的值;而定時重算是獲取label不為0的KPI所在日、所在月、所在年的因數(shù)的值。定時重算有一個時間深度,當著色不為1的KPI所在日期超過這個時間深度,就不會對這些KPI值進行重算。該時間深度寫在配置文件中,用戶可以根據(jù)需要修改配置文件中的具體值。(3)采樣數(shù)據(jù)修改后KPI重算采樣數(shù)據(jù)人工修改后,采樣點數(shù)據(jù)會刷新,對應(yīng)的多維對象的歷史能耗數(shù)據(jù)需要重新預(yù)存。獲取該多維對象新的歷史能耗數(shù)據(jù)后,需要將有該對象作為因數(shù)的所有KPI公式重新計算。模塊的處理流程如下圖:圖37采樣值修改后KPI定時重算流程圖上圖描述的是KPI日表的重算存儲,月表和年表的流程類似,區(qū)別在于因數(shù)的獲取和結(jié)果的存儲:月表計算,kpi參數(shù)是從【KPI參數(shù)月表】中獲取,能耗值是從【能耗預(yù)存表月表】中獲取,最后獲取的KPI值則是保存到【KPI月表】中;年表類似。數(shù)據(jù)服務(wù)平臺在本系統(tǒng)中,數(shù)據(jù)服務(wù)平臺是能耗監(jiān)測平臺的底層數(shù)據(jù)源,為能耗監(jiān)測平臺提供各種實時查詢、數(shù)據(jù)統(tǒng)計和數(shù)據(jù)分析等數(shù)據(jù)服務(wù)。數(shù)據(jù)服務(wù)平臺的主體部分已經(jīng)通過eWay2.0迭代輪次中完成,在本系統(tǒng)開發(fā)中需要對其進行有針對性的性能優(yōu)化和功能完善。數(shù)據(jù)服務(wù)平臺模塊結(jié)構(gòu)見REF_Ref425233059\h圖39,其中紅色為新開發(fā)模塊,綠色為優(yōu)化完善模塊。圖39數(shù)據(jù)服務(wù)平臺內(nèi)部模塊結(jié)構(gòu)SQL服務(wù)引擎(張頂飛,變更通知)SQL服務(wù)引擎是對數(shù)據(jù)服務(wù)平臺中全部基礎(chǔ)數(shù)據(jù)和運行配置數(shù)據(jù)的統(tǒng)一訪問接口,其主體功能已經(jīng)完成。本輪迭代中主要是配合其余功能的增強與優(yōu)化,進行數(shù)據(jù)結(jié)構(gòu)和訪問語義的調(diào)整與改善。主要涉及的功能完善點包括:數(shù)據(jù)服務(wù)接口變更或完善對數(shù)據(jù)庫提出的變更,新增的接口如下表格描述:平臺級網(wǎng)關(guān)進行數(shù)據(jù)源更新時,SQL服務(wù)引擎需要接受和存儲數(shù)據(jù)源更新情況,并進一步將變更情況發(fā)布到服務(wù)總線,以通知相關(guān)模塊進行處理。開源工具kylinKylin是ebay向開源業(yè)界推出分布式分析引擎,在對Hadoop環(huán)境下分析流程進行加速、且能夠與SQL兼容性工具順利協(xié)作的解決方案,Kylin成功將SQL接口與多維分析機制(OLAP)引入Hadoop,旨在對規(guī)模極為龐大的數(shù)據(jù)集加以支持。Kylin的主要特點包括:1).數(shù)百億數(shù)據(jù)行的查詢延遲需要保持在秒級別。2).能夠為使用SQL兼容性工具的用戶提供ANSISQL。3).完整的OLAP方案以實現(xiàn)各類高級功能。4)擁有對高基數(shù)與超大規(guī)模業(yè)務(wù)體系的支持能力。5)面向成千上萬用戶的高并發(fā)性處理能力。6)能夠處理TB乃至PB級別分析任務(wù)的分布式橫向擴展架構(gòu)。本輪迭代的技術(shù)設(shè)計中,采用Hadoop/Hbase/Hive實現(xiàn)能耗數(shù)據(jù)的數(shù)據(jù)倉庫功能,并對應(yīng)地部署Kylin提供OLAP查詢分析功能,以達到對動態(tài)能耗數(shù)據(jù)的準實時統(tǒng)計分析。本次開發(fā)中,通過封裝的Kylin需要遵循eWay2.0輪次迭代中規(guī)定的接口協(xié)議,以保證模塊之間的向上兼容性。圖40olap流程圖大體流程為:數(shù)據(jù)生成模塊FileManager監(jiān)聽二次采樣數(shù)據(jù),每小時生成一個數(shù)據(jù)文件Olap模塊每小時獲取一次數(shù)據(jù)文件并入庫hive,然后生成mapReduce任務(wù)進行立方創(chuàng)建創(chuàng)建完的立方文件入庫hbase,當olap收到查詢請求時查詢hbase并返回數(shù)據(jù)針對手動修復(fù)數(shù)據(jù)和數(shù)據(jù)著色的場景,數(shù)據(jù)生成文件模塊需要提供接口能夠主動去查詢mysql各個租戶庫中特定時間段內(nèi)的采用數(shù)據(jù),并生成對應(yīng)的數(shù)據(jù)文件提供給olap模塊進行重新統(tǒng)計針對數(shù)據(jù)修復(fù),數(shù)據(jù)生成模塊需要監(jiān)聽新的topic,實時監(jiān)聽所有需要修復(fù)的數(shù)據(jù),外部接口傳入的數(shù)據(jù)是每修改一條原數(shù)據(jù)就通知一條,需要在數(shù)據(jù)生成模塊對所有的傳入數(shù)據(jù)進行先清洗,然后保存,保存的數(shù)據(jù)為租戶+最小時間顆粒度的時間區(qū)間,以后每次傳入的數(shù)據(jù)如果已經(jīng)包含在緩存數(shù)據(jù)中,直接拋棄。到了指定的周期,將緩存中數(shù)據(jù)進行處理,直接生成對應(yīng)的數(shù)據(jù)文件。最終由統(tǒng)計模塊對數(shù)據(jù)進行處理刷新立方整個統(tǒng)計模塊由全量統(tǒng)計修改為增量統(tǒng)計,每次刷新立方需要帶上時間區(qū)間;另外數(shù)據(jù)修復(fù)后,需要有觸發(fā)機制,觸發(fā)已存在的立方重新刷新。數(shù)據(jù)性能分析:1.Hive入庫2000w數(shù)據(jù)入庫Timetaken:18.385seconds2.1100w數(shù)據(jù)2張維度表,8個維度創(chuàng)建立方6.4分鐘3.1.2億數(shù)據(jù)2張維度表,8個維度創(chuàng)建立方12.27分鐘4.2億數(shù)據(jù)5張維度表18個維度創(chuàng)建立方53.52mins5.查詢數(shù)據(jù)2億以上,olap引擎耗時在1秒以內(nèi)實時數(shù)據(jù)服務(wù)實時數(shù)據(jù)服務(wù)是云端系統(tǒng)的核心功能之一,包括實時數(shù)據(jù)庫和實時數(shù)據(jù)處理兩部分。實時數(shù)據(jù)庫作為實時數(shù)據(jù)存儲實體,為實時數(shù)據(jù)處理模塊提供數(shù)據(jù)訪問。實時數(shù)據(jù)庫采用內(nèi)存數(shù)據(jù)庫方式實現(xiàn),將實時數(shù)據(jù)按照一定數(shù)據(jù)結(jié)構(gòu)和索引機制存儲在內(nèi)存中。相對于磁盤數(shù)據(jù)庫,內(nèi)存數(shù)據(jù)庫將數(shù)據(jù)保存在內(nèi)存能夠極大地提高應(yīng)用的性能。實時數(shù)據(jù)處理模塊則通過總線接口模塊連接云端企業(yè)級總線,完成數(shù)據(jù)處理和數(shù)據(jù)交換功能。其中支持的實時數(shù)據(jù)處理功能包括數(shù)據(jù)清洗、虛擬點計算、實時超限告警產(chǎn)生、數(shù)據(jù)更新發(fā)布、二次采樣發(fā)布和實時數(shù)據(jù)查詢等。具體功能如下圖:圖41實時數(shù)據(jù)處理模塊結(jié)構(gòu)本輪迭代需要變更或完善的功能包括如下:(1)原模塊中集成開源項目JsonCPP對Json報文進行解析,操作較為簡便但是解析效率不高,尤其在處理海量密集的實時采樣數(shù)據(jù)時效率影響較大。根據(jù)已經(jīng)進行的測試表明,同樣的場景改用開源項目RapidJson實現(xiàn)Json的解析,效率約能提高50%-200%。因此本次開發(fā)中需要對原有Json解析部分進行改寫優(yōu)化。(2)由于實時數(shù)據(jù)處理模塊在接收實時采樣數(shù)據(jù)的同時,還需要向總線實時發(fā)送實時數(shù)據(jù)變更通知、實時數(shù)據(jù)越限告警通知和二次采樣結(jié)果等數(shù)據(jù)報文,大部分報文字節(jié)數(shù)較小但是報文總數(shù)較多,產(chǎn)生的大量網(wǎng)絡(luò)I/O,目前已經(jīng)成為發(fā)送瓶頸。本輪設(shè)計里要進行優(yōu)化,基本思路是將短時間內(nèi)產(chǎn)生的多個同類型的總線報文合并為一個報文發(fā)送,以便降低網(wǎng)絡(luò)I/O壓力,提高發(fā)送效率。(3)當數(shù)據(jù)源模型、邏輯設(shè)備模型、數(shù)據(jù)存儲模型等更新時,SQL服務(wù)引擎將變更情況發(fā)布到服務(wù)總線,實時數(shù)據(jù)處理模塊接收這些通知消息并主動檢索查詢以更新本地模型數(shù)據(jù)。其中數(shù)據(jù)源模型更新功能的結(jié)構(gòu)如圖42。首先,平臺級網(wǎng)關(guān)會向服務(wù)總線發(fā)布數(shù)據(jù)源更新通知(PubSQLDSModelUpdated)。然后,SQL服務(wù)引擎訂閱PubSQLDSModelUpdated消息,并對其進行解析,按tb_sensors中的格式導(dǎo)出生成Excel,PubSQLDSModelUpdated消息中沒有的屬性值置為空。接著,由自動化工程師提供數(shù)據(jù)填補相應(yīng)屬性值,再將填補后的Excel中的數(shù)據(jù)導(dǎo)入到關(guān)系數(shù)據(jù)庫中,并由SQL服務(wù)引擎將更新的數(shù)據(jù)源模型數(shù)據(jù)通過PubDSModelUpdated消息發(fā)布到服務(wù)總線。最后,實時數(shù)據(jù)服務(wù)通過訂閱并解析PubDSModelUpdated消息,來更新內(nèi)存數(shù)據(jù)庫中維護的數(shù)據(jù)源模型。邏輯設(shè)備模型和數(shù)據(jù)存儲模型的更新功能在2.2階段暫不做要求。圖42數(shù)據(jù)源模型更新功能結(jié)構(gòu)(4)現(xiàn)有實時數(shù)據(jù)庫(Redis)仍然采用的是單機方式,為了實現(xiàn)副本容錯和負載均衡,本輪迭代需要將實時數(shù)據(jù)庫部署為集群,并相應(yīng)修改模塊訪問方式以適應(yīng)集群。數(shù)據(jù)預(yù)測服務(wù)(許凱)圖42預(yù)測任務(wù)流程示意圖預(yù)測任務(wù)流程的示意圖如上圖42所示。租戶在頁面上配置任務(wù)并下發(fā),經(jīng)Interface接口、kafka總線和SQLEngine引擎入庫。數(shù)據(jù)預(yù)測服務(wù)與數(shù)據(jù)服務(wù)平臺內(nèi)部的企業(yè)服務(wù)總線連接,通過總線從SQL服務(wù)引擎加載全部的預(yù)測任務(wù),最大的預(yù)測步長為90天,然后針對每一個預(yù)測任務(wù),從OLAP服務(wù)引擎獲取對應(yīng)的歷史數(shù)據(jù),并根據(jù)指定的預(yù)測算法和配置的預(yù)測參數(shù)逐日定時進行數(shù)據(jù)預(yù)測計算,同時還需要比對該預(yù)測目標的標桿值,如超標則產(chǎn)生告警,并將預(yù)測結(jié)果通過總線提交給SQL服務(wù)引擎入庫存儲,對已經(jīng)存在的預(yù)測記錄要進行覆蓋更新。具體的定時預(yù)測流程圖如下圖43所示。圖43預(yù)測任務(wù)定時運行流程圖數(shù)據(jù)預(yù)測服務(wù)模塊的功能結(jié)構(gòu)如下圖44所示。圖44數(shù)據(jù)預(yù)測服務(wù)模塊功能結(jié)構(gòu)(1)總線訪問接口用于訪問總線消息數(shù)據(jù),包括通過總線加載預(yù)測任務(wù)、檢索查詢相應(yīng)歷史數(shù)據(jù)和發(fā)布預(yù)測結(jié)果數(shù)據(jù)(供SQL引擎存儲)。(2)預(yù)測任務(wù)線程池模塊管理多個并發(fā)(預(yù)創(chuàng)建)的線程,每個線程工作時運行一個特定的預(yù)測任務(wù),該線程獨立地通過總線訪問接口與總線進行通信,包括獲取輸入數(shù)據(jù)和返回輸出數(shù)據(jù)。預(yù)測任務(wù)處理完成后,任務(wù)線程自動掛起。(3)預(yù)測任務(wù)管理模塊根據(jù)任務(wù)定時計劃,將任務(wù)調(diào)度分派給空閑線程并恢復(fù)該線程運行。需要時還可以動態(tài)改變線程池中線程的個數(shù)。(4)任務(wù)/算法庫用于緩存預(yù)測任務(wù)的調(diào)度計劃和所使用的模型參數(shù)信息。任務(wù)/算法庫中的數(shù)據(jù)由預(yù)測任務(wù)管理模塊啟動時通過總線向SQL服務(wù)引擎模塊查詢并加載到內(nèi)存中。本系統(tǒng)的數(shù)據(jù)預(yù)測算法,在本輪迭代中僅實現(xiàn)歷史系數(shù)法、趨勢預(yù)測法和周期時間序列預(yù)測法,但是在結(jié)構(gòu)上支持今后靈活擴充其他算法。數(shù)據(jù)預(yù)測算法在本輪迭代中涉及三張表:算法庫表、預(yù)測任務(wù)表和預(yù)測結(jié)果表,其中預(yù)測結(jié)果表考慮按月分表,各表結(jié)構(gòu)的具體設(shè)計如下:算法庫表(algorithm_library)algorithm_keyalgorithm_namealgorithm_expressionalgorithm_enablealgorithm_key:算法的主鍵;algorithm_name:算法的名稱;algorithm_expression:算法表達式;algorithm_enable:是否啟用算法。預(yù)測任務(wù)表(prediction_task)pd_keypd_namecalc_keypd_enablepd_algorithmpd_steppd_profilepd_createtimepd_modifytimepd_key:主鍵;pd_name:用戶給預(yù)測任務(wù)起的名稱;calc_key:任務(wù)對象key;pd_enable:是否啟動預(yù)測任務(wù);pd_algorithm:預(yù)測算法的后臺名稱;pd_step:預(yù)測深度步長;pd_profile:算法應(yīng)用XML定義(備用)pd_createtime:任務(wù)創(chuàng)建時間,yyyy-MM-ddHH:mm:ss.mspd_modiytime:任務(wù)最后修改時間,yyyy-MM-ddHH:mm:ss.ms預(yù)測結(jié)果表(prediction_result)calc_keypredict_tim

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論