胡 平,王忠群,劉 濤,陳 穎,黃少偉
?
基于分布式OSGi的通用電力數(shù)據(jù)平臺(tái)
胡 平1,王忠群1,劉 濤1,陳 穎2,黃少偉2
(1. 安徽工程大學(xué)計(jì)算機(jī)與信息學(xué)院,安徽 蕪湖 241000;2. 清華大學(xué)電機(jī)工程與應(yīng)用電子技術(shù)系電力系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100084)
提升智能電網(wǎng)中各種異構(gòu)應(yīng)用軟件間的數(shù)據(jù)共享和功能交互能力,是電力企業(yè)亟需解決的問(wèn)題。而依靠標(biāo)準(zhǔn)化數(shù)據(jù)模型、SOA等技術(shù)的傳統(tǒng)交互方案對(duì)模塊運(yùn)行期熱插拔、分布式編程模型低侵入性和電力數(shù)據(jù)持續(xù)變化的支持度不足。為此,以電力數(shù)據(jù)為中心,從軟件架構(gòu)角度,將電力應(yīng)用解耦為數(shù)據(jù)總線(xiàn)和數(shù)據(jù)插件,提出一種基于分布式開(kāi)放式服務(wù)網(wǎng)關(guān)(OSGi)的通用電力數(shù)據(jù)平臺(tái)。闡述平臺(tái)拓?fù)浼軜?gòu)、分布式OSGi的擴(kuò)展方法及通用電力元數(shù)據(jù)模型,給出平臺(tái)在福建電網(wǎng)的實(shí)施方法,并對(duì)典型業(yè)務(wù)模塊的功能及并發(fā)性能進(jìn)行測(cè)試,結(jié)果表明,該平臺(tái)能有效降低異構(gòu)電力應(yīng)用間的數(shù)據(jù)共享和功能交互難度。
智能電網(wǎng);電力數(shù)據(jù)平臺(tái);開(kāi)放式服務(wù)網(wǎng)關(guān);元數(shù)據(jù);數(shù)據(jù)鏈;面向切面編程
隨著電力自動(dòng)化水平的提高以及智能電網(wǎng)[1]的興起,如何提升現(xiàn)有各種電力應(yīng)用軟件間的數(shù)據(jù)共享和功能交互能力,以應(yīng)對(duì)規(guī)模和復(fù)雜程度日趨增加的電力業(yè)務(wù),是電力企業(yè)亟需解決的問(wèn)題。然而,目前各類(lèi)電力應(yīng)用采用的數(shù)據(jù)模型通常互有差異,盡管工業(yè)界試圖通過(guò)推行IEC 61970/ CIM[2]等標(biāo)準(zhǔn)數(shù)據(jù)模型以規(guī)范不同電力應(yīng)用的數(shù)據(jù)格式,但往往因地區(qū)實(shí)際差異較大而無(wú)法重用已有軟件模型。此外,對(duì)現(xiàn)有眾多電力數(shù)據(jù)模型進(jìn)行標(biāo)準(zhǔn)化改造以及由此引發(fā)的業(yè)務(wù)代碼重構(gòu)工作量也是無(wú)法忽視的。
除數(shù)據(jù)模型標(biāo)準(zhǔn)化外,一些研究[3]通過(guò)SOA技術(shù)將電力數(shù)據(jù)封裝為SOAP消息并公開(kāi)服務(wù)接口,其在一定程度上解決了異構(gòu)應(yīng)用的交互問(wèn)題,但在復(fù)雜業(yè)務(wù)模塊的透明分布化以及對(duì)電力數(shù)據(jù)持續(xù)變化的支持度等方面尚有不足。另一方面,受限于傳統(tǒng)的編程模型,目前的交互方案幾乎不具備在不間斷運(yùn)行的前提下對(duì)部分功能模塊進(jìn)行熱插拔和版本更新的特性,同時(shí),企業(yè)也很難根據(jù)自身需求對(duì)功能模塊進(jìn)行較細(xì)粒度的定制或二次開(kāi)發(fā),這些都嚴(yán)重降低了電力企業(yè)對(duì)需求變更的快速響應(yīng)能力。
本文以電力數(shù)據(jù)為中心,從軟件架構(gòu)的角度,通過(guò)將電力應(yīng)用解耦為數(shù)據(jù)總線(xiàn)和數(shù)據(jù)插件,提出一種基于分布式開(kāi)放式服務(wù)網(wǎng)關(guān)(Open Service Gateway initiative, OSGi)規(guī)范[4-5]的通用電力數(shù)據(jù)平臺(tái)。
通用電力數(shù)據(jù)平臺(tái)由數(shù)據(jù)總線(xiàn)(DataBus)和數(shù)據(jù)插件(DataPlug)構(gòu)成,如圖1所示。
DataPlug代表部署于企業(yè)中的各種電力應(yīng)用節(jié)點(diǎn),它們是電力數(shù)據(jù)的來(lái)源,通過(guò)網(wǎng)絡(luò)彼此連接;DataBus負(fù)責(zé)管理各DataPlug間的數(shù)據(jù)交互,并向外公開(kāi)統(tǒng)一的數(shù)據(jù)服務(wù)接口和展示框架,DataPlug可通過(guò)這些接口獲取其他Data Plug提供的服務(wù)。
圖1 通用電力數(shù)據(jù)平臺(tái)拓?fù)浼軜?gòu)
DataBus定義的數(shù)據(jù)服務(wù)接口包括:(1)數(shù)據(jù)獲?。簭母鞣N數(shù)據(jù)源獲取數(shù)據(jù),并解析成為通用的、中立的元數(shù)據(jù); (2)數(shù)據(jù)處理:對(duì)元數(shù)據(jù)進(jìn)行檢索、過(guò)濾、分解和轉(zhuǎn)換等操作;(3)數(shù)據(jù)管理:在分布式環(huán)境下管理數(shù)據(jù)的發(fā)布、同步,以及數(shù)據(jù)變化事件的訂閱和通知。
新增應(yīng)用節(jié)點(diǎn)應(yīng)實(shí)現(xiàn)上述部分接口并向DataBus注冊(cè),以成為一個(gè)新的DataPlug。DataBus不僅解耦了各DataPlug間的依賴(lài),且統(tǒng)一了它們的服務(wù)調(diào)用方式。不同DataPlug的實(shí)例可自由組合并通過(guò)DataBus提供的接口裝配為一個(gè)新的業(yè)務(wù)流程,從而有效提升了平臺(tái)的可定制和可擴(kuò)展性。
通用電力數(shù)據(jù)平臺(tái)工作于分布式環(huán)境下,而傳統(tǒng)的分布式編程模型在模塊級(jí)運(yùn)行期熱插拔和職責(zé)劃分等方面尚有一些不足,而這正是OSGi規(guī)范所關(guān)注的問(wèn)題。OSGi規(guī)范為軟件系統(tǒng)提供了一種基于構(gòu)件的、面向服務(wù)的開(kāi)發(fā)機(jī)制和運(yùn)行環(huán)境,其核心思想是使軟件構(gòu)件(在OSGi中稱(chēng)為Bundle)的部署、啟停、更新及卸載等具備高度動(dòng)態(tài)性。近年來(lái),越來(lái)越多的應(yīng)用開(kāi)始采用OSGi作為底層架構(gòu)來(lái)開(kāi)發(fā)和部署,其中典型代表如Eclipse。
目前,兼容OSGi R4.2版本規(guī)范的參考實(shí)現(xiàn)主要有Eclipse Equinox、Apache D-OSGi及JBoss OSGi等,其中以Apache D-OSGi的發(fā)展最為活躍。D-OSGi源于Apache的CXF[6]項(xiàng)目,其核心是通過(guò)Web Service技術(shù)實(shí)現(xiàn)跨虛擬機(jī)的OSGi服務(wù)調(diào)用,相較于其他分布式OSGi的參考實(shí)現(xiàn),D-OSGi具有以下特點(diǎn):(1)保持OSGi的原有編程模型; (2)使用平臺(tái)中立的WSDL/SOAP等服務(wù)描述和訪問(wèn)機(jī)制;(3)服務(wù)訪問(wèn)請(qǐng)求和響應(yīng)允許攜帶復(fù)雜的自定義數(shù)據(jù)類(lèi)型;(4)提供了輕量級(jí)容器Felix的支持?;谝陨咸攸c(diǎn),本文平臺(tái)選用了D-OSGi作為分布式編程模型,即各DataPlug以Bundle的形式將自身服務(wù)注冊(cè)到OSGi中心服務(wù)器,供其他遠(yuǎn)程DataPlug訪問(wèn)。
電力應(yīng)用涉及的特殊業(yè)務(wù)決定了平臺(tái)包含的多個(gè)DataPlug間不僅僅是簡(jiǎn)單的功能調(diào)用關(guān)系,例如,數(shù)據(jù)的每次變化都將觸發(fā)其所有監(jiān)聽(tīng)者執(zhí)行某個(gè)操作、多個(gè)DataPlug實(shí)例在訪問(wèn)共享資源時(shí)需要同步控制,任務(wù)調(diào)度器必須協(xié)調(diào)某一任務(wù)中多個(gè)并發(fā)線(xiàn)程的狀態(tài)以避免出現(xiàn)邏輯錯(cuò)誤等。若遵循標(biāo)準(zhǔn)的分布式OSGi規(guī)范實(shí)現(xiàn)這些邏輯,不僅代碼分散、冗余度高,而且會(huì)因非功能性邏輯對(duì)業(yè)務(wù)邏輯的侵入而嚴(yán)重降低平臺(tái)的可擴(kuò)展性。
借助面向切面編程(Aspect-oriented Programming, AOP)思想能較好地滿(mǎn)足上述特殊需求[7-8],考慮到標(biāo)準(zhǔn)的D-OSGi交互模型缺乏對(duì)關(guān)注點(diǎn)分離和切面織入的支持能力,有必要對(duì)其進(jìn)行面向切面擴(kuò)展,如圖2所示。
圖2 D-OSGi的面向切面擴(kuò)展
擴(kuò)展方法基于典型的責(zé)任鏈設(shè)計(jì)模式,通過(guò)在服務(wù)消費(fèi)者(Client)和服務(wù)提供者(Server)之間引入攔截器(Interceptor),并由后者自動(dòng)攔截和轉(zhuǎn)發(fā)所有由Client發(fā)起的遠(yuǎn)程服務(wù)調(diào)用[9-10]。為獲取OSGi容器上下文,Interceptor本身也是以Bundle的形式出現(xiàn),其提供的攔截方法(doIntercept)被封裝為OSGi服務(wù)并發(fā)布到注冊(cè)中心(Zoo Keeper Server)。
Interceptor通過(guò)2011年4月發(fā)布的OSGi R4.3規(guī)范中新增的服務(wù)事件監(jiān)聽(tīng)器鉤子(Service Event Listener Hook)實(shí)現(xiàn)調(diào)用攔截[11],將目標(biāo)方法與指定的織入配置(與Spring AOP的配置信息類(lèi)似)進(jìn)行匹配,通過(guò)編織鉤子(WeavingHook)將匹配到的橫切關(guān)注點(diǎn)邏輯(以AspectJ的語(yǔ)法定義)織入doIntercept方法的合適位置,最后將Client原來(lái)的調(diào)用請(qǐng)求轉(zhuǎn)發(fā)到目標(biāo)方法。
作為通用電力數(shù)據(jù)平臺(tái)的數(shù)據(jù)總線(xiàn),如何對(duì)各類(lèi)異構(gòu)電力數(shù)據(jù)進(jìn)行同構(gòu)化處理,并以一種與電力業(yè)務(wù)無(wú)關(guān)的結(jié)構(gòu)加以描述是DataBus首先要解決的問(wèn)題。本文設(shè)計(jì)了一種通用的電力元數(shù)據(jù)(metadata)模型,其將各種標(biāo)準(zhǔn)和格式的電力數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一的3層Map結(jié)構(gòu),如圖3所示。
圖3 基于3層Map的電力元數(shù)據(jù)
元數(shù)據(jù)以最原始的鍵值對(duì)來(lái)描述電力數(shù)據(jù),其優(yōu)點(diǎn)是能表達(dá)和交換任何標(biāo)準(zhǔn)的電力數(shù)據(jù)。在3層Map中,頂層Key存儲(chǔ)數(shù)據(jù)的Tag;中層Key存儲(chǔ)Tag下數(shù)據(jù)行的唯一標(biāo)識(shí)(可由用戶(hù)配置);底層Key則存放數(shù)據(jù)的列名稱(chēng)。此外,為區(qū)分同一OSGi容器中可能存在的多個(gè)元數(shù)據(jù)實(shí)例,每個(gè)實(shí)例都應(yīng)向容器注冊(cè)一個(gè)唯一標(biāo)識(shí)。若平臺(tái)需要支持某種新格式的電力數(shù)據(jù),只需編寫(xiě)負(fù)責(zé)解析相應(yīng)格式文件的DataPlug并向平臺(tái)輸入層注冊(cè)即可。
具體到Java平臺(tái),可繼承java.util.Map接口的實(shí)現(xiàn)類(lèi)TreeMap(支持按Key排序,以滿(mǎn)足某些要求迭代順序與插入順序一致的業(yè)務(wù))作為元數(shù)據(jù)的類(lèi)型,如TreeMap
元數(shù)據(jù)模型弱化了數(shù)據(jù)的類(lèi)型,其實(shí)質(zhì)是一種結(jié)構(gòu)化的數(shù)據(jù),故無(wú)法對(duì)電力業(yè)務(wù)中的各種概念進(jìn)行領(lǐng)域建模并確定對(duì)應(yīng)實(shí)體類(lèi),這無(wú)疑與今天占絕對(duì)主導(dǎo)地位的面向?qū)ο筌浖O(shè)計(jì)思想背道而馳。另一方面,元數(shù)據(jù)基于的Map接口僅支持get/put等簡(jiǎn)單方法,在編寫(xiě)需要對(duì)大量數(shù)據(jù)進(jìn)行迭代和CRUD操作的DataPlug時(shí),以具體的Tag、Id或Key作為參數(shù)頻繁調(diào)用get/put方法并造型為所需類(lèi)型的方式,不僅會(huì)降低DataPlug開(kāi)發(fā)人員對(duì)電力業(yè)務(wù)的關(guān)注度,而且所寫(xiě)代碼的可讀性通常也較差,不利于業(yè)務(wù)的擴(kuò)展。
本文提出一種將元數(shù)據(jù)模型分別映射為對(duì)象以及關(guān)系模型的方法。前者根據(jù)映射配置信息,利用虛擬機(jī)字節(jié)碼生成工具為元數(shù)據(jù)中各Tag生成對(duì)應(yīng)POJO代理類(lèi)及其對(duì)應(yīng)DAO類(lèi)(包含CRUD邏輯);后者則提供了類(lèi)SQL的元數(shù)據(jù)查詢(xún)語(yǔ)言(Metadata Query Language, MQL)語(yǔ)法支持,使得DataPlug的編寫(xiě)者可以像以SQL訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)那樣對(duì)元數(shù)據(jù)進(jìn)行CRUD、排序和遍歷等操作。
具體到Java EE平臺(tái),可借助javassist和antlr等第三方Jar實(shí)現(xiàn)上述映射。此外,在對(duì)元數(shù)據(jù)進(jìn)行寫(xiě)操作時(shí),為保證完整性,攔截器Bundle應(yīng)自動(dòng)為這些操作織入相關(guān)的事務(wù)提交和回滾邏輯。
電力應(yīng)用相較于其他領(lǐng)域業(yè)務(wù)系統(tǒng)的一個(gè)重要區(qū)別是電力數(shù)據(jù)的持續(xù)變化將多次觸發(fā)某些業(yè)務(wù)邏輯,換句話(huà)說(shuō),電力系統(tǒng)中的事件源往往是系統(tǒng)內(nèi)部的數(shù)據(jù),而非位于系統(tǒng)外部的使用者或其他系統(tǒng)。因此,通用電力數(shù)據(jù)平臺(tái)必須具備探測(cè)元數(shù)據(jù)變化并執(zhí)行相應(yīng)業(yè)務(wù)操作的能力,具體包含以下2種方式:
(1)定時(shí)檢查:在任務(wù)調(diào)度器中為每個(gè)DataPlug實(shí)例啟動(dòng)一個(gè)專(zhuān)門(mén)的監(jiān)聽(tīng)線(xiàn)程,該線(xiàn)程以固定時(shí)間間隔主動(dòng)拉取(Pull)與DataPlug實(shí)例關(guān)聯(lián)的元數(shù)據(jù),并檢查其是否與之前一致,若有變化,則由任務(wù)管調(diào)度器回調(diào)相應(yīng)的接口方法。
(2)變化通知:通過(guò)主題/觀察者設(shè)計(jì)模式以及GUI編程中的事件驅(qū)動(dòng)模型,以配置的方式為元數(shù)據(jù)實(shí)例指定一個(gè)或多個(gè)DataPlug實(shí)例作為數(shù)據(jù)變化事件的訂閱者。當(dāng)發(fā)生寫(xiě)數(shù)據(jù)操作時(shí),元數(shù)據(jù)實(shí)例首先將變化的數(shù)據(jù)封裝為事件對(duì)象,然后推送(Push)該事件對(duì)象到各訂閱者的事件隊(duì)列。為觸發(fā)作為事件訂閱者的DataPlug實(shí)例,任務(wù)調(diào)度器需要啟動(dòng)一個(gè)全局監(jiān)聽(tīng)線(xiàn)程以?huà)呙韪饔嗛喺叩氖录?duì)列,并回調(diào)相應(yīng)DataPlug的接口方法。
因平臺(tái)數(shù)據(jù)全部來(lái)自于第三方的電力應(yīng)用(變化時(shí)機(jī)無(wú)法預(yù)期),故定時(shí)檢查無(wú)法捕獲發(fā)生在相鄰2個(gè)檢查點(diǎn)之間的連續(xù)變化。另一方面,因定時(shí)檢查含有元數(shù)據(jù)比較邏輯,且各DataPlug實(shí)例都對(duì)應(yīng)一個(gè)監(jiān)聽(tīng)線(xiàn)程,故其性能明顯不及變化通知方式。
本文平臺(tái)一期已于2012年底在福建電網(wǎng)上線(xiàn),共計(jì) 61個(gè)Bundle,其中24個(gè)構(gòu)成DataBus,其余為DataPlug,涉及業(yè)務(wù)包括電網(wǎng)解列、薄弱環(huán)節(jié)識(shí)別、狀態(tài)估計(jì)、模擬數(shù)據(jù)產(chǎn)生等。平臺(tái)的邏輯層劃分如圖4所示。以上各層均有相應(yīng)的管理邏輯,用于控制本層Bundle實(shí)例的生命周期及任務(wù)調(diào)度。管理邏輯涉及的細(xì)節(jié)對(duì)數(shù)據(jù)平臺(tái)的使用者呈透明,各層Bundle的編寫(xiě)者只需配置本Bundle的觸發(fā)條件和必要的映射信息。各層Bundle的一個(gè)或多個(gè)實(shí)例可通過(guò)指定關(guān)聯(lián)端實(shí)例名稱(chēng)的方式彼此連接以形成數(shù)據(jù)鏈,并通過(guò)RIA技術(shù)以可視化的方式呈現(xiàn)給用戶(hù)。在觸發(fā)條件被滿(mǎn)足時(shí),由任務(wù)調(diào)度邏輯通過(guò)反射機(jī)制自動(dòng)回調(diào)Bundle的特定方法,從而實(shí)現(xiàn)跨層的Bundle交互并最終完成一次完整的業(yè)務(wù)操作。
圖4 通用電力數(shù)據(jù)平臺(tái)的邏輯層劃分
本文數(shù)據(jù)平臺(tái)基于JDK 6.0+IDEA 12開(kāi)發(fā),并以Maven作為模塊版本管理插件;OSGi服務(wù)框架采用Apache CXF D-OSGi 1.4,OSGi容器為Felix 4.2,Web容器為Jetty 9.0.1。
在功能正確性方面,選取了位于平臺(tái)處理層的State Estimator(電網(wǎng)狀態(tài)估計(jì))作為測(cè)試目標(biāo),其數(shù)據(jù)鏈如圖5(a)所示:(1)讀入網(wǎng)架和量測(cè)數(shù)據(jù)并分別解析為元數(shù)據(jù);(2)執(zhí)行開(kāi)關(guān)估計(jì),找出可疑開(kāi)關(guān)并修正;(3)執(zhí)行拓?fù)浞治觯治鲭娋W(wǎng)拓?fù)浣Y(jié)構(gòu),得到拓?fù)鋶u數(shù)據(jù);(4)執(zhí)行狀態(tài)估計(jì),計(jì)算得到電網(wǎng)狀態(tài)估計(jì)值;(5)查看修正后的元數(shù)據(jù)。圖5(b)為結(jié)果元數(shù)據(jù)界面,經(jīng)程序比較,與原本地C++應(yīng)用的計(jì)算結(jié)果一致。此外,當(dāng)輸入層的網(wǎng)架和量測(cè)數(shù)據(jù)變化時(shí),將自動(dòng)觸發(fā)位于處理層的3個(gè)DataPlug重新計(jì)算,驗(yàn)證了平臺(tái)可行性。
圖5 平臺(tái)功能性測(cè)試
在并發(fā)性能方面,選取位于平臺(tái)輸出層的Meta2DB(將元數(shù)據(jù)導(dǎo)出到關(guān)系數(shù)據(jù)庫(kù)的DataPlug,包含自動(dòng)建庫(kù)/表邏輯)的多個(gè)并發(fā)實(shí)例,分別導(dǎo)出本地和遠(yuǎn)程元數(shù)據(jù)作為測(cè)試目標(biāo),測(cè)試數(shù)據(jù)源為福建電網(wǎng)2011年12月QS格式數(shù)據(jù) (14個(gè)Tag,數(shù)據(jù)總量為22 157條,元數(shù)據(jù)序列化文件大小為5.35 MB)。具體測(cè)試結(jié)果如圖6所示。
圖6 數(shù)據(jù)平臺(tái)并發(fā)性能測(cè)試結(jié)果
為降低硬件瓶頸對(duì)測(cè)試準(zhǔn)確性的影響,并發(fā)性能測(cè)試使用了5臺(tái)高性能PC機(jī),每個(gè)均啟動(dòng)了數(shù)量不等的并發(fā)實(shí)例;數(shù)據(jù)庫(kù)服務(wù)器(Oracle 10g企業(yè)版)部署于IBM System x3650 M4,并通過(guò)千兆以太網(wǎng)與各PC機(jī)連接。不同并發(fā)實(shí)例數(shù)下的測(cè)試結(jié)果表明:(1)無(wú)論是本地還是遠(yuǎn)程電力數(shù)據(jù),數(shù)據(jù)平臺(tái)均提供了較好的時(shí)間響應(yīng);(2)受元數(shù)據(jù)變化頻率、虛擬機(jī)線(xiàn)程調(diào)度時(shí)機(jī)以及DataPlug所在節(jié)點(diǎn)的繁忙程度影響,單節(jié)點(diǎn)上的并發(fā)實(shí)例較多(12個(gè)以上)時(shí),單次任務(wù)的耗時(shí)將顯著增加,但仍可接受。
如何提升不同電力應(yīng)用系統(tǒng)間的異構(gòu)數(shù)據(jù)共享和功能交互能力是構(gòu)建智能電網(wǎng)必須解決的問(wèn)題。本文從電力數(shù)據(jù)和軟件架構(gòu)的角度,通過(guò)將電力應(yīng)用解耦為數(shù)據(jù)總線(xiàn)和數(shù)據(jù)插件,提出了一種基于分布式OSGi的通用電力數(shù)據(jù)平臺(tái),并設(shè)計(jì)了一種能表達(dá)和交換任意格式的電力數(shù)據(jù),同時(shí)具備探測(cè)數(shù)據(jù)變化并觸發(fā)相應(yīng)業(yè)務(wù)能力的電力元數(shù)據(jù)模型。通過(guò)對(duì)典型電力業(yè)務(wù)的功能及并發(fā)性能測(cè)試,驗(yàn)證了該平臺(tái)在分布式編程模型的低侵入性、電力業(yè)務(wù)模塊的動(dòng)態(tài)熱插拔以及對(duì)數(shù)據(jù)變化事件的支持能力等方面均能較好地滿(mǎn)足異構(gòu)電力應(yīng)用間的數(shù)據(jù)共享和交互需求。下一步將繼續(xù)完善數(shù)據(jù)平臺(tái),并對(duì)計(jì)算密集型電力業(yè)務(wù)的計(jì)算任務(wù)分派、并行計(jì)算以及集群環(huán)境下的負(fù)載均衡、失效DataPlug主動(dòng)遷移策略[12]等方面做進(jìn)一步的研究。
[1] Farhangi H. The Path of the Smart Grid[J]. IEEE Power and Energy Magazine, 2010, 8(1): 18-28.
[2] 丁 明, 張征凱, 畢 銳. 面向分布式發(fā)電系統(tǒng)的CIM擴(kuò)展[J]. 電力系統(tǒng)自動(dòng)化, 2008, 32(20): 83-87.
[3] 唐躍中, 曹晉彰, 郭創(chuàng)新, 等. 電網(wǎng)企業(yè)基于面向服務(wù)架構(gòu)的應(yīng)用集成研究與實(shí)現(xiàn)[J]. 電力系統(tǒng)自動(dòng)化, 2008, (14): 50-54.
[4] OSGi Alliance. OSGi Service Platform Release 4.3[EB/OL]. (2011-06-17). http://www.osgi.org/Release4.
[5] Redondo R, Vilas A, Cabrer M. Enhancing Residential Gateways: OSGi Service Composition[J]. IEEE Transactions on Consumer Electronics, 2007, 53(1): 87-95.
[6] Apache Software Foundation. The CXF Project[EB/OL]. (2013-05-24). http://cxf.apache.org/distributed-osgi.html.
[7] The AspectJ Project. AspectJ 5 Developer’s Notebook[EB/OL]. (2012-03-26). http://www.eclipse.org/aspectj.
[8] Alexanderson R. Aspect Oriented Software Implemented Node Level Fault Tolerance[C]//Proc. of the 9th International Conference on Software Engineering and Applications. [S. l.]: ACM Press, 2007: 57-74.
[9] 張 仕, 黃林鵬. 基于OSGi的服務(wù)動(dòng)態(tài)演化[J]. 軟件學(xué)報(bào), 2008, 19(5): 1201-1211.
[10] 馮志宇, 黃林鵬. 基于OSGi的兩層服務(wù)模型[J]. 計(jì)算機(jī)應(yīng)用研究, 2009, 26(7): 2590-2592.
[11] 史殿習(xí), 吳元立, 丁 博, 等. StarOSGi: 一種OSGi分布式擴(kuò)展中間件[J]. 計(jì)算機(jī)科學(xué), 2011, 38(1): 162-165.
[12] 李長(zhǎng)云, 李 瑩, 吳 建, 等. 一個(gè)面向服務(wù)的支持動(dòng)態(tài)演化的軟件模型[J]. 計(jì)算機(jī)學(xué)報(bào), 2006, 29(7): 1020-1028.
編輯 顧逸斐
General Electric Data Platform Based on Distributed OSGi
HU Ping1, WANG Zhong-qun1, LIU Tao1, CHEN Ying2, HUANG Shao-wei2
(1. School of Computer and Information, Anhui Polytechnic University, Wuhu 241000, China; 2. State Key Lab of Power Systems, Department of Electrical Engineering, Tsinghua University, Beijing 100084, China)
Power companies need to solve the problem that how to improve the capabilities of data sharing and interoperation between heterogeneous applications in smart grid. Some solutions based on data model standardization or SOA are inadequate in terms of runtime modules hotplug, invasion of distributed programming model and continuous data change supporting. This paper decouples a power application software into data bus and data plugs from the perspective of electric data and software architecture, proposes a general electric data platform based on distributed Open Service Gateway initiative(OSGi), and then discusses the topological structure of data platform, distributed OSGi extension model and electric metadata model. The implementation approach of data platform in Fujian power grid is presented, and some tests are done for typical modules’ functionality and concurrent performance. The results show that the platform can reduce the difficulty of data sharing and interoperation between heterogeneous applications effectively.
smart grid; electric power data platform; Open Service Gateway initiative(OSGi); metadata; data chain; Aspect-oriented Programming(AOP)
1000-3428(2014)03-0071-05
A
TP393
國(guó)家自然科學(xué)基金資助項(xiàng)目(61300170);安徽省教育廳自然科學(xué)基金資助項(xiàng)目(KJ2013A040);清華大學(xué)盧強(qiáng)院士安徽省工作站基金資助項(xiàng)目。
胡 平(1979-),男,講師、碩士,主研方向:分布式計(jì)算,軟件體系結(jié)構(gòu);王忠群,教授;劉 濤,副教授、碩士; 陳 穎,副教授、博士;黃少偉,講師、博士。
2013-11-20
2013-12-16 E-mail:JavaFounder@gmail.com
10.3969/j.issn.1000-3428.2014.03.015