本發(fā)明涉及智能電網(wǎng)領(lǐng)域,特別是一種基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法。
背景技術(shù):
隨著智能電網(wǎng)的快速發(fā)展和應(yīng)用規(guī)模的不斷擴(kuò)大,電力系統(tǒng)交互的數(shù)據(jù)種類和通訊形式日趨增多,使得電力系統(tǒng)中智能變電站同調(diào)控主站,以及智能站內(nèi)各設(shè)備同監(jiān)控系統(tǒng)之間的模型與數(shù)據(jù)的接入和交互愈發(fā)復(fù)雜。為此福建電網(wǎng)公司提出《智能變電站與調(diào)控主站即插即用關(guān)鍵技術(shù)研究》。其中,主要的研究內(nèi)容為:以實現(xiàn)智能變電站與調(diào)控主站的即插即用交互為目標(biāo),建立面向服務(wù)的廣域信息交互基礎(chǔ)架構(gòu),研究開發(fā)以電網(wǎng)管理為核心的即插即用交互接口,實現(xiàn)典型應(yīng)用的服務(wù)化交互,提升調(diào)控主站與智能變電站之間的信息共享水平和業(yè)務(wù)協(xié)同能力,為變電站設(shè)備的自動接入、調(diào)控主站的功能提升及典型應(yīng)用的服務(wù)化改造提供實用化指導(dǎo)。其中面向服務(wù)的廣域信息交互基礎(chǔ)架構(gòu)為主子站間信息交互的典型應(yīng)用服務(wù)提供了架構(gòu)基礎(chǔ)。
在基于面向服務(wù)的廣域信息交互基礎(chǔ)架構(gòu)體系中,服務(wù)提供者和服務(wù)消費者之間的數(shù)據(jù)交互的完整性與可靠性對于電網(wǎng)系統(tǒng)的穩(wěn)定運行至關(guān)重要。因此如何保障服務(wù)消費者在主備切換過程中數(shù)據(jù)的可靠性,尤其是電力系統(tǒng)、測控保護(hù)裝置的重要數(shù)據(jù)不丟失將變得非常關(guān)鍵。因為電網(wǎng)的安全運行越來越依賴于對各種信息的有效分析和處理,一旦電力系統(tǒng)發(fā)生故障,尤其是大面積復(fù)雜故障時,調(diào)度員需要依靠來自電力系統(tǒng)、測控保護(hù)裝置的開關(guān)接點的變位數(shù)字量信息,以及事件時序(soe)信息,進(jìn)行事故分析和系統(tǒng)恢復(fù)。這些數(shù)據(jù)對于調(diào)度員分析故障、排查問題的重要性不言而喻。但是服務(wù)消費者的主備切換過程又是數(shù)據(jù)最容易發(fā)生丟失的階段。因此在面向服務(wù)的廣域信息交互基礎(chǔ)架構(gòu)體系中,務(wù)必要保障服務(wù)消費者在主備切換時數(shù)據(jù)的可靠性。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的是提出一種基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法,能夠在進(jìn)行主備切換時有效保障數(shù)據(jù)可靠性。
本發(fā)明采用以下方案實現(xiàn):一種基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法,具體包括以下步驟:
步驟s1:服務(wù)消費者包括主服務(wù)消費者與備服務(wù)消費者,主服務(wù)消費者除了處理請求到的數(shù)據(jù)外,還在實時庫中保存接收到的服務(wù)提供者的id和datasetid;
步驟s2:當(dāng)主服務(wù)消費者由于異常導(dǎo)致退出時,備服務(wù)消費者立即切換為當(dāng)前的主服務(wù)消費者,并接管服務(wù)請求的任務(wù);
步驟s3:在備服務(wù)消費者切換為當(dāng)前的主服務(wù)消費者時,需要從實時庫中讀取最新的服務(wù)提供者的id和datasetid,并將此datasetid發(fā)送到服務(wù)提供者;
步驟s4:服務(wù)提供者收到此datasetid后,將datasetid以后的數(shù)據(jù)集上送給當(dāng)前的主服務(wù)消費者。
進(jìn)一步地,所述步驟s1前還包括下述初始化步驟:
步驟s11:服務(wù)提供者創(chuàng)建一定大小的緩存,用于存放產(chǎn)生的數(shù)據(jù)集和對應(yīng)的數(shù)據(jù)集id,每個數(shù)據(jù)集對應(yīng)一個id號,即datasetid,其中每產(chǎn)生一個數(shù)據(jù)集,datasetid的值加1;
步驟s12:服務(wù)消費者以主備方式運行;
步驟s13:主服務(wù)消費者與服務(wù)提供者進(jìn)行服務(wù)交互,備服務(wù)消費者不與服務(wù)提供者進(jìn)行服務(wù)交互;主服務(wù)消費者處理服務(wù)請求和響應(yīng),備服務(wù)消費者與服務(wù)提供者進(jìn)行連接,但不處理數(shù)據(jù),時刻準(zhǔn)備切換為主服務(wù)消費者。
進(jìn)一步地,步驟s11中,每個數(shù)據(jù)集有多條數(shù)據(jù)項,數(shù)據(jù)集和對應(yīng)的datasetid建立有索引,用以進(jìn)行快速查找。
進(jìn)一步地,所述步驟s12具體為:服務(wù)消費者以一主一備或一主多備的方式運行,即系統(tǒng)中運行一個主服務(wù)消費者,同時運行一個或多個備服務(wù)消費者。
進(jìn)一步地,所述步驟s2具體為:當(dāng)主服務(wù)消費者由于異常而退出時,一個備服務(wù)消費者或多個備服務(wù)消費者中的一個備服務(wù)消費者作為當(dāng)前的主服務(wù)消費者運行,異常退出的主服務(wù)消費者重新啟動作為備服務(wù)消費者。
較佳的,本發(fā)明還提供了一種基于上文所述基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法的系統(tǒng),具體包括服務(wù)提供者、主服務(wù)消費者、備服務(wù)消費者;所述主服務(wù)消費者與所述服務(wù)提供者連接,并處理服務(wù)請求和響應(yīng);所述備服務(wù)消費者與所述服務(wù)提供者進(jìn)行連接,但不處理數(shù)據(jù),時刻準(zhǔn)備切換為主服務(wù)消費者。
其中,主服務(wù)消費者除了處理請求到的數(shù)據(jù)外,還在實時庫中保存接收到的服務(wù)提供者的id和datasetid;當(dāng)主服務(wù)消費者由于異常導(dǎo)致退出時,備服務(wù)消費者立即切換為當(dāng)前的主服務(wù)消費者,并接管服務(wù)請求的任務(wù);在備服務(wù)消費者切換為當(dāng)前的主服務(wù)消費者時,需要從實時庫中讀取最新的服務(wù)提供者的id和datasetid,并將此datasetid發(fā)送到服務(wù)提供者;服務(wù)提供者收到此datasetid后,將datasetid以后的數(shù)據(jù)集上送給當(dāng)前的主服務(wù)消費者。
進(jìn)一步地,所述被服務(wù)消費者有n個,其中n為大于等于1的正整數(shù)。
進(jìn)一步地,所述服務(wù)提供者包括n個,其中n為大于等于1的正整數(shù)。
進(jìn)一步地,包括一實時庫,所述實時庫為所有服務(wù)節(jié)點共享的網(wǎng)絡(luò)庫,用以存放服務(wù)提供者的id和datasetid。
進(jìn)一步地,服務(wù)消費者以一主一備或一主多備的方式運行,即運行一個主服務(wù)消費者,同時運行一個或多個備服務(wù)消費者。
與現(xiàn)有技術(shù)相比,本發(fā)明有以下有益效果:
1、本發(fā)明的服務(wù)消費者在與服務(wù)提供者進(jìn)行服務(wù)交互時,當(dāng)主服務(wù)消費者由于異常而退出時,一個備服務(wù)消費者或多個備服務(wù)消費者中的一個備服務(wù)消費者作為當(dāng)前的主服務(wù)消費者運行,異常退出的主服務(wù)消費者重新啟動作為備服務(wù)消費者,從而能夠保證服務(wù)消費者于主備系統(tǒng)切換期間產(chǎn)生的運行數(shù)據(jù)和報告信息不丟失。
2、本發(fā)明能夠保證電力系統(tǒng)、測控保護(hù)裝置的重要數(shù)據(jù)不丟失,從而保證電力運行系統(tǒng)的安全可靠運行。
附圖說明
圖1為本發(fā)明實施例的方法流程示意圖。
具體實施方式
下面結(jié)合附圖及實施例對本發(fā)明做進(jìn)一步說明。
如圖1所示,本實施例提供了一種基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法,具體包括以下步驟:
(1)服務(wù)提供者創(chuàng)建一定大小的緩存,用于存放產(chǎn)生的數(shù)據(jù)集和對應(yīng)的數(shù)據(jù)集id,每個數(shù)據(jù)集對應(yīng)一個id號(datasetid),其中每產(chǎn)生一個數(shù)據(jù)集,datasetid的值加1。
其中緩存大小可以靈活設(shè)置,以便能保存足夠多的數(shù)據(jù),每個數(shù)據(jù)集中有多條數(shù)據(jù)項,數(shù)據(jù)集和對應(yīng)的datasetid可以建立索引,以便能進(jìn)行快速查找。
(2)服務(wù)消費者以主備方式運行。
服務(wù)消費者可以以一主一備或一主多備的方式運行,即系統(tǒng)中運行一個主服務(wù)消費者,同時運行一個或多個備服務(wù)消費者,當(dāng)主服務(wù)消費者由于異常而退出時,一個備服務(wù)消費者或多個備服務(wù)消費者中的一個備服務(wù)消費者作為當(dāng)前的主服務(wù)消費者運行,異常退出的原主服務(wù)消費者重新啟動后作為備服務(wù)消費者,從而保證系統(tǒng)的穩(wěn)定性。
(3)主服務(wù)消費者與服務(wù)提供者進(jìn)行服務(wù)交互,備服務(wù)消費者不與服務(wù)提供者進(jìn)行服務(wù)交互。
主服務(wù)消費者處理服務(wù)請求和響應(yīng),備服務(wù)消費者與服務(wù)提供者進(jìn)行連接,但不處理數(shù)據(jù),時刻準(zhǔn)備切換為主服務(wù)消費者。
(4)主服務(wù)消費者除了處理請求到的數(shù)據(jù)外,還要在實時庫中保存接收到的服務(wù)提供者id和datasetid。
一個服務(wù)消費者可以請求多個服務(wù)提供者,每個服務(wù)提供者的datasetid有可能相同,所以需要額外保存服務(wù)提供者id。其中,實時庫是所有服務(wù)節(jié)點共享的網(wǎng)絡(luò)庫。
(5)當(dāng)主服務(wù)消費者由于異常導(dǎo)致退出時,備服務(wù)消費者立即切換為主服務(wù)消費者,并接管服務(wù)請求的任務(wù)。
當(dāng)主服務(wù)消費者由于異常而退出時,一個備用系統(tǒng),或多個備用系統(tǒng)中選出一個備用系統(tǒng)作為主服務(wù)消費者運行,異常退出的主服務(wù)消費者重新啟動作為備服務(wù)消費者,從而保證系統(tǒng)的穩(wěn)定性。
(6)在備服務(wù)消費者切換為主服務(wù)消費者時,需要從實時庫中讀取最新的服務(wù)提供者id和datasetid,并將此datasetid發(fā)送到服務(wù)提供者。
服務(wù)消費者向服務(wù)提供者發(fā)送最后收到的datasetid,可以認(rèn)為是向服務(wù)提供者確認(rèn)已經(jīng)收到的數(shù)據(jù)。在主備切換的過程中,服務(wù)提供者有可能會發(fā)送數(shù)據(jù)集和對應(yīng)的datasetid,這些數(shù)據(jù)集及對應(yīng)的datasetid沒有被服務(wù)消費者接受,從而不會保存到實時庫中。而從實時庫中讀取到datasetid是服務(wù)消費者最后處理的數(shù)據(jù)集對應(yīng)的datasetid。
(7)服務(wù)提供者收到此datasetid后,會將datasetid以后的數(shù)據(jù)集上送給服務(wù)消費者。
從而保證主備切換期間的數(shù)據(jù)不丟失。服務(wù)提供者在收到步驟(6)讀取的datasetid時,會上送此datasetid以后的數(shù)據(jù)集和對應(yīng)的datasetid。從而保證服務(wù)消費者在主備切換過程中不會丟失數(shù)據(jù)。
本實施例還提供了一種基于上文方法所述的基于上文所述基于廣域面向服務(wù)架構(gòu)的服務(wù)消費者在主備切換時保障數(shù)據(jù)可靠性的方法的系統(tǒng),具體包括服務(wù)提供者、主服務(wù)消費者、備服務(wù)消費者;所述主服務(wù)消費者與所述服務(wù)提供者連接,并處理服務(wù)請求和響應(yīng);所述備服務(wù)消費者與所述服務(wù)提供者進(jìn)行連接,但不處理數(shù)據(jù),時刻準(zhǔn)備切換為主服務(wù)消費者。
其中,主服務(wù)消費者除了處理請求到的數(shù)據(jù)外,還在實時庫中保存接收到的服務(wù)提供者的id和datasetid;當(dāng)主服務(wù)消費者由于異常導(dǎo)致退出時,備服務(wù)消費者立即切換為當(dāng)前的主服務(wù)消費者,并接管服務(wù)請求的任務(wù);在備服務(wù)消費者切換為當(dāng)前的主服務(wù)消費者時,需要從實時庫中讀取最新的服務(wù)提供者的id和datasetid,并將此datasetid發(fā)送到服務(wù)提供者;服務(wù)提供者收到此datasetid后,將datasetid以后的數(shù)據(jù)集上送給當(dāng)前的主服務(wù)消費者。
在本實施例中,所述被服務(wù)消費者有n個,其中n為大于等于1的正整數(shù)。
在本實施例中,所述服務(wù)提供者包括n個,其中n為大于等于1的正整數(shù)。
在本實施例中,包括一實時庫,所述實時庫為所有服務(wù)節(jié)點共享的網(wǎng)絡(luò)庫,用以存放服務(wù)提供者的id和datasetid。
在本實施例中,服務(wù)消費者以一主一備或一主多備的方式運行,即運行一個主服務(wù)消費者,同時運行一個或多個備服務(wù)消費者。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應(yīng)屬本發(fā)明的涵蓋范圍。