通用電力數(shù)據(jù)平臺的分布化方法和應用的制作方法
【專利摘要】一種通用電力數(shù)據(jù)平臺的分布化方法,方法以OSGi(OpenServiceGatewayinitiative,開放服務網(wǎng)關(guān))規(guī)范及WebService技術(shù)作為底層實現(xiàn)機制,通過引入典型的責任鏈設計模式,在服務消費者(Client)和服務提供者(Server)之間設置攔截器(Interceptor),并由后者自動攔截和轉(zhuǎn)發(fā)所有由Client發(fā)起的遠程服務調(diào)用,從而保證在實現(xiàn)平臺分布化的同時,盡量維持原有OSGi規(guī)范的編程模型,并使得電力數(shù)據(jù)集成平臺具備探測元數(shù)據(jù)變化并執(zhí)行相應業(yè)務操作的能力。
【專利說明】通用電力數(shù)據(jù)平臺的分布化方法和應用
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于電力系統(tǒng)數(shù)據(jù)管理領(lǐng)域,具體涉及一種通用電力數(shù)據(jù)平臺的分布化方法和應用。
【背景技術(shù)】
[0002]目前的電力數(shù)據(jù)集成方案主要通過SOA/WebService技術(shù)實現(xiàn)異構(gòu)電力數(shù)據(jù)的格式交換,這種方案的本質(zhì)是將待轉(zhuǎn)換電力數(shù)據(jù)作為參數(shù)封裝為SOAP調(diào)用消息并發(fā)送至目標應用,其對一些提供簡單服務的MIS系統(tǒng)支持較好,但在數(shù)據(jù)處理邏輯的透明分布化、數(shù)據(jù)變化事件的訂閱通知等方面尚有不足,而這些對于提升電力應用系統(tǒng)對數(shù)據(jù)變更的快速響應能力都是至關(guān)重要的。
[0003]還有一些方案通過P2P技術(shù)或面向服務的中間件模型來擴展標準的OSGi規(guī)范,雖然較好解決了分布式環(huán)境中遠程服務的發(fā)布和獲取的問題,但因?qū)SGi的標準編程模型做了較大改動,導致很難將方案直接應用于實際,同時還存在分布邏輯的侵入性問題。
【發(fā)明內(nèi)容】
[0004]為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種通用電力數(shù)據(jù)平臺的分布化方法,使分布化邏輯盡可能低地侵入原有的業(yè)務邏輯,并保證業(yè)務模塊在系統(tǒng)不間斷運行前提下的熱插拔和版本更新特性。
[0005]為了實現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案是:
一種通用電力數(shù)據(jù)平臺的分布化方法,包括:
基于OSGi的分布式擴展模型,在保持OSGi的原有編程模型的同時,使用平臺中立的WSDL/S0AP等服務描述和訪問機制,自動對來自于客戶端的調(diào)用請求進行攔截和轉(zhuǎn)發(fā)。
[0006]通用電力元數(shù)據(jù)變化事件的被動檢查與主動訂閱/通知,電力數(shù)據(jù)的持續(xù)變化將多次觸發(fā)某些業(yè)務邏輯,即電力系統(tǒng)中的事件源往往是系統(tǒng)內(nèi)部的數(shù)據(jù),而非位于系統(tǒng)外部的使用者或其他系統(tǒng)。因此,電力數(shù)據(jù)集成平臺必須具備探測元數(shù)據(jù)變化并執(zhí)行相應業(yè)務操作的能力。。
[0007]所述基于OSGi的分布式擴展模型:
步驟1:基于典型的責任鏈設計模式,在服務消費者(Client)和服務提供者(Server)之間引入攔截器(Interceptor);
步驟2:為OSGi模塊編寫對應的攔截器模塊,后者在獲取到OSGi容器上下文后,將攔截方法(dolntercept)封裝為OSGi服務并發(fā)布到注冊中心(ZooKeeper Server);
步驟3:通過OSGi R4.3規(guī)范新增的服務事件監(jiān)聽器鉤子(Service Event ListenerHook)實現(xiàn)對來自于Client的調(diào)用請求進行攔截,然后將目標方法與指定的織入配置(與Spring AOP的配置信息類似)進行匹配;
步驟4:通過編織鉤子(Weaving Hook)將匹配到的切面邏輯(以AspectJ的語法定義)織入dolntercept方法的合適位置; 步驟5:由攔截器轉(zhuǎn)發(fā)所有由服務消費者發(fā)起的遠程服務調(diào)用。
[0008]所述通用電力元數(shù)據(jù)變化事件的被動檢查方式:
步驟1:在通用電力數(shù)據(jù)平臺的管理層中引入任務調(diào)度器,后者為平臺中每個模塊實例啟動一個專門的監(jiān)聽線程;
步驟2:監(jiān)聽線程以固定時間間隔拉取(pull)與模塊實例關(guān)聯(lián)的元數(shù)據(jù),并檢查其是否與之前的一致,若有變化,則由任務管調(diào)度器回調(diào)相應的接口方法。
[0009]所述通用電力元數(shù)據(jù)變化事件的主動訂閱/通知方式:
步驟1:引入GUI編程中的事件驅(qū)動模型,以配置的方式為元數(shù)據(jù)實例指定一個或多個模塊實例作為數(shù)據(jù)變化事件的訂閱者;
步驟2:當發(fā)生寫數(shù)據(jù)操作時,元數(shù)據(jù)實例首先將變化的數(shù)據(jù)封裝為事件對象,然后把該事件對象主動推送(push)到各訂閱者的事件隊列中;
步驟3:任務調(diào)度器啟動一個全局的監(jiān)聽線程掃描各訂閱者的事件隊列,并通知作為事件訂閱者的相應模塊實例觸發(fā)相應的業(yè)務邏輯。
[0010]本發(fā)明與現(xiàn)有的技術(shù)相比,具有如下優(yōu)點:
(1),保持了 OSGi規(guī)范的原有編程模型。
[0011](2),使用了平臺中立的WSDL/S0AP等服務描述和訪問機制。
[0012](3),允許服務訪問請求和響應攜帶復雜的自定義數(shù)據(jù)類型。
[0013](4),透明的模塊分布化和電力元數(shù)據(jù)變化通知機制。
【專利附圖】
【附圖說明】
[0014]圖1為本發(fā)明的底層架構(gòu)與交互模型示意圖。
【具體實施方式】
[0015]下面結(jié)合附圖對本發(fā)明做進一步詳細說明。
[0016]如圖1所示,本發(fā)明為一種通用電力數(shù)據(jù)平臺的分布化方法,通過引入典型的責任鏈設計模式,在服務消費者(Client)和服務提供者(Server)之間設置攔截器(Interc印tor),并由后者自動攔截和轉(zhuǎn)發(fā)所有由Client發(fā)起的遠程服務調(diào)用,從而保證在實現(xiàn)平臺分布化的同時,使得分布化邏輯盡可能低地侵入原有的業(yè)務邏輯。
[0017]實施例1,將遠程輸入層的元數(shù)據(jù)通過本地輸出層導出到目標數(shù)據(jù)庫。
[0018]將遠程輸入層模塊實例發(fā)布到注冊中心;本地輸出層模塊(Meta2DB)實例查詢注冊中心獲取并訂閱相應元數(shù)據(jù);元數(shù)據(jù)發(fā)生變化時,主動回調(diào)Meta2DB實例的接口,并由與Meta2DB實例相對應的攔截器模塊織入所需的事務邏輯。
[0019]實施例2,從遠程輸入層中導入元數(shù)據(jù),經(jīng)本地元數(shù)據(jù)層實例處理后,將元數(shù)據(jù)導出到遠程輸出層。
[0020]將遠程輸入層模塊(Db2Meta)實例及遠程輸出層模塊(Meta2DB)實例發(fā)布到注冊中心;本地元數(shù)據(jù)層模塊(Metadata)實例查詢注冊中心獲取遠程Db2Meta實例的服務,并對得到的元數(shù)據(jù)進行過濾、組合、排序等處理;本地元數(shù)據(jù)層模塊(Metadata)實例查詢注冊中心獲取遠程Meta2DB實例的服務,并將處理后的元數(shù)據(jù)導出到目標數(shù)據(jù)庫。
【權(quán)利要求】
1.一種通用電力數(shù)據(jù)平臺的分布化方法,其特征在于,包括:基于OSGi規(guī)范的分布式擴展模型,在保持OSGi的原有編程模型的同時,使用平臺中立的WSDL/S0AP等服務描述和訪問機制,自動對來自于客戶端的調(diào)用請求進行攔截和轉(zhuǎn)發(fā);通用電力元數(shù)據(jù)變化事件的被動檢查與主動訂閱/通知,電力數(shù)據(jù)的持續(xù)變化將多次觸發(fā)某些業(yè)務邏輯,即電力系統(tǒng)中的事件源往往是系統(tǒng)內(nèi)部的數(shù)據(jù),而非位于系統(tǒng)外部的使用者或其他系統(tǒng); 因此,電力數(shù)據(jù)集成平臺必須具備探測元數(shù)據(jù)變化并執(zhí)行相應業(yè)務操作的能力。
2.根據(jù)權(quán)利要求1所述的通用電力數(shù)據(jù)平臺的分布化方法,其特征在于,所述基于OSGi的分布式擴展模型: 步驟1:基于典型的責任鏈設計模式,在服務消費者(Client)和服務提供者(Server)之間引入攔截器(Interceptor); 步驟2:為OSGi模塊編寫對應的攔截器模塊,后者在獲取到OSGi容器上下文后,將攔截方法(dolntercept)封裝為OSGi服務并發(fā)布到注冊中心(ZooKeeper Server); 步驟3:通過OSGi R4.3規(guī)范新增的服務事件監(jiān)聽器鉤子(Service Event ListenerHook)實現(xiàn)對來自于Client的調(diào)用請求進行攔截,然后將目標方法與指定的織入配置(與Spring AOP的配置信息類似)進行匹配; 步驟4:通過編織鉤子(Weaving Hook)將匹配到的切面邏輯(以AspectJ的語法定義)織入攔截方法dolntercept的合適位置; 步驟5:由攔截器轉(zhuǎn)發(fā)所有由服務消費者發(fā)起的遠程服務調(diào)用。
3.根據(jù)權(quán)利要求1所述的通用電力數(shù)據(jù)平臺的分布化方法,其特征在于,所述通用電力元數(shù)據(jù)變化事件的被動檢查方式: 步驟1:在通用電力數(shù)據(jù)平臺的管理層中引入任務調(diào)度器,后者為平臺中每個模塊實例啟動一個專門的監(jiān)聽線程; 步驟2:監(jiān)聽線程以固定時間間隔拉取(pull)與模塊實例關(guān)聯(lián)的元數(shù)據(jù),并檢查其是否與之前的一致,若有變化,則由任務管調(diào)度器回調(diào)相應的接口方法。
4.根據(jù)權(quán)利要求1所述的通用電力數(shù)據(jù)平臺的分布化方法,其特征在于,所述通用電力元數(shù)據(jù)變化事件的主動訂閱/通知方式: 步驟1:引入GUI編程中的事件驅(qū)動模型,以配置的方式為元數(shù)據(jù)實例指定一個或多個模塊實例作為數(shù)據(jù)變化事件的訂閱者; 步驟2:當發(fā)生寫數(shù)據(jù)操作時,元數(shù)據(jù)實例首先將變化的數(shù)據(jù)封裝為事件對象,然后把該事件對象主動推送(push)到各訂閱者的事件隊列中; 步驟3:任務調(diào)度器啟動一個全局的監(jiān)聽線程掃描各訂閱者的事件隊列,并通知作為事件訂閱者的相應模塊實例觸發(fā)相應的業(yè)務邏輯。
【文檔編號】G06Q50/06GK103761235SQ201310582343
【公開日】2014年4月30日 申請日期:2013年11月18日 優(yōu)先權(quán)日:2013年11月18日
【發(fā)明者】陳穎, 黃少偉, 胡平, 汪國武 申請人:蕪湖大學科技園發(fā)展有限公司