国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      雙機(jī)冗余系統(tǒng)的冗余管理及切換方法

      文檔序號(hào):6437486閱讀:844來(lái)源:國(guó)知局
      專利名稱:雙機(jī)冗余系統(tǒng)的冗余管理及切換方法
      技術(shù)領(lǐng)域
      本發(fā)明屬于工業(yè)自動(dòng)化領(lǐng)域,具體地說(shuō),涉及雙機(jī)冗余系統(tǒng),更具體地說(shuō),是涉及一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法。
      背景技術(shù)
      冗余技術(shù)是計(jì)算機(jī)系統(tǒng)可靠性設(shè)計(jì)中比較常用的一種技術(shù),是提高計(jì)算機(jī)系統(tǒng)可靠性的有效方法。在工業(yè)自動(dòng)化系統(tǒng)中,為了使系統(tǒng)長(zhǎng)期穩(wěn)定可靠地運(yùn)行,常使用某種形式的冗余系統(tǒng),其中用得最多的是雙機(jī)冗余系統(tǒng)。在雙機(jī)冗余系統(tǒng)中,包括有兩臺(tái)硬件配置相同的計(jì)算機(jī),兩者通過(guò)網(wǎng)絡(luò)相連,運(yùn)行相同的軟件,并實(shí)現(xiàn)數(shù)據(jù)的共享和同步。運(yùn)行時(shí),兩臺(tái)計(jì)算機(jī)中的其中一臺(tái)作為工作機(jī),另一臺(tái)作為備份機(jī)。若工作機(jī)出現(xiàn)故障,則切換到作為備份機(jī)的計(jì)算機(jī),此時(shí),該備份機(jī)轉(zhuǎn)為工作機(jī),從而保障整個(gè)自動(dòng)化系統(tǒng)的正常運(yùn)行。在雙機(jī)冗余系統(tǒng)中由于存在有兩臺(tái)計(jì)算機(jī),且兩臺(tái)計(jì)算機(jī)的工作狀態(tài)不同,這就需要為計(jì)算機(jī)設(shè)置一個(gè)標(biāo)志,以便外部程序能夠獲知哪臺(tái)計(jì)算機(jī)為工作機(jī),然后與工作機(jī)交互,同時(shí),本機(jī)運(yùn)行的進(jìn)程也需知道本機(jī)為工作機(jī)還是備份機(jī),以便進(jìn)行不同的處理?,F(xiàn)有技術(shù)一般是采用在計(jì)算機(jī)中設(shè)置冗余狀態(tài)的方式解決上述問(wèn)題,具體實(shí)現(xiàn)方式是冗余系統(tǒng)中的每臺(tái)計(jì)算機(jī)均設(shè)置有一個(gè)冗余狀態(tài),一般是在計(jì)算機(jī)的冗余管理模塊中設(shè)置,外部程序及內(nèi)部進(jìn)程通過(guò)查詢?nèi)哂酄顟B(tài)獲得對(duì)應(yīng)計(jì)算機(jī)的工作狀態(tài)。冗余狀態(tài)既包含標(biāo)志計(jì)算機(jī)為工作機(jī)還是備份機(jī)的主狀態(tài)、備狀態(tài),還可能包含標(biāo)志本機(jī)正在進(jìn)行初始化的初始狀態(tài)、標(biāo)志本機(jī)出現(xiàn)故障的故障狀態(tài)等。由于計(jì)算機(jī)中僅設(shè)置有一個(gè)冗余狀態(tài),外部程序及內(nèi)部進(jìn)程在讀取該狀態(tài)時(shí),會(huì)根據(jù)需要為該狀態(tài)加獨(dú)占鎖或共享鎖,從而造成鎖競(jìng)爭(zhēng)。由于經(jīng)常會(huì)存在多個(gè)進(jìn)程同時(shí)讀取冗余狀態(tài)的情況,因此,多線程調(diào)用時(shí)的鎖競(jìng)爭(zhēng)非常嚴(yán)重,導(dǎo)致系統(tǒng)性能嚴(yán)重下降。另一方面,在計(jì)算機(jī)為多核多CPU環(huán)境時(shí),僅一個(gè)冗余狀態(tài)供讀取的情況下,極容易造成內(nèi)存?zhèn)喂蚕?,進(jìn)一步降低了系統(tǒng)性能。

      發(fā)明內(nèi)容
      本發(fā)明的目的在于針對(duì)現(xiàn)有雙機(jī)冗余系統(tǒng)存在的上述問(wèn)題而提供一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法,以減少多線程調(diào)用的鎖競(jìng)爭(zhēng)及偽共享,提高系統(tǒng)的性能。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用下述技術(shù)方案予以實(shí)現(xiàn)
      一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法,系統(tǒng)包括兩臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)中的軟件模塊根據(jù)功能分為執(zhí)行整機(jī)冗余協(xié)調(diào)和管理的冗余管理模塊、對(duì)外提供服務(wù)的若干個(gè)接口模塊以及實(shí)現(xiàn)具體操作的若干個(gè)內(nèi)核模塊,冗余管理模塊中設(shè)置有系統(tǒng)冗余狀態(tài),每個(gè)接口模塊及內(nèi)核模塊均設(shè)置有與系統(tǒng)冗余狀態(tài)一致的本地冗余狀態(tài)副本。如上所述的冗余管理及切換方法,為保證冗余切換時(shí)系統(tǒng)冗余狀態(tài)與本地冗余狀態(tài)副本的一致性,在計(jì)算機(jī)切換冗余狀態(tài)時(shí),所述冗余管理模塊首先通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本,在所有的本地冗余狀態(tài)副本切換成功后,冗余管理模塊再切換系統(tǒng)冗余狀態(tài)。如上所述的冗余管理及切換方法,為避免切換過(guò)程中數(shù)據(jù)處理的混亂,在冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),每個(gè)接口模塊先切換本地冗余狀態(tài)副本,在所有的接口模塊切換成功后,每個(gè)內(nèi)核模塊再切換本地冗余狀態(tài)副本;
      而在冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí),每個(gè)內(nèi)核模塊先切換本地冗余狀態(tài)副本,在所有的內(nèi)核模塊切換成功后,每個(gè)接口模塊再切換本地冗余狀態(tài)副本。如上所述的冗余管理及切換方法,考慮到接口模塊相互之間不存在調(diào)用、而內(nèi)核模塊間相互調(diào)用較多的情況,為提高切換速度、同時(shí)保證數(shù)據(jù)處理的準(zhǔn)確,所述若干個(gè)接口模塊并行地切換本地冗余狀態(tài)副本,所述若干個(gè)內(nèi)核模塊串行地切換本地冗余狀態(tài)副本。如上所述的冗余管理及切換方法,為進(jìn)一步保證數(shù)據(jù)處理的準(zhǔn)確性,所述若干個(gè)內(nèi)核模塊根據(jù)相互之間的調(diào)用關(guān)系順序編號(hào),最外層的內(nèi)核模塊對(duì)應(yīng)最小的序號(hào),最內(nèi)層的內(nèi)核模塊對(duì)應(yīng)最大的序號(hào),在冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),內(nèi)核模塊按照序號(hào)從小到大的順序串行地切換本地冗余狀態(tài);在冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí), 內(nèi)核模塊按照序號(hào)從大到小的順序串行地切換本地冗余狀態(tài)。如上所述的冗余管理及切換方法,每個(gè)接口模塊或內(nèi)核模塊切換冗余狀態(tài)的過(guò)程包括下述步驟
      在模塊的本地冗余狀態(tài)副本未加獨(dú)占鎖時(shí),冗余管理模塊申請(qǐng)對(duì)本地冗余狀態(tài)副本加獨(dú)占鎖;
      冗余管理模塊加獨(dú)占鎖成功后,更改加鎖的本地冗余狀態(tài)副本的冗余狀態(tài)為新?tīng)顟B(tài); 冗余管理模塊釋放更改后的本地冗余狀態(tài)副本的獨(dú)占鎖。如上所述的冗余管理及切換方法,為防止本地冗余狀態(tài)副本上的共享鎖占用時(shí)間過(guò)長(zhǎng)、影響冗余切換速度,冗余管理模塊申請(qǐng)對(duì)本地冗余狀態(tài)副本加獨(dú)占鎖之前,還包括設(shè)置狀態(tài)切換意向標(biāo)志、通知要切換冗余狀態(tài)的接口模塊或內(nèi)核模塊結(jié)束當(dāng)前的外部調(diào)用的步驟,以及在加獨(dú)占鎖成功后、清除狀態(tài)切換意向標(biāo)志的步驟。如上所述的冗余管理及切換方法,要切換冗余狀態(tài)的接口模塊或內(nèi)核模塊在查詢到冗余管理模塊設(shè)置的狀態(tài)切換意向標(biāo)志時(shí),判斷當(dāng)前的外部調(diào)用是否允許中止,若允許中止,則中止當(dāng)前的外部調(diào)用,然后釋放施加在本地冗余狀態(tài)副本上的共享鎖。如上所述的冗余管理及切換方法,每臺(tái)計(jì)算機(jī)中的軟件模塊還包括實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)上的數(shù)據(jù)同步的數(shù)據(jù)同步模塊,在計(jì)算機(jī)的冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),冗余管理模塊先將數(shù)據(jù)同步模塊的狀態(tài)由發(fā)送更改為接收,然后再通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本;在計(jì)算機(jī)的冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí),冗余管理模塊先將數(shù)據(jù)同步模塊的狀態(tài)由接收更改為發(fā)送,然后再通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本。與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)和積極效果是本發(fā)明根據(jù)雙機(jī)冗余系統(tǒng)中計(jì)算機(jī)軟件功能將其軟件模塊進(jìn)行分類,對(duì)冗余管理模塊設(shè)置一個(gè)系統(tǒng)冗余狀態(tài),而對(duì)接口模塊及內(nèi)核模塊等應(yīng)用模塊分別設(shè)置一個(gè)與系統(tǒng)冗余狀態(tài)相對(duì)應(yīng)的本地冗余狀態(tài)副本,線程在需要得到系統(tǒng)當(dāng)前的冗余狀態(tài)時(shí),可以直接讀取本地冗余狀態(tài)副本即可,大大減少了多線程調(diào)用時(shí)的鎖競(jìng)爭(zhēng),提高了線程應(yīng)用的并發(fā)性,同時(shí)減少了多核多CPU環(huán)境下對(duì)數(shù)據(jù)的偽共享,提高了雙機(jī)冗余系統(tǒng)的切換速度,進(jìn)而提高了雙機(jī)冗余系統(tǒng)的整體性能,使得采用本發(fā)明冗余管理及切換方法的雙機(jī)冗余系統(tǒng)適用于軌道交通綜合監(jiān)控等大型工業(yè)自動(dòng)化監(jiān)控技術(shù)領(lǐng)域,尤其適應(yīng)于多核多CPU計(jì)算機(jī)環(huán)境。結(jié)合附圖閱讀本發(fā)明的具體實(shí)施方式
      后,本發(fā)明的其他特點(diǎn)和優(yōu)點(diǎn)將變得更加清林疋。


      圖1是本發(fā)明雙機(jī)冗余系統(tǒng)的冗余管理及切換方法中雙機(jī)冗余系統(tǒng)一個(gè)實(shí)施例的軟件架構(gòu)示意圖2是基于圖1軟件架構(gòu)的冗余管理及切換方法中冗余狀態(tài)從主狀態(tài)切換為其他狀態(tài)時(shí)一個(gè)實(shí)施例的流程圖3是基于圖1軟件架構(gòu)的冗余管理及切換方法中冗余狀態(tài)從其他狀態(tài)切換為主狀態(tài)時(shí)一個(gè)實(shí)施例的流程圖4是圖2及圖3流程中接口模塊或內(nèi)核模塊狀態(tài)切換的一個(gè)實(shí)施例的流程圖; 圖5是外部調(diào)用圖4中的接口模塊或內(nèi)核模塊的工作流程圖。
      具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
      對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步詳細(xì)的說(shuō)明。本發(fā)明針對(duì)現(xiàn)有雙機(jī)冗余系統(tǒng)的單機(jī)中僅存在一個(gè)冗余狀態(tài),在冗余切換時(shí)存在多線程調(diào)用鎖競(jìng)爭(zhēng)及內(nèi)存?zhèn)喂蚕憩F(xiàn)象嚴(yán)重的問(wèn)題,提供了一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法,通過(guò)對(duì)單機(jī)中的軟件模塊進(jìn)行劃分及設(shè)置冗余狀態(tài)副本,改善了雙機(jī)冗余切換系統(tǒng)冗余切換的性能。圖1所示為本發(fā)明雙機(jī)冗余系統(tǒng)的冗余管理和切換方法中雙機(jī)冗余系統(tǒng)一個(gè)實(shí)施例的軟件架構(gòu)示意圖。如圖1所示,該實(shí)施例的雙機(jī)冗余系統(tǒng)包括計(jì)算機(jī)A和計(jì)算機(jī)B,兩者硬件配置相同,運(yùn)行相同的軟件,并通過(guò)以太網(wǎng)等網(wǎng)絡(luò)進(jìn)行互聯(lián)和通訊。計(jì)算機(jī)A和計(jì)算機(jī)B中的軟件模塊根據(jù)功能進(jìn)行劃分,具體來(lái)說(shuō),包括執(zhí)行整機(jī)冗余記錄、管理及切換的冗余管理模塊, 對(duì)外提供服務(wù)的若干個(gè)接口模塊1至M,以及實(shí)現(xiàn)具體操作的若干個(gè)內(nèi)核模塊1至N,此外, 還包括有實(shí)現(xiàn)兩計(jì)算機(jī)間數(shù)據(jù)同步的數(shù)據(jù)同步模塊,每個(gè)模塊都支持多線程調(diào)用。接口模塊1至M供外部調(diào)用,根據(jù)外部要求調(diào)用內(nèi)核模塊實(shí)現(xiàn)具體的功能。內(nèi)核模塊1至N作為軟件中的功能模塊,可以被多個(gè)接口模塊調(diào)用,且內(nèi)核模塊相互之間也可能存在調(diào)用關(guān)系。在該實(shí)施例中,N個(gè)內(nèi)核模塊根據(jù)相互之間的調(diào)用關(guān)系順序編號(hào),序號(hào)最小的內(nèi)核模塊1為最外層模塊,隨著序號(hào)的增大、層數(shù)逐漸增大、調(diào)用增多,最內(nèi)層的內(nèi)核模塊N對(duì)應(yīng)最大的序號(hào)。數(shù)據(jù)同步模塊用來(lái)與對(duì)機(jī)進(jìn)行通訊,通過(guò)調(diào)用接口模塊及內(nèi)核模塊,實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)間的同步,確保兩臺(tái)計(jì)算機(jī)間的無(wú)縫冗余切換。冗余管理模塊作為計(jì)算機(jī)的核心冗余記錄、管理及切換的功能模塊,與對(duì)機(jī)相互心跳并檢查,當(dāng)檢查到對(duì)機(jī)狀態(tài)發(fā)生改變或出現(xiàn)故障時(shí),協(xié)調(diào)其他功能模塊實(shí)現(xiàn)冗余裁決和切換。在該實(shí)施例中,冗余管理模塊中設(shè)置有系統(tǒng)冗余狀態(tài),用于標(biāo)志本機(jī)系統(tǒng)的主狀態(tài)及初始、備用、停止及故障等其他狀態(tài)。此外,每個(gè)接口模塊及每個(gè)內(nèi)核模塊中均設(shè)置有與系統(tǒng)冗余狀態(tài)相一致的本地冗余狀態(tài)副本。如此一來(lái),在模塊或外部線程需要得到本機(jī)當(dāng)前的冗余狀態(tài)時(shí),可以直接讀取模塊中的本地冗余狀態(tài)副本即可,而不必去讀取僅有的一個(gè)系統(tǒng)冗余狀態(tài),從而大大減少了多線程調(diào)用時(shí)的鎖競(jìng)爭(zhēng),提高了線程應(yīng)用的并發(fā)性;而且,由于在軟件上將冗余狀態(tài)字段分成多個(gè),每個(gè)相隔較大的距離,可以減少多核多CPU環(huán)境下對(duì)數(shù)據(jù)的偽共享,提高冗余切換的速度,從而可以提高雙機(jī)冗余系統(tǒng)的整體性能。具有上述軟件架構(gòu)的雙機(jī)冗余系統(tǒng)實(shí)現(xiàn)冗余狀態(tài)切換時(shí),要確保系統(tǒng)冗余狀態(tài)與本地冗余狀態(tài)副本的一致性,避免多個(gè)冗余狀態(tài)出現(xiàn)混亂,需要采取特定的狀態(tài)切換過(guò)程。 具體來(lái)說(shuō),在切換冗余狀態(tài)時(shí),冗余管理模塊首先通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本,在所有的本地冗余狀態(tài)副本切換成功后,冗余管理模塊再切換系統(tǒng)冗余狀態(tài)。而根據(jù)狀態(tài)切換是由主狀態(tài)切換為其他狀態(tài)還是由其他狀態(tài)切換為主狀態(tài)而采取不同的切換過(guò)程,具體可參考圖2及圖3所示。圖2所示是基于圖1軟件架構(gòu)的冗余管理及切換方法中冗余狀態(tài)從主狀態(tài)切換為其他狀態(tài)時(shí)一個(gè)實(shí)施例的流程圖。在主狀態(tài)時(shí),計(jì)算機(jī)為工作機(jī),要對(duì)外提供服務(wù),還要與對(duì)機(jī)進(jìn)行數(shù)據(jù)同步;而切換到其他狀態(tài)時(shí),對(duì)外服務(wù)減少或者停止,主要是進(jìn)行內(nèi)部處理及與對(duì)機(jī)的數(shù)據(jù)同步。為此,冗余管理模塊首先切換接口模塊的本地冗余狀態(tài)副本,以切斷對(duì)外服務(wù),然后再切換內(nèi)核模塊的本地冗余狀態(tài)副本,最后更改系統(tǒng)冗余狀態(tài)。具體切換過(guò)程如下
      S201 開(kāi)始切換。S202 冗余管理模塊控制數(shù)據(jù)同步模塊的狀態(tài)由發(fā)送變?yōu)榻邮?。在主狀態(tài)下,本機(jī)為工作機(jī),需要通過(guò)數(shù)據(jù)同步模塊將數(shù)據(jù)發(fā)送至對(duì)機(jī)。而切換為其他狀態(tài)后,需要通過(guò)數(shù)據(jù)同步模塊接收對(duì)機(jī)的同步數(shù)據(jù),因此,首先將數(shù)據(jù)同步模塊的狀態(tài)由發(fā)送變?yōu)榻邮?。S203:冗余管理模塊并行地向所有接口模塊發(fā)送狀態(tài)切換的通知,通知接口模塊切換本地冗余狀態(tài)副本。由于多個(gè)接口模塊相互獨(dú)立,之間不存在調(diào)用,為提高切換速度,采用并行切換的方法來(lái)切換本地冗余狀態(tài)副本。S204 接口模塊1的本地冗余狀態(tài)副本變?yōu)槠渌麪顟B(tài);直到 S205 接口模塊M的本地冗余狀態(tài)副本變?yōu)槠渌麪顟B(tài)。上述S204至S205之間的M個(gè)接口模塊的狀態(tài)切換并行執(zhí)行。S206 冗余管理模塊等待所有接口模塊的狀態(tài)切換完成。S207 在所有接口模塊的狀態(tài)切換完成后,將內(nèi)核模塊1的本地冗余狀態(tài)副本變?yōu)槠渌麪顟B(tài)。S208 串行地依次更改內(nèi)核模塊2至內(nèi)核模塊(N_l)的本地冗余狀態(tài)副本。S209 將內(nèi)核模塊N的本地冗余狀態(tài)副本變?yōu)槠渌麪顟B(tài)。S210 最后將冗余管理模塊的系統(tǒng)冗余狀態(tài)變?yōu)槠渌麪顟B(tài)。S211 結(jié)束切換。在該實(shí)施例中,由于內(nèi)核模塊相互之間存在調(diào)用關(guān)系,為避免數(shù)據(jù)處理過(guò)程混亂, 對(duì)內(nèi)核模塊進(jìn)行切換時(shí),采用的是各模塊串行切換的方式,且根據(jù)內(nèi)核模塊的序號(hào)由小到大的順序串行切換。也即,首先切換最外層的內(nèi)核模塊的狀態(tài),依次向里,最后切換最內(nèi)層模塊的狀態(tài)。從整個(gè)軟件架構(gòu)來(lái)說(shuō),采用先外后內(nèi)的切換過(guò)程,保證數(shù)據(jù)處理的正確性。圖3所示是基于圖1軟件架構(gòu)的冗余管理及切換方法中冗余狀態(tài)從其他狀態(tài)切換為主狀態(tài)時(shí)一個(gè)實(shí)施例的流程圖。在計(jì)算機(jī)為停止、備用、故障等其他狀態(tài)時(shí),對(duì)外服務(wù)減少或者停止,主要是進(jìn)行內(nèi)部處理及與對(duì)機(jī)的數(shù)據(jù)同步;而若要切換為主狀態(tài),計(jì)算機(jī)作為工作機(jī)使用,要對(duì)外提供服務(wù),還要與對(duì)機(jī)進(jìn)行數(shù)據(jù)同步。為此,冗余管理模塊首先切換內(nèi)核模塊的本地冗余狀態(tài)副本,然后再切換接口模塊的本地冗余狀態(tài)副本,最后更改系統(tǒng)冗余狀態(tài)。具體切換過(guò)程如下
      S301 開(kāi)始切換。S302 冗余管理模塊控制數(shù)據(jù)同步模塊的狀態(tài)由接收變?yōu)榘l(fā)送。在其他狀態(tài)下,本機(jī)需要通過(guò)數(shù)據(jù)同步模塊接收對(duì)機(jī)的同步數(shù)據(jù),而切換成主狀態(tài)時(shí),本機(jī)為工作機(jī),需要通過(guò)數(shù)據(jù)同步模塊將數(shù)據(jù)發(fā)送至對(duì)機(jī),因此,首先將數(shù)據(jù)同步模塊的狀態(tài)由接收變?yōu)榘l(fā)送。然后切換內(nèi)核模塊。與圖2實(shí)施例類似,對(duì)內(nèi)核模塊的切換也采用串行切換的方式。而與圖2實(shí)施例不同的是,在由其他狀態(tài)切換為主狀態(tài)時(shí),對(duì)內(nèi)核模塊采用由內(nèi)而外的切換流程,即根據(jù)內(nèi)核序號(hào)從大到小的順序串行切換。具體如下
      S303 將內(nèi)核模塊N的本地冗余狀態(tài)副本變?yōu)橹鳡顟B(tài)。S304 串行地依次更改內(nèi)核模塊(N-I)至內(nèi)核模塊2的本地冗余狀態(tài)副本為主狀態(tài)。S305 將內(nèi)核模塊1的本地冗余狀態(tài)副本變?yōu)橹鳡顟B(tài)。S306 并行地向所有接口模塊發(fā)送狀態(tài)切換的通知,通知接口模塊切換本地冗余狀態(tài)副本。由于多個(gè)接口模塊相互獨(dú)立,之間不存在調(diào)用,為提高切換速度,采用并行切換的方法來(lái)切換本地冗余狀態(tài)副本。S307 接口模塊1的本地冗余狀態(tài)副本變?yōu)橹鳡顟B(tài);直到 S308 接口模塊M的本地冗余狀態(tài)副本變?yōu)橹鳡顟B(tài)。上述S307至S308之間的M個(gè)接口模塊的狀態(tài)切換并行執(zhí)行。S309 等待所有接口模塊的狀態(tài)切換完成。S310 將冗余管理模塊的系統(tǒng)冗余狀態(tài)變?yōu)橹鳡顟B(tài)。S311 結(jié)束切換。在該實(shí)施例中,冗余狀態(tài)由其他狀態(tài)切換為主狀態(tài)時(shí),采用先內(nèi)核模塊最內(nèi)層至內(nèi)核模塊最外層、然后各接口模塊、最后冗余管理模塊的先內(nèi)后外的切換過(guò)程,保證只有在內(nèi)部模塊狀態(tài)都切換好之后再對(duì)外提供服務(wù),確保了數(shù)據(jù)的準(zhǔn)確性。上述接口模塊及內(nèi)核模塊狀態(tài)切換可以采用相同的切換過(guò)程,具體流程如圖4所
      7J\ ο圖4是圖2及圖3流程中接口模塊或內(nèi)核模塊狀態(tài)切換的一個(gè)實(shí)施例的流程圖, 冗余管理模塊控制接口模塊或內(nèi)核模塊實(shí)現(xiàn)狀態(tài)切換的具體過(guò)程如下
      S401 開(kāi)始切換。S402 冗余管理模塊設(shè)置狀態(tài)切換意向標(biāo)志。
      由于外部線程每次調(diào)用接口模塊或內(nèi)核模塊時(shí),都會(huì)申請(qǐng)對(duì)其本地冗余狀態(tài)副本施加共享鎖,可參考圖5及后續(xù)描述。若本地冗余狀態(tài)副本處于加鎖狀態(tài)下,則冗余管理模塊不能修改其狀態(tài)。為此,在該實(shí)施例中,為防止外部線程共享鎖時(shí)間過(guò)長(zhǎng)、影響狀態(tài)切換, 冗余管理模塊在切換模塊的本地冗余狀態(tài)副本時(shí),首先設(shè)置狀態(tài)切換意向標(biāo)志,以通知模塊盡可能快地結(jié)束當(dāng)前正在處理的多個(gè)外部調(diào)用。S403 在模塊的本地冗余狀態(tài)副本未加獨(dú)占鎖時(shí),冗余管理模塊申請(qǐng)對(duì)本地冗余狀態(tài)副本加獨(dú)占鎖。S404 判斷加鎖是否成功。若加鎖成功,執(zhí)行步驟S405 ;否則,轉(zhuǎn)至步驟S403繼續(xù)執(zhí)行加鎖操作。S405:若加鎖成功,表明模塊調(diào)用已經(jīng)結(jié)束或中止,之后,冗余管理模塊清除狀態(tài)切換意向標(biāo)志,以便下次重復(fù)使用。S406 更改本地冗余狀態(tài)副本的冗余狀態(tài),由舊狀態(tài)更改為新?tīng)顟B(tài)。S407:根據(jù)模塊的業(yè)務(wù)需求,對(duì)模塊業(yè)務(wù)進(jìn)行特定的冗余切換處理,主要是將其內(nèi)部處理由舊狀態(tài)更改為新?tīng)顟B(tài)。S408:冗余管理模塊釋放更改后的本地冗余狀態(tài)副本的獨(dú)占鎖。之后,其他線程可以再次對(duì)新的本地冗余狀態(tài)副本施加共享鎖。S409 結(jié)束切換。需要說(shuō)明的是,若冗余切換速度要求不高,或者切換過(guò)程允許,也可以不設(shè)置狀態(tài)切換意向標(biāo)志,而是等待所有外部調(diào)用主動(dòng)釋放對(duì)本地冗余狀態(tài)副本的共享鎖,然后再加獨(dú)占鎖。圖5示出了外部調(diào)用圖4中的接口模塊或內(nèi)核模塊的工作流程圖,結(jié)合冗余切換過(guò)程,接口模塊或內(nèi)核模塊的具體調(diào)用過(guò)程如下
      S501 外部調(diào)用開(kāi)始。S502 申請(qǐng)加共享鎖。每次外部調(diào)用都要對(duì)模塊的冗余狀態(tài)副本加共享鎖,以防止?fàn)顟B(tài)被改變,影響處理進(jìn)程。S503 判斷加鎖是否成功。若成功,執(zhí)行步驟S504 ;否則,轉(zhuǎn)至步驟S502,繼續(xù)申請(qǐng)加共享鎖。S504:在加鎖成功后,判斷模塊的狀態(tài)是否符合要求。若符合要求,執(zhí)行步驟 S505 ;否則,轉(zhuǎn)至步驟S511?!銇?lái)說(shuō),在模塊狀態(tài)為主狀態(tài)時(shí),外部可調(diào)用,而若模塊狀態(tài)為故障或停止等狀態(tài),則退出調(diào)用過(guò)程。S505:在狀態(tài)符合要求時(shí),將調(diào)用模塊的相應(yīng)處理片段,執(zhí)行相應(yīng)操作。S506 判斷調(diào)用是否結(jié)束。若結(jié)束,轉(zhuǎn)至步驟S510 ;若未結(jié)束,執(zhí)行步驟S507。S507 判斷是否有冗余管理模塊設(shè)置的狀態(tài)切換意向標(biāo)志。若有,執(zhí)行步驟S508 ; 若無(wú),轉(zhuǎn)至步驟S505繼續(xù)調(diào)用模塊處理片段。S508:在檢測(cè)到狀態(tài)切換意向標(biāo)志后,將根據(jù)業(yè)務(wù)需求決策是否需要提前中止調(diào)用處理。若業(yè)務(wù)允許中止,執(zhí)行步驟S509 ;若不能中止,則不理會(huì)狀態(tài)切換意向標(biāo)志,繼續(xù)執(zhí)行步驟S505的調(diào)用操作。S509 在業(yè)務(wù)允許中止時(shí),執(zhí)行相應(yīng)的中止處理。
      S510 釋放共享鎖。S511 外部調(diào)用結(jié)束。以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其進(jìn)行限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明所要求保護(hù)的技術(shù)方案的精神和范圍。
      權(quán)利要求
      1.一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法,系統(tǒng)包括兩臺(tái)計(jì)算機(jī),其特征在于,每臺(tái)計(jì)算機(jī)中的軟件模塊根據(jù)功能分為執(zhí)行整機(jī)冗余協(xié)調(diào)和管理的冗余管理模塊、對(duì)外提供服務(wù)的若干個(gè)接口模塊以及實(shí)現(xiàn)具體操作的若干個(gè)內(nèi)核模塊,冗余管理模塊中設(shè)置有系統(tǒng)冗余狀態(tài),每個(gè)接口模塊及內(nèi)核模塊均設(shè)置有與系統(tǒng)冗余狀態(tài)一致的本地冗余狀態(tài)副本。
      2.根據(jù)權(quán)利要求1所述的冗余管理及切換方法,其特征在于,在計(jì)算機(jī)切換冗余狀態(tài)時(shí),所述冗余管理模塊首先通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本,在所有的本地冗余狀態(tài)副本切換成功后,冗余管理模塊再切換系統(tǒng)冗余狀態(tài)。
      3.根據(jù)權(quán)利要求2所述的冗余管理及切換方法,其特征在于,在冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),每個(gè)接口模塊先切換本地冗余狀態(tài)副本,在所有的接口模塊切換成功后,每個(gè)內(nèi)核模塊再切換本地冗余狀態(tài)副本。
      4.根據(jù)權(quán)利要求2所述的冗余管理及切換方法,其特征在于,在冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí),每個(gè)內(nèi)核模塊先切換本地冗余狀態(tài)副本,在所有的內(nèi)核模塊切換成功后,每個(gè)接口模塊再切換本地冗余狀態(tài)副本。
      5.根據(jù)權(quán)利要求3或4所述的冗余管理及切換方法,其特征在于,所述若干個(gè)接口模塊并行地切換本地冗余狀態(tài)副本,所述若干個(gè)內(nèi)核模塊串行地切換本地冗余狀態(tài)副本。
      6.根據(jù)權(quán)利要求5所述的冗余管理及切換方法,其特征在于,所述若干個(gè)內(nèi)核模塊根據(jù)相互之間的調(diào)用關(guān)系順序編號(hào),最外層的內(nèi)核模塊對(duì)應(yīng)最小的序號(hào),最內(nèi)層的內(nèi)核模塊對(duì)應(yīng)最大的序號(hào),在冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),內(nèi)核模塊按照序號(hào)從小到大的順序串行地切換本地冗余狀態(tài);在冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí),內(nèi)核模塊按照序號(hào)從大到小的順序串行地切換本地冗余狀態(tài)。
      7.根據(jù)權(quán)利要求2至4中任一項(xiàng)所述的冗余管理及切換方法,其特征在于,每個(gè)接口模塊或內(nèi)核模塊切換冗余狀態(tài)的過(guò)程包括下述步驟在模塊的本地冗余狀態(tài)副本未加獨(dú)占鎖時(shí),冗余管理模塊申請(qǐng)對(duì)本地冗余狀態(tài)副本加獨(dú)占鎖;冗余管理模塊加獨(dú)占鎖成功后,更改加鎖的本地冗余狀態(tài)副本的冗余狀態(tài)為新?tīng)顟B(tài);冗余管理模塊釋放更改后的本地冗余狀態(tài)副本的獨(dú)占鎖。
      8.根據(jù)權(quán)利要求7所述的冗余管理及切換方法,其特征在于,冗余管理模塊申請(qǐng)對(duì)本地冗余狀態(tài)副本加獨(dú)占鎖之前,還包括設(shè)置狀態(tài)切換意向標(biāo)志、通知要切換冗余狀態(tài)的接口模塊或內(nèi)核模塊結(jié)束當(dāng)前的外部調(diào)用的步驟,以及在加獨(dú)占鎖成功后、清除狀態(tài)切換意向標(biāo)志的步驟。
      9.根據(jù)權(quán)利要求7所述的冗余管理及切換方法,其特征在于,要切換冗余狀態(tài)的接口模塊或內(nèi)核模塊在查詢到冗余管理模塊設(shè)置的狀態(tài)切換意向標(biāo)志時(shí),判斷當(dāng)前的外部調(diào)用是否允許中止,若允許中止,則中止當(dāng)前的外部調(diào)用,然后釋放施加在本地冗余狀態(tài)副本上的共享鎖。
      10.根據(jù)權(quán)利要求2所述的冗余管理及切換方法,其特征在于,每臺(tái)計(jì)算機(jī)中的軟件模塊還包括實(shí)現(xiàn)兩臺(tái)計(jì)算機(jī)上的數(shù)據(jù)同步的數(shù)據(jù)同步模塊,在計(jì)算機(jī)的冗余狀態(tài)是由主狀態(tài)切換為其他狀態(tài)時(shí),冗余管理模塊先將數(shù)據(jù)同步模塊的狀態(tài)由發(fā)送更改為接收,然后再通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本;在計(jì)算機(jī)的冗余狀態(tài)是由其他狀態(tài)切換為主狀態(tài)時(shí),冗余管理模塊先將數(shù)據(jù)同步模塊的狀態(tài)由接收更改為發(fā)送,然后再通知每個(gè)接口模塊及每個(gè)內(nèi)核模塊切換本地冗余狀態(tài)副本。
      全文摘要
      本發(fā)明公開(kāi)了一種雙機(jī)冗余系統(tǒng)的冗余管理及切換方法,系統(tǒng)包括兩臺(tái)計(jì)算機(jī),每臺(tái)計(jì)算機(jī)中的軟件模塊根據(jù)功能分為執(zhí)行整機(jī)冗余協(xié)調(diào)和管理的冗余管理模塊、對(duì)外提供服務(wù)的若干個(gè)接口模塊以及實(shí)現(xiàn)具體操作的若干個(gè)內(nèi)核模塊,冗余管理模塊中設(shè)置有系統(tǒng)冗余狀態(tài),每個(gè)接口模塊及內(nèi)核模塊均設(shè)置有與系統(tǒng)冗余狀態(tài)一致的本地冗余狀態(tài)副本。利用軟件模塊分類及設(shè)置冗余狀態(tài)副本的方式,可以減少多線程調(diào)用的鎖競(jìng)爭(zhēng)及偽共享,提高雙機(jī)冗余系統(tǒng)的性能,特別適應(yīng)于多核多CPU計(jì)算機(jī)環(huán)境。
      文檔編號(hào)G06F11/14GK102436409SQ20111034528
      公開(kāi)日2012年5月2日 申請(qǐng)日期2011年11月4日 優(yōu)先權(quán)日2011年11月4日
      發(fā)明者萬(wàn)思軍, 劉見(jiàn), 夏玲玲, 宋艷榮, 廖常斌, 李月高 申請(qǐng)人:青島海信網(wǎng)絡(luò)科技股份有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1