王江江 李志強(qiáng) 趙 亮
通過(guò)對(duì)已有雙機(jī)熱備系統(tǒng)的研究,在傳統(tǒng)主備切換決策方法的基礎(chǔ)上,提出了有效的解決方案,形成了更準(zhǔn)確、高效的主備切換決策方法。該方法已在青藏鐵路格拉線CTC系統(tǒng)中得以應(yīng)用,取得了良好的效果,并在2008年獲得專利局授權(quán)。
雙機(jī)熱備是鐵路信號(hào)系統(tǒng)中用來(lái)提高設(shè)備可靠性的常見(jiàn)辦法。使用一臺(tái)機(jī)器做主機(jī),另外一臺(tái)做備份。當(dāng)主機(jī)故障時(shí),備機(jī)自動(dòng)成為主機(jī)繼續(xù)運(yùn)行。這種簡(jiǎn)單互斥機(jī)制雖對(duì)設(shè)備可靠性和可維護(hù)性都有明顯的提升,但也表現(xiàn)出以下缺點(diǎn)。
1.切換決定對(duì)單機(jī)是正確的,但從雙機(jī)整體角度看,切換目標(biāo)不一致,雙機(jī)均想成為主機(jī),可能導(dǎo)致反復(fù)切換或競(jìng)爭(zhēng)。
2.主機(jī)不知道備機(jī)的狀態(tài),主機(jī)使用時(shí),備機(jī)的故障狀態(tài)沒(méi)有送給主機(jī),備機(jī)也不參與整個(gè)系統(tǒng)的運(yùn)算,因不能及時(shí)發(fā)現(xiàn)備機(jī)故障,等到主機(jī)也出現(xiàn)故障時(shí),備機(jī)無(wú)法熱備。
3.會(huì)出現(xiàn)不必要的主備切換和雙機(jī)因爭(zhēng)搶導(dǎo)致的故障。比如有些系統(tǒng)設(shè)置了A機(jī)優(yōu)先于B機(jī)成為主機(jī),那么在A機(jī)發(fā)生間歇式故障時(shí),會(huì)出現(xiàn)A機(jī)故障后切換B機(jī)為主機(jī),A機(jī)故障暫時(shí)排除以后,又切換回A機(jī)。由于間歇性故障而導(dǎo)致主備機(jī)反復(fù)切換,從而導(dǎo)致系統(tǒng)不可用。
4.對(duì)故障沒(méi)有分級(jí)機(jī)制,只有故障狀態(tài)和正常狀態(tài),不能根據(jù)故障等級(jí)的差異進(jìn)行主備切換的決策。
在既有的主備切換中,無(wú)論是否向第三方仲裁模塊申請(qǐng)成為主機(jī),都是本機(jī)先做出主備切換的決策,然后通知伴機(jī),通過(guò)互斥方法對(duì)決策結(jié)果再進(jìn)行修正。在這個(gè)過(guò)程中,是先決策后協(xié)商。因此決策結(jié)果存在一種不確定性,即本次切換可能由于伴機(jī)的原因而不能成功。主備切換并不是一臺(tái)機(jī)器可以決定的,需要雙機(jī)采取一致性行動(dòng)。如果A機(jī)和B機(jī)的主備切換意圖有沖突,那么雙機(jī)熱備的主備切換都會(huì)出現(xiàn)反復(fù)和不確定性。即使暫時(shí)切換成功,也會(huì)出現(xiàn)不必要的反復(fù)。為此,提出了一種先協(xié)商,后決策,確保雙機(jī)采取一致性行動(dòng)的主備切換辦法。
該方法先由A、B機(jī)分別檢測(cè)自身的故障,然后A、B機(jī)之間進(jìn)行同步,使2臺(tái)機(jī)器均做到既了解自己的工作狀態(tài),也了解伴機(jī)的工作狀態(tài),雙機(jī)熱備結(jié)構(gòu)圖如圖1所示。2臺(tái)機(jī)器分別根據(jù)故障比較來(lái)自行決策是成為主機(jī)還是成為備機(jī)。具體步驟如下。
圖1 雙機(jī)熱備結(jié)構(gòu)
1.A、B機(jī)根據(jù)自身的檢測(cè)機(jī)制判斷自身的故障情況,然后加上本機(jī)的當(dāng)前主備標(biāo)記和A、B機(jī)標(biāo)記,作為雙機(jī)熱備工作狀態(tài)字。
雙機(jī)熱備工作狀態(tài)字定義:
Bit0:狀態(tài)字的最低位,AB機(jī)位,如果是A機(jī)則為1,否則為0,表示A機(jī)具有變成主機(jī)的優(yōu)先權(quán)。
Bit1:主備機(jī)位,主機(jī)為1,備機(jī)為0,表示主機(jī)具有繼續(xù)保持主機(jī)的優(yōu)先權(quán)。
Bit2:低級(jí)故障位,如果沒(méi)有故障,則為1,否則為0,表示沒(méi)有故障的機(jī)器具有成為主機(jī)的優(yōu)先權(quán)。
Bit3:高級(jí)故障位,如果沒(méi)有故障,則為1,否則為0,表示沒(méi)有故障的機(jī)器具有成為主機(jī)的優(yōu)先權(quán)。故障級(jí)別低的機(jī)器具有成為主機(jī)的優(yōu)先權(quán)。
Bit4:更高級(jí)別的故障。
Bit5:再高級(jí)別的故障。
…
BitN:最高級(jí)別的故障。
Bit2到BitN又稱為故障狀態(tài)字。
2.雙機(jī)工作狀態(tài)字的同步。使用多條串口和網(wǎng)線同時(shí)負(fù)責(zé)雙機(jī)的通信,保證通信有足夠的冗余。不管是A機(jī)還是B機(jī),每次通信均需要記錄,并向伴機(jī)發(fā)送2個(gè)工作狀態(tài)字:一個(gè)是本機(jī)當(dāng)前工作狀態(tài)字,一個(gè)是本機(jī)上次從伴機(jī)收到的伴機(jī)工作狀態(tài)字。
3.如果從伴機(jī)收到的2個(gè)工作狀態(tài)字與本機(jī)記錄的2個(gè)工作狀態(tài)字一致,(本機(jī)當(dāng)前工作狀態(tài)字與對(duì)方送來(lái)的對(duì)方伴機(jī)工作狀態(tài)字相同,且本機(jī)記錄的伴機(jī)狀態(tài)字與對(duì)方的本機(jī)工作狀態(tài)字相同),則表示完成一次工作狀態(tài)字的同步,此時(shí)比較本機(jī)和伴機(jī)工作狀態(tài)字的大小,來(lái)決定本機(jī)是當(dāng)主機(jī)還是備機(jī)。如果本機(jī)的工作狀態(tài)字大于伴機(jī)的工作狀態(tài)字,本機(jī)做主機(jī),否則本機(jī)做備機(jī)。
4.如果長(zhǎng)時(shí)間無(wú)法收到伴機(jī)送來(lái)的工作狀態(tài)字,則認(rèn)為伴機(jī)已經(jīng)關(guān)機(jī)或死機(jī),本機(jī)做主機(jī)。
新方法和舊方法的狀態(tài)對(duì)比圖如圖2和圖3所示,主要區(qū)別在于黑體文字部分,新方法可保證2臺(tái)機(jī)器的主備切換目標(biāo)一致,從而保證一次性切換成功。
圖2 既有雙機(jī)熱備切換狀態(tài)
圖3 新方法的雙機(jī)熱備切換狀態(tài)
1.在某些安全系統(tǒng)中,為了保證只有一個(gè)主機(jī),可以采用繼電器做第三方仲裁機(jī)構(gòu),同步后,如本機(jī)狀態(tài)字大于伴機(jī)狀態(tài)字時(shí),不是直接切換為主機(jī),而是向第三方仲裁模塊申請(qǐng)成為主機(jī)。同樣,如本機(jī)狀態(tài)字小于伴機(jī)狀態(tài)字時(shí),也不直接切換為備機(jī),而是向第三方仲裁模塊申請(qǐng)成為備機(jī)。
2.為了實(shí)現(xiàn)人工強(qiáng)制切換,可以采集強(qiáng)制切換開(kāi)關(guān),并將該采集位作為最高故障位。如此,則當(dāng)強(qiáng)制切換開(kāi)關(guān)指向A機(jī)時(shí),A機(jī)的狀態(tài)字必然大于B機(jī),從而成為主機(jī)。
3.本機(jī)不僅檢測(cè)自身的故障,同時(shí)檢測(cè)伴機(jī)的故障,并將該故障納入故障狀態(tài)字的計(jì)算,然后進(jìn)行比較,即可實(shí)現(xiàn)對(duì)故障的冗余檢測(cè)。避免本機(jī)故障導(dǎo)致本機(jī)故障檢測(cè)模塊出問(wèn)題,而導(dǎo)致的故障判斷失誤。
4.可將多個(gè)采用本策略的雙機(jī)熱備決策機(jī)進(jìn)行級(jí)連。從而實(shí)現(xiàn)多機(jī)熱備。
新的雙機(jī)熱備方法邏輯簡(jiǎn)單,只需一次同步、一次比對(duì),就可以迅速地讓2臺(tái)機(jī)器搞清自己的主備狀態(tài)。該方法充分利用了所有的故障信息,使所有設(shè)備的故障、主備狀態(tài)、AB機(jī)排序均被每一個(gè)雙機(jī)熱備決策模塊所獲知。采用了分布式計(jì)算的概念,在熱備決策過(guò)程中,杜絕了與伴機(jī)的反復(fù)信息交互,實(shí)現(xiàn)了給出任務(wù),分布運(yùn)算,從上到下一次性完成熱備決策。該方法強(qiáng)調(diào)了結(jié)果的惟一性,通過(guò)AB機(jī)排序,消除了決策結(jié)果的隨機(jī)性;同時(shí)強(qiáng)調(diào)了可擴(kuò)展性,使用分級(jí)別的故障狀態(tài)字,適配不同的故障檢測(cè)機(jī)制和未來(lái)的多機(jī)熱備擴(kuò)展,為未來(lái)的多機(jī)熱備和冗余故障檢測(cè)預(yù)留了擴(kuò)展的空間。所以該方法具有主機(jī)了解所有相關(guān)機(jī)器故障,單機(jī)的間歇性故障不會(huì)導(dǎo)致主備反復(fù)切換,可根據(jù)故障級(jí)別進(jìn)行切換決策,便于擴(kuò)展等優(yōu)點(diǎn)。
[1] 王秀娟.調(diào)度集中系統(tǒng)中雙機(jī)熱備機(jī)制的實(shí)現(xiàn) [D].北京交通大學(xué)學(xué)報(bào):自然科學(xué)版,2009(2).
[2] 楊曉芬.實(shí)時(shí)數(shù)據(jù)庫(kù)系統(tǒng)雙機(jī)熱備機(jī)制設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2012(29).
[3] 王飛,曹桂均.雙機(jī)熱備系統(tǒng)心跳失效的防護(hù)方案[J].鐵路計(jì)算機(jī)應(yīng)用,2013(3).