專利名稱::基于集群備份的容災(zāi)系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于網(wǎng)絡(luò)系統(tǒng)領(lǐng)域,尤其是涉及網(wǎng)絡(luò)系統(tǒng)中基于集群備份的容災(zāi)系統(tǒng)及方法。
背景技術(shù):
:隨著現(xiàn)代網(wǎng)絡(luò)技術(shù)的飛速發(fā)展和用戶數(shù)量的日益增長(zhǎng),網(wǎng)絡(luò)的規(guī)模越來(lái)越大,因此對(duì)于網(wǎng)絡(luò)中的服務(wù)器,無(wú)論是單機(jī)容量,還是服務(wù)器的數(shù)量都要同步提升以滿足用戶需求。同時(shí),對(duì)服務(wù)器的可靠性和容災(zāi)能力的要求也越來(lái)越高。為在導(dǎo)致服務(wù)器癱瘓的災(zāi)害發(fā)生后能夠有一種可靠的容災(zāi)機(jī)制能在現(xiàn)有條件下盡最大努力恢復(fù)對(duì)用戶的服務(wù)響應(yīng),必須對(duì)服務(wù)器數(shù)據(jù)進(jìn)行冗余備份。由于單機(jī)運(yùn)行已經(jīng)遠(yuǎn)遠(yuǎn)不能達(dá)到要求,所以重要的數(shù)據(jù)必須采用主用機(jī)和備用機(jī)的備份的主備用方式,即備對(duì)主實(shí)現(xiàn)系統(tǒng)及數(shù)據(jù)文件的同步。這種設(shè)立獨(dú)立的備份機(jī)來(lái)對(duì)主用機(jī)進(jìn)行備份的方法我們稱之為獨(dú)立冗余備份機(jī)制?,F(xiàn)有的容災(zāi)技術(shù)方案主要是進(jìn)行雙機(jī)冗余備份或者多機(jī)冗余備份等基于獨(dú)立冗余備份機(jī)制的容突方法。雙機(jī)冗余備份是指在系統(tǒng)運(yùn)行過(guò)程中有兩臺(tái)機(jī)器通過(guò)通信電纜保持系統(tǒng)和數(shù)據(jù)同步的過(guò)程,備用機(jī)不斷檢測(cè)當(dāng)前工作的主用機(jī)鏡像文件及系統(tǒng)的變化情況并對(duì)變化數(shù)據(jù)進(jìn)行備份。主用機(jī)和備份機(jī)采取一對(duì)一冗余備份的策略。專利號(hào)為200410002153.6的發(fā)明專利《一種網(wǎng)管雙機(jī)容災(zāi)備份的實(shí)現(xiàn)方法》記載了一種現(xiàn)有的雙機(jī)備份方法,是通過(guò)正常狀態(tài)下在運(yùn)行服務(wù)器上運(yùn)行系統(tǒng),并實(shí)時(shí)的將系統(tǒng)中的數(shù)據(jù)復(fù)制到容災(zāi)的備份服務(wù)器上,至少在所述備份服務(wù)器上運(yùn)行第一監(jiān)控程序,該第一監(jiān)控程序與所述運(yùn)行服務(wù)器建立連接以檢測(cè)運(yùn)行服務(wù)器的工作狀態(tài),并在檢測(cè)到所述運(yùn)行服務(wù)器由于突難導(dǎo)致癱瘓時(shí)自動(dòng)在備份服務(wù)器上啟動(dòng)網(wǎng)管系統(tǒng)進(jìn)行容災(zāi)恢復(fù)。多機(jī)冗余備份是指將多臺(tái)主用機(jī)和備份機(jī)進(jìn)行合理規(guī)劃后的一種一對(duì)多或者多對(duì)多冗余備份的策略。200510034607.2的發(fā)明專利《多機(jī)備份的方法》記載了一種多機(jī)備份的方法,其中任一主用機(jī)連接一臺(tái)或多臺(tái)備用機(jī),任一備用機(jī)連接一臺(tái)或多臺(tái)主用機(jī),每臺(tái)備用機(jī)的配置文件中均記載有與其連接的主用機(jī)的IP地址和備份周期,每臺(tái)主用機(jī)的配置文件中均記載有與其連接的備用機(jī)的IP地址或機(jī)器名稱。這種多機(jī)備份提高了備份的靈活性,一臺(tái)主用機(jī)能夠響應(yīng)多臺(tái)備用機(jī)的備份請(qǐng)求,一臺(tái)備用機(jī)也能向多臺(tái)主用機(jī)提出備份請(qǐng)求;實(shí)現(xiàn)備用機(jī)定期請(qǐng)求,主用機(jī)不需要實(shí)時(shí)檢測(cè)鏡像文件的變化情況,有效降低鏡像軟件對(duì)于主用機(jī)的性能影響。備份,都需要使用獨(dú)立的備用機(jī)來(lái)對(duì)主用機(jī)進(jìn)行備份,在主用機(jī)工作正常的時(shí)候備用機(jī)大部分時(shí)間處于靜默狀態(tài),只是進(jìn)行信號(hào)檢測(cè)和數(shù)據(jù)更新的時(shí)候執(zhí)行檢測(cè)和備份操作,無(wú)論是一對(duì)一、一對(duì)多,還是多對(duì)多的備份方式,其機(jī)器冗余度都很大,單機(jī)利用率非常低下,例如一對(duì)五的備份方式,如果網(wǎng)絡(luò)中有10臺(tái)主用機(jī),那么需要使用2臺(tái)備用機(jī),這2臺(tái)備用機(jī)由于單機(jī)利用效率低造成資源上很大的浪費(fèi),也增加了硬件上的成本;而且在進(jìn)行容災(zāi)恢復(fù)的時(shí)候,并沒(méi)有對(duì)多個(gè)對(duì)等的正常工作的獨(dú)立服務(wù)器資源進(jìn)行整體上的合理規(guī)劃和分調(diào),整體利用率在某些情況下也非常低。
發(fā)明內(nèi)容本發(fā)明的目的是針對(duì)上述基于獨(dú)立冗余備份的容災(zāi)技術(shù)的缺陷,提供了一種基于集群備份的容災(zāi)系統(tǒng)及方法。為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種基于集群備份的容災(zāi)系統(tǒng),包括負(fù)載代理單元及負(fù)載服務(wù)單元,負(fù)載服務(wù)單元包括至少兩個(gè)服務(wù)器節(jié)點(diǎn),每一服務(wù)器節(jié)點(diǎn)包括一本地?cái)?shù)據(jù)庫(kù),各服務(wù)器節(jié)點(diǎn)之間相互連接;負(fù)載服務(wù)單元包括一與用戶終端進(jìn)行業(yè)務(wù)交互的主服務(wù)器節(jié)點(diǎn),其余服務(wù)器節(jié)點(diǎn)為非主服務(wù)器節(jié)點(diǎn);所述業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù);負(fù)載代理單元包括負(fù)載調(diào)度器,所述負(fù)載調(diào)度器與負(fù)載服務(wù)單元中的各服務(wù)器節(jié)點(diǎn)分別連接,當(dāng)檢測(cè)到主服務(wù)器節(jié)點(diǎn)的心跳停止時(shí),對(duì)該主服務(wù)器節(jié)點(diǎn)執(zhí)行失敗轉(zhuǎn)移操作,從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種基于集群備份的容災(zāi)方法,包括主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互;所述業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù);負(fù)載代理單元當(dāng)負(fù)載代理單元檢測(cè)到當(dāng)前主服務(wù)節(jié)點(diǎn)的心跳停止時(shí),從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。本發(fā)明基于集群備份的容災(zāi)系統(tǒng)及方法,通過(guò)引入集群備份機(jī)制,將傳統(tǒng)備用服務(wù)器節(jié)點(diǎn)改造為與主服務(wù)器節(jié)點(diǎn)對(duì)等的服務(wù)器節(jié)點(diǎn),使得集群中任意兩服務(wù)器節(jié)點(diǎn)互為備份,當(dāng)一臺(tái)服務(wù)器節(jié)點(diǎn)失效時(shí)候,由于集群內(nèi)其他的服務(wù)器節(jié)點(diǎn)均有該服務(wù)器節(jié)點(diǎn)的數(shù)據(jù)備份,故增加了備份的冗余度。同時(shí),由于本發(fā)明無(wú)需為服務(wù)器節(jié)點(diǎn)設(shè)置獨(dú)立的備份服務(wù)器節(jié)點(diǎn),從而提高了單機(jī)利用率以及對(duì)等的多個(gè)服務(wù)器節(jié)點(diǎn)的整體利用率。圖1為本發(fā)明一種基于集群備份的容災(zāi)系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖;圖2為本發(fā)明一種基于集群備份的容災(zāi)系統(tǒng)實(shí)施例二的結(jié)構(gòu)示意圖;圖3為本發(fā)明一種基于集群備份的容突系統(tǒng)實(shí)施例三的結(jié)構(gòu)示意圖;圖4為本發(fā)明一種基于集群備份的容突系統(tǒng)實(shí)施例四的結(jié)構(gòu)示意圖;圖5為本發(fā)明一種基于集群備份的容災(zāi)方法實(shí)施例的一流程圖;圖6為本發(fā)明一種基于集群備份的容災(zāi)方法中初始化選舉過(guò)程流程圖;圖7為本發(fā)明一種基于集群備份的容災(zāi)方法中負(fù)載分配過(guò)程流程圖;圖8為本發(fā)明一種基于集群備份的容突方法中集群備份過(guò)程流程圖;圖9為本發(fā)明一種基于集群備份的容災(zāi)方法中負(fù)載失敗轉(zhuǎn)移過(guò)程流程圖。具體實(shí)施例方式下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。圖1為本發(fā)明一種基于集群備份的容災(zāi)系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖。如圖1所示,該實(shí)施例中的基于集群備份的容災(zāi)系統(tǒng)包括負(fù)載代理單元LoadProxy100及負(fù)載服務(wù)單元LoadServer200。負(fù)載服務(wù)單元元LoadServer200包括服務(wù)器節(jié)點(diǎn)ServerNode210,該實(shí)施例中以S-Nodel,S-Node2,S-Node3,S-Node4及S-Node5五個(gè)服務(wù)器節(jié)點(diǎn)ServerNode210為例,每一服務(wù)器節(jié)點(diǎn)中包括一本地?cái)?shù)據(jù)庫(kù)Database220。服務(wù)器節(jié)點(diǎn)S-Nodel,S-Node2,S-Node3,S-Node4及S-Node5分別包括本地?cái)?shù)據(jù)庫(kù)Data1,Data2,Data3,Data4及Data5各服務(wù)器節(jié)點(diǎn)之間相互連接。該實(shí)施例中包括用戶終端User—1,User—2,User—3,…,User—n。負(fù)載服務(wù)單元包括一與用戶終端User—n進(jìn)行業(yè)務(wù)交互的主服務(wù)器節(jié)點(diǎn),該實(shí)施例以S-Node5為用戶終端User—n的主服務(wù)器節(jié)點(diǎn),其他服務(wù)器節(jié)點(diǎn)S-Nodel,S-Node2,S-Node3及S-Node4為非主服務(wù)器節(jié)點(diǎn)。兵中用戶終端User—n與主服務(wù)器節(jié)點(diǎn)S-Node5之間的業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)S-Node5向主服務(wù)器節(jié)點(diǎn)S-Node5中的本地?cái)?shù)據(jù)庫(kù)Data讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)S-Node5向主服務(wù)器節(jié)點(diǎn)S-Node5中的本地?cái)?shù)據(jù)庫(kù)Data5寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)S-Node5向負(fù)載服務(wù)單元200中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)Datal,Data2,Data3及Data4備份所述數(shù)據(jù)。負(fù)載代理單元LoadProxy100包括負(fù)載調(diào)度器LoadDispatcherl10。負(fù)載調(diào)度器LoadDispatcher110與負(fù)載服務(wù)單元LoadServer200中的服務(wù)器節(jié)點(diǎn)S-Nodel,S-Node2,S-Node3,S-Node4及S-Node5分別連接,當(dāng)檢測(cè)到主服務(wù)器節(jié)點(diǎn)S-Node5的心跳停止時(shí),對(duì)主服務(wù)器節(jié)點(diǎn)S-Node5執(zhí)行失敗轉(zhuǎn)移操作,從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。該實(shí)施例中,負(fù)載代理單元LoadProxy用于用戶終端首次接入時(shí)進(jìn)行集群負(fù)載分流,將用戶終端分配到一個(gè)合適的服務(wù)器節(jié)點(diǎn),此后只要該服務(wù)器節(jié)點(diǎn)工作正常,該用戶終端的所有服務(wù)器請(qǐng)求將定向到該服務(wù)器節(jié)點(diǎn),并由該服務(wù)器節(jié)點(diǎn)提供相應(yīng)服務(wù)。負(fù)載代理統(tǒng)籌和優(yōu)化后端的負(fù)載服務(wù)單元中的服務(wù)器節(jié)點(diǎn)資源,使之能高效對(duì)用戶終端提供服務(wù),能有效的控制負(fù)載服務(wù)單元流量,在突難發(fā)生時(shí)候利用負(fù)載服務(wù)單元的集群備份優(yōu)勢(shì)進(jìn)行容災(zāi)。同時(shí)該實(shí)施例中,負(fù)載服務(wù)單元LoadServer是用戶終端的用戶數(shù)據(jù)實(shí)現(xiàn)全冗余備份的對(duì)等服務(wù)器節(jié)點(diǎn)的集群,是對(duì)用戶提供真正服務(wù)的實(shí)體。將提供相同服務(wù)的后端多個(gè)對(duì)等服務(wù)器節(jié)點(diǎn)采用集群技術(shù)組成一個(gè)具有域概念的簇。在每個(gè)簇中通過(guò)選舉算法選出一個(gè)簇首作為主服務(wù)器節(jié)點(diǎn)和若干個(gè)非主服務(wù)器節(jié)點(diǎn)。其中若干個(gè)非主服務(wù)器節(jié)點(diǎn)中,若干個(gè)副簇首作為候選主服務(wù)器節(jié)點(diǎn),其余的成員作為從服務(wù)器節(jié)點(diǎn)。主服務(wù)器保證簇內(nèi)用戶終端的用戶數(shù)據(jù)的一致性維護(hù)。對(duì)于簇中所有的服務(wù)器節(jié)點(diǎn),其中的任意兩個(gè)服務(wù)器節(jié)點(diǎn)互為用戶終端的用戶數(shù)據(jù)的冗余備份。主從服務(wù)器在配備的功能上完全對(duì)等,沒(méi)有區(qū)別,都是一般的服務(wù)器節(jié)點(diǎn)ServerNode。整個(gè)簇通過(guò)IP隧道的負(fù)載均衡集群方式使用負(fù)載調(diào)度器LoadDispatcher的接入地址AccessIP統(tǒng)一對(duì)簇外用戶終端提供首次服務(wù)入口。這里的首次服務(wù)最常見(jiàn)的情形就是用戶終端注冊(cè)。當(dāng)負(fù)載調(diào)度器LoadDispatcher檢測(cè)到簇中任意一個(gè)或者幾個(gè)服務(wù)器節(jié)點(diǎn)心跳停止,即出現(xiàn)故障,如宕機(jī)時(shí),可以調(diào)度正常工作的服務(wù)器節(jié)點(diǎn)接替其進(jìn)行服務(wù)而實(shí)現(xiàn)容災(zāi)。圖2為本發(fā)明一種基于集群備份的容突系統(tǒng)實(shí)施例二的結(jié)構(gòu)示意圖。如圖2所示,該實(shí)施例中的負(fù)載調(diào)度器LoadDispatch110包括心跳檢測(cè)模塊HBDetecter111,與負(fù)載服務(wù)單元LoadServer200中的每一服務(wù)器節(jié)點(diǎn)保持心跳連接,用于檢測(cè)各服務(wù)器節(jié)點(diǎn)的心跳信息。心跳信息中可以包括服務(wù)器節(jié)點(diǎn)的性能荷數(shù)(CapabilityandLoadNumber,簡(jiǎn)稱CLN)。CLN是指對(duì)服務(wù)器節(jié)點(diǎn)的性能和負(fù)荷等方面的指標(biāo)按照加權(quán)性荷數(shù)算法得到的一個(gè)分?jǐn)?shù),可以作為評(píng)判服務(wù)器節(jié)點(diǎn)的心跳能力的參考標(biāo)準(zhǔn)。CLN—般通過(guò)心跳信息定期向負(fù)載調(diào)度器LoadDispatcher110進(jìn)行匯報(bào)。心跳檢測(cè)模塊HBDetecter111—般用于定期檢測(cè)服務(wù)器節(jié)點(diǎn)的心跳信息,當(dāng)檢測(cè)到某服務(wù)器節(jié)點(diǎn)發(fā)送的心跳信息超時(shí)時(shí),即可認(rèn)為該服務(wù)器節(jié)點(diǎn)出現(xiàn)故障,負(fù)載調(diào)度器LoadDispatch110就要啟動(dòng)失敗轉(zhuǎn)移操:作。選舉模塊ElectionBox112,與所述心跳檢測(cè)模塊HBDetecter111連接,用于定期接收心跳檢測(cè)模塊HBDetecter111檢測(cè)到的各服務(wù)器節(jié)點(diǎn)的心跳信息,周期性維護(hù)服務(wù)器節(jié)點(diǎn)的心跳信息列表。選舉模塊ElectionBox112是負(fù)載調(diào)度器LoadDispatcherIIO的數(shù)據(jù)維護(hù)模塊。當(dāng)心跳信息中包括CLN時(shí),選舉模塊ElectionBox112可以定期接收服務(wù)器節(jié)點(diǎn)的打分票據(jù)CLNTicket,并周期性維護(hù)服務(wù)器節(jié)點(diǎn)的打分列表,選舉出主服務(wù)器,候選主服務(wù)器和從服務(wù)器。打分票據(jù)CLNTicket字段一般構(gòu)成如下服務(wù)器節(jié)點(diǎn)的主從標(biāo)識(shí)符W/M/S,該服務(wù)器節(jié)點(diǎn)的硬件地址標(biāo)識(shí)符LSID,該服務(wù)器節(jié)點(diǎn)性能荷數(shù)CLN。調(diào)度策略模塊DispatchStrategy113,與所述選舉模塊ElectionBox112連接,用于根據(jù)心跳信息列表決策出代理轉(zhuǎn)發(fā)的主服務(wù)器節(jié)點(diǎn)的IP地址或檢測(cè)出需要進(jìn)行失敗轉(zhuǎn)移的主服務(wù)器節(jié)點(diǎn)的IP地址。調(diào)度策略模塊DispatchStrategy113主要對(duì)非主服務(wù)器節(jié)點(diǎn)上收集的信息為進(jìn)行負(fù)載的分發(fā)和失敗轉(zhuǎn)移采用相應(yīng)的算法策略決策。負(fù)載分發(fā)和失敗轉(zhuǎn)移都使用最小統(tǒng)計(jì)加權(quán)性荷數(shù)算法。調(diào)度策略模塊DispatchStrategy113主要對(duì)選舉模塊ElectionBox112中的數(shù)據(jù)進(jìn)行處理后決策出一個(gè)代理轉(zhuǎn)發(fā)的主服務(wù)器節(jié)點(diǎn)LoadServer的IP或者是一個(gè)檢測(cè)出宕機(jī)需要進(jìn)行失敗轉(zhuǎn)移的主服務(wù)器節(jié)點(diǎn)的IP,并交給重定向轉(zhuǎn)發(fā)模塊Redirector114進(jìn)4亍處理。重定向轉(zhuǎn)發(fā)器模塊Redirector114,與所述調(diào)度策略模塊DispatchStrategy113連接,用于根據(jù)從所述調(diào)度策略模塊DispatchStrategy113獲得的代理轉(zhuǎn)發(fā)的主服務(wù)器節(jié)點(diǎn)的IP地址重定向轉(zhuǎn)發(fā)用戶終端User一n的注冊(cè)服務(wù)請(qǐng)求或指示需要進(jìn)行失敗轉(zhuǎn)移的主服務(wù)器節(jié)點(diǎn)的IP地址。圖3為本發(fā)明一種基于集群備份的容災(zāi)系統(tǒng)實(shí)施例三的結(jié)構(gòu)示意圖。如圖3所示,該實(shí)施例中的負(fù)載代理單元LoadProxy100還包括一冗余備份器Baker120;所述負(fù)載調(diào)度器LoadDispatch110還包括一廣告模塊Ads115,與冗余備份器Baker120連接。廣告模塊Ads115用于定期向冗余備份器發(fā)送負(fù)載調(diào)度器的廣告信息,所述廣告信息包括心跳信息,冗余備份器Baker120接收到負(fù)載調(diào)度器的廣告信息,根據(jù)廣告信息中的心跳信息可以同步更新冗余備份器Baker120中的心跳信息列表。冗余備份器Baker120是負(fù)載調(diào)度器LoadDispatcher110進(jìn)行雙機(jī)冗余熱備份的IP服務(wù)備份機(jī),可以使用LINUX中通用地址冗余協(xié)議實(shí)現(xiàn)。由于負(fù)載調(diào)度器LoadDispatcher110在整個(gè)容災(zāi)系統(tǒng)中起著重要的作用,冗余備份器Baker120的作用是當(dāng)接收負(fù)載調(diào)度器LoadDispatcher110的廣告信息超時(shí)時(shí)4美i^為負(fù)載調(diào)度器LoadDispatcher110出現(xiàn)故障,Y更可啟動(dòng)虛擬IP地址服務(wù),將冗余備份器的工作狀態(tài)轉(zhuǎn)換成負(fù)載調(diào)度器,使冗余備份器Baker120接續(xù)原負(fù)載調(diào)度器LoadDispatcher110的工作,使原負(fù)載調(diào)度器LoadDispatcher110工作持續(xù)進(jìn)行。隨后進(jìn)行通用地址冗余協(xié)議使用測(cè)試,保i正負(fù)載調(diào)度器LoadDispatcher110的IP月良務(wù)對(duì)用戶請(qǐng)求不間斷進(jìn)行。冗余備份器Baker120是負(fù)載調(diào)度器LoadDispatcher120功能復(fù)制體,定期接收負(fù)載調(diào)度器LoadDispatcher120的廣告信息,以保持與選舉模塊ElectionBox112中的心跳信息的同步更新。該實(shí)施例中,通過(guò)在負(fù)載代理單元LoadProxy中設(shè)置冗余備份器Baker,對(duì)負(fù)載調(diào)度器LoadDispatch實(shí)行IP冗余熱備份,保障其健壯性,降低負(fù)載代理單元的單點(diǎn)故障風(fēng)險(xiǎn),進(jìn)一步提高了容災(zāi)系統(tǒng)的容災(zāi)能力。圖4為本發(fā)明一種基于集群備份的容突系統(tǒng)實(shí)施例四的結(jié)構(gòu)示意圖。如圖4所示,該實(shí)施例中的服務(wù)器節(jié)點(diǎn)ServerNode210包括IP配置器模塊IPConfiger211,當(dāng)該IP配置模塊IPConfiger211所屬的服務(wù)器節(jié)點(diǎn)ServerNode210為重新確定的主力良務(wù)器節(jié)點(diǎn)時(shí),用于響應(yīng)負(fù)載調(diào)度器LoadDispatcher110發(fā)出的冗余IP地址配置命令,并將該IP配置模塊IPConfiger211所屬的服務(wù)器節(jié)點(diǎn)ServerNode210的IP地址配置為原主服務(wù)器節(jié)點(diǎn)的IP地址,使該服務(wù)器節(jié)點(diǎn)接續(xù)原主服務(wù)器節(jié)點(diǎn)進(jìn)行工作。打分模塊TicketMarker212,用于周期性收集該服務(wù)器節(jié)點(diǎn)的性能和/或負(fù)荷指標(biāo),計(jì)算該服務(wù)器節(jié)點(diǎn)的性能荷數(shù)CLN。心跳模塊HeartBeat213,與負(fù)載調(diào)度器LoadDispatcher110保持心跳連接,定期將所述性能荷數(shù)CLN攜帶在心跳信息中發(fā)送至負(fù)載調(diào)度器LoadDispatcher110。事件通知模塊Informer214,事件通知分為上行事件通知(UplinkNotice)和下行事件通知(DownlinkNotice)。上行事件通知由從服務(wù)器執(zhí)行,向主服務(wù)器發(fā)送修改相關(guān)數(shù)據(jù)的通知請(qǐng)求;下行事件通知由主服務(wù)器執(zhí)行,向從服務(wù)器發(fā)送數(shù)據(jù)同步更新的命令。主服務(wù)器默認(rèn)可對(duì)本地?cái)?shù)據(jù)進(jìn)行直接讀操作和直接寫操作;從服務(wù)器默認(rèn)只可對(duì)本地?cái)?shù)據(jù)直接讀操作,僅當(dāng)收到主服務(wù)器的下行事件通知時(shí)候才可進(jìn)行直接寫操作。當(dāng)該事件通知^t塊214所屬的服務(wù)器節(jié)點(diǎn)ServerNode210為主服務(wù)器節(jié)點(diǎn)時(shí),主服務(wù)器節(jié)點(diǎn)通過(guò)事件通知模塊Informer214執(zhí)行上行事件通知UplinkNotice,通知負(fù)載服務(wù)單元LoadServer200中的非主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新的命令;當(dāng)該事件通知模塊Informer214所屬的服務(wù)器節(jié)點(diǎn)ServerNode210為非主服務(wù)器節(jié)點(diǎn)時(shí),主服務(wù)器節(jié)點(diǎn)通過(guò)事件通知模塊Informer214接受下行事件通知DownlinkNotice,接收負(fù)載服務(wù)單元LoadServer200中的主服務(wù)器節(jié)點(diǎn)發(fā)送的數(shù)據(jù)同步更新的命令。數(shù)據(jù)讀/寫操作模塊DataWriter/Reader,用于對(duì)本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù),寫操作時(shí)寫入和更新數(shù)據(jù),讀操作讀出數(shù)據(jù),讀操作都為直接讀操作,寫操作又分為直接寫操作和間接寫操作。數(shù)據(jù)讀/寫操作模塊DataWriter/Reade包括數(shù)據(jù)讀才乘作模塊DataReader2151及數(shù)據(jù)寫操作模塊DataWirter2152。直接寫操作DirectRead是對(duì)本地?cái)?shù)據(jù)庫(kù)Database進(jìn)行直接讀操作DirectRead,直接寫操作DirectWrite是直接對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行寫操作。間接寫操作IndirectWrite是指從服務(wù)器不直接對(duì)本地?cái)?shù)據(jù)庫(kù)進(jìn)行寫操作,而是通過(guò)事件通知的方式由主服務(wù)器節(jié)點(diǎn)對(duì)主服務(wù)器節(jié)點(diǎn)的本地?cái)?shù)據(jù)庫(kù)的直接寫操作DirectWrite后,再由主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新指令使非主服務(wù)器節(jié)點(diǎn)啟動(dòng)各自的本地?cái)?shù)據(jù)庫(kù)的直接寫操作DirectWrite。間接寫操作DirectWrite又稱為備份操作,該實(shí)施例中,數(shù)據(jù)寫操作模塊DataWirter2152與事件通知模塊Informer214連接,當(dāng)對(duì)本地?cái)?shù)據(jù)庫(kù)Database寫數(shù)據(jù)時(shí),用于通過(guò)事件通知模塊Informer214對(duì)負(fù)載服務(wù)單元LoadServer200中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)。圖5為本發(fā)明基于集群備份的容災(zāi)方法的一流程圖。如圖5所示,該實(shí)施例中的容突方法包括步驟10、主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互;所述業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的冬地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)。步驟20、負(fù)載代理單元當(dāng)負(fù)載代理單元檢測(cè)到當(dāng)前主服務(wù)節(jié)點(diǎn)的心跳停止時(shí),從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。所述主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫所述數(shù)據(jù)包括;主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新指令,向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)。以下結(jié)合基于集群備份的容災(zāi)系統(tǒng)說(shuō)明本發(fā)明基于集群備份的容災(zāi)方法的具體流程。本發(fā)明基于集群備份的容災(zāi)方法可以包括四個(gè)階段第一階段、選舉過(guò)程?;诩旱娜轂?zāi)系統(tǒng)啟動(dòng)后進(jìn)行選舉,各個(gè)服務(wù)器節(jié)點(diǎn)LoadServer周期性進(jìn)行性能負(fù)荷數(shù)CLN的打分,并將CLNTicket發(fā)送到負(fù)載代理單元LoadProxy中的選舉模塊。負(fù)載調(diào)度器DispatchStrategy會(huì)使得選舉模塊中誕生兩種角色ROLE:主服務(wù)器節(jié)點(diǎn)(MasterNode,簡(jiǎn)稱M-Node),非主服務(wù)器節(jié)點(diǎn)。根據(jù)設(shè)計(jì)需求或習(xí)慣,非主服務(wù)器節(jié)點(diǎn)又可以分為侯選主服務(wù)器節(jié)點(diǎn)(CandidateNode,簡(jiǎn)稱C-Node)和從服務(wù)器節(jié)點(diǎn)(SlaveNode,簡(jiǎn)稱S-Node)。各個(gè)服務(wù)器將節(jié)點(diǎn)根據(jù)自身的主從角色進(jìn)行數(shù)據(jù)庫(kù)的配置。候選主服務(wù)器節(jié)點(diǎn)只是負(fù)載代理單元LoadProxy對(duì)其進(jìn)行區(qū)分,在物理上候選主服務(wù)器節(jié)點(diǎn)配置成從服務(wù)器節(jié)點(diǎn)。其中主服務(wù)器節(jié)點(diǎn)擁有用戶終端的用戶數(shù)據(jù)的直接讀寫權(quán)限;候選主服務(wù)器節(jié)點(diǎn)和從服務(wù)器節(jié)點(diǎn)擁有用戶終端的用戶數(shù)據(jù)的直接讀權(quán)限和間接寫權(quán)限。負(fù)載代理單元LoadProxy可以決策在候選主服務(wù)器節(jié)點(diǎn)中選擇新的主服務(wù)器節(jié)點(diǎn)。第二階段、負(fù)載分配過(guò)程。當(dāng)用戶終端的服務(wù)注冊(cè)請(qǐng)求到達(dá)負(fù)載代理單元LoadProxy時(shí),負(fù)載代理單元LoadProxy根據(jù)選舉模塊中的服務(wù)器性能負(fù)荷數(shù)列表決策出一個(gè)擁有最小統(tǒng)計(jì)加權(quán)性荷數(shù)的服務(wù)器節(jié)點(diǎn)LoadServer,并轉(zhuǎn)發(fā)用戶請(qǐng)求。此過(guò)程保證集群中負(fù)載的最優(yōu)分配,避免產(chǎn)生因服務(wù)器節(jié)點(diǎn)流量不均導(dǎo)致某些服務(wù)器節(jié)點(diǎn)過(guò)載的災(zāi)難。第三階段、集群備份過(guò)程。當(dāng)用戶終端的服務(wù)注冊(cè)請(qǐng)求到達(dá)服務(wù)器節(jié)點(diǎn)LoadServer時(shí)候,服務(wù)器節(jié)點(diǎn)LoadServer啟動(dòng)用戶終端的用戶信息數(shù)據(jù)的集群備份過(guò)程,使得集群中任意兩個(gè)服務(wù)器節(jié)點(diǎn)LoadServer互為備份。只有當(dāng)集群備份過(guò)程完成后才返回用戶注冊(cè)請(qǐng)求的響應(yīng),此時(shí)用戶終端注冊(cè)完成,并且此后用戶終端可以向服務(wù)器節(jié)點(diǎn)發(fā)起業(yè)務(wù)服務(wù)請(qǐng)求。在業(yè)務(wù)服務(wù)中的寫搡作也都必須進(jìn)行集群備份過(guò)程。第四階段、負(fù)載失敗轉(zhuǎn)移過(guò)程。當(dāng)負(fù)載代理單元LoadProxy檢測(cè)到某個(gè)服務(wù)器節(jié)點(diǎn)LoadServerl的心跳停止時(shí)候,便發(fā)起負(fù)載失敗轉(zhuǎn)移過(guò)程。將某臺(tái)性能負(fù)荷數(shù)較小并且保持心跳的服務(wù)器節(jié)點(diǎn)LoadServer2配置服務(wù)器節(jié)點(diǎn)LoadServerl的IP,使用用戶備份數(shù)據(jù)對(duì)用戶提供持續(xù)服務(wù)。主服務(wù)器節(jié)點(diǎn)的失敗轉(zhuǎn)移還要進(jìn)行選舉過(guò)程。以下對(duì)本發(fā)明提出的基于集群備份的容突方法四個(gè)階段進(jìn)行具體描述。第一階段、選舉過(guò)程。該基于集群備份的容災(zāi)系統(tǒng)啟動(dòng)時(shí)候就開始執(zhí)行選舉過(guò)程。負(fù)載代理單元LoadProxy擁有雙網(wǎng)卡配置,其中接入IP地址(AccessIP)用于集群服務(wù)入口,用于接收用戶終端的注冊(cè)服務(wù)請(qǐng)求,代理IP地址(ProxyIP)用于和后端的負(fù)載服務(wù)單元中的服務(wù)器節(jié)點(diǎn)集群通信。選舉過(guò)程保證負(fù)載代理單元LoadProxy先于服務(wù)器節(jié)點(diǎn)LoadServer初始化。每臺(tái)服務(wù)器節(jié)點(diǎn)LoadServer的配置文件中有負(fù)載代理單元LoadProxy的IP地址,新加入的服務(wù)器節(jié)點(diǎn)LoadServer必須向負(fù)載代理單元LoadProxy發(fā)送心跳加入集群。負(fù)載代理單元LoadProxy在以下兩種情況下可以發(fā)起選舉一、系統(tǒng)初始化時(shí);二、主服務(wù)器節(jié)點(diǎn)心跳停止,即發(fā)生故障,如宕機(jī)時(shí)。二者選舉過(guò)程相似,其中過(guò)程啟動(dòng)條件有所差別,前者是系統(tǒng)啟動(dòng)時(shí)候由負(fù)載代理單元LoadProxy發(fā)起,后者是在選舉單元中發(fā)現(xiàn)心跳信息列表中主服務(wù)器節(jié)點(diǎn)的心跳超時(shí)時(shí)由負(fù)載代理單元LoadProxy發(fā)起。以初始化選舉過(guò)程為例如圖6,包括如下步驟步驟Al、LoadProxy初始化,啟動(dòng)各個(gè)才莫塊。對(duì)LoadDispatcher和冗余備份器Baker使用通用地址冗余協(xié)議進(jìn)行配置后,先啟動(dòng)Baker的負(fù)載代理單元LoadProxy進(jìn)程,并將ElectionBox線程設(shè)置較高優(yōu)先級(jí),HBDetecter,DispatchStrategy,Redirector等3個(gè)模塊線程處于低優(yōu)先級(jí),在Baker作為冗余備份機(jī)期間這3個(gè)線程一直處于靜默狀態(tài)。Baker的LoadProxy進(jìn)程不啟動(dòng)Ads才莫塊線程。再啟動(dòng)LoadDispatcher上的LoadProxy進(jìn)程,依次啟動(dòng)ElectionBox,HBDetecter,DispatchStrategy,Redirector,口Ads等5個(gè)才莫》夾纟戔程。步驟A2、LoadServer初始化,啟動(dòng)各個(gè)才莫塊。ServerNode上運(yùn)行LoadServer進(jìn)禾呈,并依次啟動(dòng)TicketMarker,HeartBeat,DataWriter,DataReader,IPConfiger和Informer等6個(gè)線程模塊。步驟A3、LoadServer獲耳又LoadProxy的ProxyIP。LoadServer讀耳又本地配置文件ls.cfg,從中獲得LoadProxy的ProxyIP,LoadDispatcher和Baker的MAC地址等信息。步驟A4、LoadServer向LoadProxy發(fā)送心跳,周期為T。獲得ProxyIP后,LoadServer以T為周期向LoadProxy發(fā)送心跳消息。心跳消息為UDP數(shù)據(jù)報(bào),主要由心跳消息的消息標(biāo)識(shí)符MID,CLNTicket字段標(biāo)識(shí)符TFlag和CLNTicket字段三個(gè)部分組成。如果TFlag為FALSE,LoadProxy識(shí)別為普通心跳消息,不關(guān)心后面字段;如果為TRUE,則需要解析后面的CLNTicket字段。CLNTicket字段構(gòu)成如下本才幾主/人標(biāo)識(shí)符W/M/S,本4幾硬件地址標(biāo)識(shí)符LSID,本纟幾性荷ltCLN。M表示主,S表示從(C表示候選主),W用于下新的LoadServer節(jié)點(diǎn)加入集群時(shí)候還未指定角色的情形,在主節(jié)點(diǎn)正常工作時(shí)候,該節(jié)點(diǎn)會(huì)被指定為S;LSID可用LoadServer的MAC地址;CLN為加權(quán)性荷數(shù),是對(duì)本機(jī)性能和負(fù)載指標(biāo)綜合衡量的加權(quán)參數(shù)。性荷數(shù)和最小加權(quán)性荷數(shù)算法定義如下假設(shè)某集群內(nèi)有一組服務(wù)器S={SO,SI,□,Sn-1},U(Si)表示服務(wù)器Si的CPU利用率,M(Si)表示服務(wù)器Si的當(dāng)前內(nèi)存利用率,D(Si)表示服務(wù)器Si的當(dāng)前硬盤利用率,C(Si)表示服務(wù)器Si的當(dāng)前連接數(shù),那么Si的性荷數(shù)為CLN(Si)={C(Si)*};性荷數(shù)越大,該服務(wù)器可服務(wù)性越差。當(dāng)前的新連接請(qǐng)求會(huì)被送到服務(wù)器Sm,當(dāng)且僅當(dāng)服務(wù)器Sm滿足以下條件CLN(Sm)=min{CLN(Si)},0《i<n_1。若CLN為一段時(shí)間內(nèi)的統(tǒng)計(jì)值,則稱該算法為最小統(tǒng)計(jì)加權(quán)性荷數(shù)算法。步驟A5、LoadProxy創(chuàng)建心跳信息列表。LoadProxy的心跳檢測(cè)模塊檢測(cè)到心跳消息后將提取出各個(gè)服務(wù)器的IP地址并以此為關(guān)鍵字建立心跳信息列表,表項(xiàng)有IP地址(記為IP),服務(wù)器狀態(tài)(記為State),MAC地址(記為MAC),角色標(biāo)識(shí)(記為ROLE),角色確認(rèn)標(biāo)識(shí)(記為Confirm),CLN的統(tǒng)計(jì)值(記為StatCLN),CLN算術(shù)平均值(記為AverageCLN),歷史分流負(fù)荷數(shù)(記為HistoryLN),并對(duì)該表初始化。心跳信息列表一個(gè)可能的例子如下表1心跳信息列表<table>tableseeoriginaldocumentpage18</column></row><table>注State字段,ALIVE表示心跳存在,DEAD表示心跳停止。ROLE字段,C表示侯選主服務(wù)器節(jié)點(diǎn),S表示從服務(wù)器節(jié)點(diǎn),M表示主服務(wù)器節(jié)點(diǎn),W表示服務(wù)器節(jié)點(diǎn)的角色尚未指定。Confirm字段,T表示已經(jīng)完成角色確認(rèn),F表示未完成角色確認(rèn)。步驟A6、TicketMarker使用步驟A4中的加權(quán)性荷數(shù)算法計(jì)算CLN。步驟A7、LoadServer利用心跳消息發(fā)送CLNTicket。LoadServer收集到CLNTicket字段的相關(guān)內(nèi)容后,以周期為10T(T為心跳周期,前面系數(shù)可為適當(dāng)經(jīng)驗(yàn)值,這里以10為例)向LoadProxy發(fā)送心跳,即心跳消息中的TFlag字段每隔10T的時(shí)間填寫一次TRUE,在普通的心跳消息中填寫FALSE;步驟A8、LoadProxy接收到CLNTicket后將其放入投票箱。LoadProxy步驟A9、ElectionBox對(duì)心跳信息列表的性荷數(shù)進(jìn)行統(tǒng)計(jì)。當(dāng)CLN統(tǒng)計(jì)值數(shù)目到達(dá)一個(gè)閾值后計(jì)算出算術(shù)平均CLN作為在統(tǒng)計(jì)時(shí)間內(nèi)該LoadServer的性能負(fù)荷指標(biāo)的衡量參數(shù);在沒(méi)有產(chǎn)生算術(shù)平均CLN時(shí)候都使用默認(rèn)值。步驟A10、DispatchStrategy根據(jù)投票箱中統(tǒng)計(jì)性荷數(shù)進(jìn)行主從選舉。DispatchStrategy根據(jù)步驟A4中所述最小統(tǒng)計(jì)加權(quán)性荷數(shù)算法對(duì)投票箱中統(tǒng)計(jì)性荷數(shù)進(jìn)行排序,最小的作為主節(jié)點(diǎn),較小的3-5個(gè)作為候選主節(jié)點(diǎn)(依據(jù)總節(jié)點(diǎn)數(shù)決定),其他為從節(jié)點(diǎn),在心跳信息列表中進(jìn)行標(biāo)識(shí)。步驟Al1、ElectionBox根據(jù)心跳信息列表向LoadServer發(fā)送角色指示命令。步驟A12、LoadServer根據(jù)進(jìn)行角色配置,并在后續(xù)CLNTicket中進(jìn)行確認(rèn)。主節(jié)點(diǎn)將MySQL配置為主,從節(jié)點(diǎn)配置為從,這樣在后面的集群備份中主從數(shù)據(jù)復(fù)制的進(jìn)行就可以利用MySQL的功能實(shí)現(xiàn)。完成配置后在CLNTicket中將本機(jī)角色W修改為對(duì)應(yīng)值M或者S。步驟A13、LoadProxy檢查在后續(xù)的CLNTicket中主從標(biāo)識(shí)字段。標(biāo)識(shí)正確LoadProxy將心跳信息列表中的角色確認(rèn)標(biāo)識(shí)更新為TRUE;標(biāo)識(shí)不正確則重發(fā)角色指示命令直到標(biāo)識(shí)正確。步驟A14、LoadProxy檢查心跳信息列表中所有角色確認(rèn)標(biāo)識(shí)。所有標(biāo)識(shí)均為TRUE時(shí)候認(rèn)為角色指示成功,選舉過(guò)程結(jié)束,可以啟動(dòng)負(fù)載分配過(guò)程。第二階段、負(fù)載分配過(guò)程。當(dāng)用戶的注冊(cè)服務(wù)請(qǐng)求發(fā)送到LoadProxy的AccessIP時(shí),LoadProxy將根據(jù)心跳服務(wù)器資源使用最小統(tǒng)計(jì)加權(quán)性荷數(shù)算法進(jìn)行負(fù)載分配。負(fù)載分配過(guò)程如圖7所示,包括如下步驟步驟B1、用戶終端向擁有AccessIP的LoadProxy發(fā)送注冊(cè)服務(wù)請(qǐng)求。步驟B2、DispatchStrategy根據(jù)一定算法決策出一個(gè)負(fù)載服務(wù)器IP。心跳服務(wù)器列表中具有動(dòng)態(tài)維護(hù)的LoadServer的算術(shù)平均CLN值,依據(jù)CLN最小值分配原則決策出一個(gè)LoadServer進(jìn)行服務(wù)。如果決策出的LoadServer是主節(jié)點(diǎn),為保證主節(jié)點(diǎn)進(jìn)行集群備份時(shí)候有足夠資源進(jìn)行開銷,設(shè)定一個(gè)負(fù)載閾值,如果超過(guò)該負(fù)載閾值則應(yīng)分配給次小的LoadServer。步驟B3、更新ElectionBox對(duì)應(yīng)表項(xiàng)的HistoryLN。HistoryLN是LoadProxy對(duì)后端LoadServer負(fù)載情況的粗略統(tǒng)計(jì),顯示了該節(jié)點(diǎn)歷史上上的用戶流量,該數(shù)據(jù)一定程度上反映了流量滿載服務(wù)這種最壞情況下各個(gè)節(jié)點(diǎn)的負(fù)荷狀況,也是對(duì)負(fù)載分配的一個(gè)重要參考數(shù)據(jù),但是ElectionBox中的統(tǒng)計(jì)性荷數(shù)更能反映這種實(shí)時(shí)的節(jié)點(diǎn)負(fù)荷狀況??删C合考慮這兩個(gè)參數(shù)進(jìn)行負(fù)載分配。步驟B4、Redirector將用戶的注冊(cè)服務(wù)請(qǐng)求轉(zhuǎn)發(fā)到?jīng)Q策出的LoadServer。Redirector在負(fù)載分配過(guò)程中僅起到轉(zhuǎn)發(fā)用戶請(qǐng)求到?jīng)Q策出的節(jié)點(diǎn),實(shí)際上是將用戶請(qǐng)求重定向到實(shí)際服務(wù)節(jié)點(diǎn)的過(guò)程。步驟B5、該LoadServer啟動(dòng)集群備份,具體過(guò)程詳細(xì)參見(jiàn)以下的集群備份過(guò)程。步驟B6、完成集群備份后直接向用戶返回用戶服務(wù)注冊(cè)請(qǐng)求ACK。完成集群備份后LoadServer并不經(jīng)過(guò)LoadProxy而是直接根據(jù)用戶IP向該用戶發(fā)送ACK信息,指示用戶注冊(cè)已經(jīng)完成,可以進(jìn)行服務(wù)請(qǐng)求。第三階段、集群備份過(guò)程。集群備份過(guò)程可以發(fā)生在注冊(cè)或者更新用戶信息的時(shí)候。LoadServer在服務(wù)過(guò)程中,如果用戶只進(jìn)行存儲(chǔ)數(shù)據(jù)的讀操作,無(wú)論為其服務(wù)的是主節(jié)點(diǎn)還是從節(jié)點(diǎn),都在該節(jié)點(diǎn)上調(diào)用DataReader模塊進(jìn)行本地?cái)?shù)據(jù)的直接讀操作。集群備份過(guò)程如圖8所示,包括如下步驟步驟C1、寫操作請(qǐng)求。寫操作請(qǐng)求是指管理員或者用戶因?yàn)闃I(yè)務(wù)需要將修改更新信息數(shù)據(jù),如用戶的帳號(hào)信息,權(quán)限信息等。步驟C2、DataWriter進(jìn)行響應(yīng)。4壬《可寫操:作由DataWriter沖莫塊進(jìn)4亍響應(yīng),4壬何讀操:作由DataReader模塊進(jìn)行響應(yīng)。DataWriter將負(fù)責(zé)保證集群備份的執(zhí)行。步驟C3、將對(duì)應(yīng)用戶信息設(shè)置為寫模式。該用戶信息處于寫模式時(shí)候不允許進(jìn)行對(duì)該用戶的任何讀操作。當(dāng)這次寫操作完成后迅速將用戶信息改為讀模式。步驟C4、判斷本LoadServer角色如果角色是W則轉(zhuǎn)步驟C5。這意味著該節(jié)點(diǎn)還沒(méi)有進(jìn)行主從的指定,所以該服務(wù)暫時(shí)將被拒絕,這種情況可能發(fā)生在某節(jié)點(diǎn)并非在系統(tǒng)初始化時(shí)加入集群,而是剛加入集群,已經(jīng)向LoadProxy發(fā)送了心跳并被受理,但還沒(méi)有指定該節(jié)點(diǎn)的角色。如果角色是S則轉(zhuǎn)步驟C7;如果角色為M則轉(zhuǎn)步驟CIO。步驟C5、緩存用戶請(qǐng)求。由于該服務(wù)器未指派角色,為不影響集群備份過(guò)程,此時(shí)服務(wù)器應(yīng)該將用戶請(qǐng)求在本地緩存等候進(jìn)一步處理。步驟C6、等待LoadProxy角色指示命令到達(dá)后進(jìn)行處理。由于LoadServer會(huì)向LoadProxy發(fā)送心跳和CLNTicket,LoadProxy發(fā)現(xiàn)該服務(wù)器沒(méi)有指派角色時(shí)候會(huì)發(fā)送角色指示命令,待該命令到達(dá)LoadServer時(shí)候,LoadServer可從緩存中取出用戶請(qǐng)求進(jìn)行服務(wù)響應(yīng)。轉(zhuǎn)步驟C2。步驟C7、啟動(dòng)間接寫過(guò)程。間接寫過(guò)程不直接修改本地?cái)?shù)據(jù)信息,而是由主節(jié)點(diǎn)修改后再進(jìn)行本地?cái)?shù)據(jù)的更新,以保證集群備份數(shù)據(jù)的一致性。步驟C8、Informer向主節(jié)點(diǎn)發(fā)送上行鏈路通知。上行鏈路通知是指從節(jié)點(diǎn)向主節(jié)點(diǎn)通知某用戶信息需要更新,Informer會(huì)在UplinkNotice中指示需要更新的用戶和數(shù)據(jù)元。步驟C9、主節(jié)點(diǎn)收到通知后將用戶信息改為寫模式,之后進(jìn)行直接寫操作。主節(jié)點(diǎn)收到UplinkNotice會(huì)將本地用戶數(shù)據(jù)改為寫模式,并直接更新本地的用戶數(shù)據(jù)。主節(jié)點(diǎn)的數(shù)據(jù)的時(shí)間戳始終是集群最新的,也是集群中每份備份的源頭。步驟CIO、啟動(dòng)直接寫操作。步驟Cll、主節(jié)點(diǎn)寫操作完成后,Informer向集群中每個(gè)從節(jié)點(diǎn)發(fā)送下行鏈路通知,并修改用戶信息為讀模式。主節(jié)點(diǎn)更新本地?cái)?shù)據(jù)后將通過(guò)Informer模塊向集群中每以個(gè)節(jié)點(diǎn)發(fā)送下行鏈路通知,DownlinkNotice中也包含更新的用戶和數(shù)據(jù)元。由于本地?cái)?shù)據(jù)已經(jīng)更新,可將用戶的信息修改為讀模式。步驟C12、每個(gè)從節(jié)點(diǎn)收到通知后進(jìn)行直接寫操作。集群中每個(gè)節(jié)點(diǎn)DownlinkNotice獲得更新信息后直接修改本地?cái)?shù)據(jù),成為主節(jié)點(diǎn)最新數(shù)據(jù)的備份。從節(jié)點(diǎn)在進(jìn)行直接寫操作時(shí)候如果用戶數(shù)據(jù)為讀模式,也需要將用戶數(shù)據(jù)修改成寫模式。步驟C13、直接寫操作完成后修改用戶信息為讀模式。從節(jié)點(diǎn)修改本地?cái)?shù)據(jù)后,同樣需要將用戶信息還原為讀模式。當(dāng)所有備份都還原為讀模式后,每個(gè)從節(jié)點(diǎn)成為主節(jié)點(diǎn)的最新備份,從而形成集群備份。步驟C14、服務(wù)節(jié)點(diǎn)可進(jìn)行用戶服務(wù)響應(yīng)。當(dāng)用戶寫操作完成后服務(wù)節(jié)點(diǎn)就可以對(duì)用戶服務(wù)進(jìn)行響應(yīng),指示此次寫操作成功,用戶之后業(yè)務(wù)服務(wù)可使用更新后數(shù)據(jù)或者管理員的配置數(shù)據(jù)已經(jīng)完成寫入和集群備份。第四階段、負(fù)載失敗轉(zhuǎn)移過(guò)程。根據(jù)出現(xiàn)故障的服務(wù)器節(jié)點(diǎn)的角色不同,負(fù)載失敗轉(zhuǎn)移的過(guò)程也不相同。負(fù)載失敗轉(zhuǎn)移過(guò)程如圖9所示,包括如下步驟步驟Dl、HBDetecter監(jiān)測(cè)到某臺(tái)服務(wù)器心跳超時(shí)。當(dāng)HBDetecter檢測(cè)到某服務(wù)器在約定時(shí)限內(nèi)沒(méi)有心跳消息到達(dá),啟動(dòng)宕機(jī)判定定時(shí)器,該定時(shí)器超時(shí)后可判定該服務(wù)器停止心跳,LoadProxy認(rèn)為其宕機(jī),需要進(jìn)行負(fù)載失敗轉(zhuǎn)移。步驟D2、ElectionBox中標(biāo)識(shí)該服務(wù)器宕機(jī),將該服務(wù)器IP設(shè)置為需要TakeoverIP。步驟D3、判斷該LoadServer角色,如果為W,轉(zhuǎn)步驟D4;如果為S,轉(zhuǎn)步驟D5;如果為M,轉(zhuǎn)步驟D8;步驟D4、TakeoverIP清零,不進(jìn)行負(fù)載失敗轉(zhuǎn)移,負(fù)載轉(zhuǎn)移過(guò)程結(jié)束。步驟D5、DispatchStrategy模塊根據(jù)最d、統(tǒng)計(jì)加權(quán)性荷數(shù)算法決策出新的LoadServer的IP。由于ElectionBox中動(dòng)態(tài)存儲(chǔ)了后端LoadServer的統(tǒng)計(jì)加4又性荷數(shù),DispatchStrategy可決策出一個(gè)新的LoadServer接替宕機(jī)服務(wù)器進(jìn)行服務(wù)。步驟D6、Redirector向新的LoadServer發(fā)送TakeoverIP。新的LoadServer需要使用TakeoverIP將宕機(jī)服務(wù)器的用戶定向至此,從而接續(xù)其進(jìn)行用戶的服務(wù)。該過(guò)程保證災(zāi)難發(fā)生后每個(gè)用戶都仍然有一個(gè)可用服務(wù)器對(duì)其進(jìn)行服務(wù)。步驟D7、新的LoadServer使用IPConfiger進(jìn)行TakeoverIP的配置。IPConfiger在本地網(wǎng)卡上配置TakeoverIP,用戶服務(wù)請(qǐng)求將被透明的轉(zhuǎn)移到新的LoadServer,之后該LoadServer對(duì)其進(jìn)行服務(wù),轉(zhuǎn)m;23步驟D8、LoadProxy指示所有節(jié)點(diǎn)將標(biāo)志參數(shù)置1強(qiáng)制服務(wù)器處于讀模式。由于主節(jié)點(diǎn)宕機(jī),整個(gè)服務(wù)器集群的數(shù)據(jù)備份不能順利進(jìn)行,這時(shí)候不能對(duì)用戶的寫操作相應(yīng),但是不影響用戶的讀操作。但整個(gè)集群服務(wù)將在以后的操作中自行恢復(fù)。步驟D9、DispatchStrategy從候選主服務(wù)器中根據(jù)最小統(tǒng)計(jì)性荷數(shù)算法決策出新的主節(jié)點(diǎn)和負(fù)載轉(zhuǎn)移節(jié)點(diǎn)為保證能迅速產(chǎn)生新的主節(jié)點(diǎn),DispatchStrategy只從候選主服務(wù)器中決策出新的主節(jié)點(diǎn),提高響應(yīng)速度。由于宕機(jī)的主節(jié)點(diǎn)也需要進(jìn)行負(fù)載轉(zhuǎn)移,新的負(fù)載轉(zhuǎn)移節(jié)點(diǎn)也在該過(guò)程中產(chǎn)生。新的主節(jié)點(diǎn)和負(fù)載轉(zhuǎn)移節(jié)點(diǎn)應(yīng)盡量不是同一服務(wù)器。步驟DIO、向新的主節(jié)點(diǎn)發(fā)送角色指示命令,向負(fù)載轉(zhuǎn)移節(jié)點(diǎn)發(fā)送TakeoverIP。LoadProxy決策出新的主節(jié)點(diǎn)后一方面向該節(jié)點(diǎn)發(fā)出角色指示命令,該主節(jié)點(diǎn)收到主節(jié)點(diǎn)后迅速進(jìn)行新的角色配置;另一方面向負(fù)載轉(zhuǎn)移節(jié)點(diǎn)發(fā)送TakeoverIP,使之接續(xù)原主節(jié)點(diǎn)的用戶服務(wù)。步驟Dll、新的主節(jié)點(diǎn)響應(yīng)后Redirector向從節(jié)點(diǎn)指示新的主節(jié)點(diǎn)IP。新的主節(jié)點(diǎn)配置成主后迅速向LoadProxy響應(yīng),Redirector再向各個(gè)從節(jié)點(diǎn)指示新的主節(jié)點(diǎn)IP,從節(jié)點(diǎn)進(jìn)行配置修改。步驟D12、標(biāo)志參數(shù)清零,恢復(fù)集群服務(wù)。由于主從節(jié)點(diǎn)均已完成配置,此時(shí)可將強(qiáng)制讀模式的標(biāo)志參數(shù)清零,整個(gè)集群重新恢復(fù)正常服務(wù)。負(fù)載失敗轉(zhuǎn)移過(guò)程結(jié)束。綜上所述,本發(fā)明基于集群備份的容突系統(tǒng)及方法具有以下有益效果(1)、極大的節(jié)約了硬件成本。集群中每個(gè)節(jié)點(diǎn),既是服務(wù)的主用機(jī),又是其他服務(wù)器的備份機(jī),不需要增加新的備份機(jī)來(lái)實(shí)現(xiàn)備份,通過(guò)提高集群備份的復(fù)雜度達(dá)到節(jié)約成本的目的。在具有相同服務(wù)吞吐量的情況下,集群備份的容災(zāi)方法能使用更少的服務(wù)器達(dá)到目的。(2)、提高了單機(jī)利用率和對(duì)等多服務(wù)器的整體利用率。集群備份的容災(zāi)方法實(shí)質(zhì)上將傳統(tǒng)備用機(jī)改造為與主用機(jī)對(duì)等的服務(wù)器,將原備用機(jī)大部分時(shí)間的靜默狀態(tài)開銷充分利用起來(lái)進(jìn)行服務(wù)和集群備份,提高了原備用機(jī)的單機(jī)利用率,在服務(wù)器數(shù)量相等的情況下,集群后具有更高的服務(wù)吞吐量,即使整個(gè)集群具有更高的整體利用率。(3)、集群中任意兩臺(tái)服務(wù)器互為備份,提高了備份的冗余度。當(dāng)一臺(tái)服務(wù)器失效時(shí)候,由于集群內(nèi)其他的服務(wù)器均有其數(shù)據(jù)的備份,故備份的冗余度大大增加。系統(tǒng)中單節(jié)點(diǎn)甚至多節(jié)點(diǎn)出現(xiàn)故障時(shí),集群中有多分?jǐn)?shù)據(jù)備份可供選擇。(4)、可統(tǒng)籌整個(gè)集群內(nèi)的服務(wù)器情況進(jìn)行失敗轉(zhuǎn)移(Failover),極大提高了容災(zāi)能力。最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。權(quán)利要求1、一種基于集群備份的容災(zāi)系統(tǒng),其特征在于,包括負(fù)載代理單元及負(fù)載服務(wù)單元;負(fù)載服務(wù)單元包括至少兩個(gè)服務(wù)器節(jié)點(diǎn),每一服務(wù)器節(jié)點(diǎn)包括一本地?cái)?shù)據(jù)庫(kù),各服務(wù)器節(jié)點(diǎn)之間相互連接;負(fù)載服務(wù)單元包括一與用戶終端進(jìn)行業(yè)務(wù)交互的主服務(wù)器節(jié)點(diǎn),其余服務(wù)器節(jié)點(diǎn)為非主服務(wù)器節(jié)點(diǎn);所述業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù);負(fù)載代理單元包括負(fù)載調(diào)度器,所述負(fù)載調(diào)度器與負(fù)載服務(wù)單元中的各服務(wù)器節(jié)點(diǎn)分別連接,當(dāng)檢測(cè)到主服務(wù)器節(jié)點(diǎn)的心跳停止時(shí),對(duì)該主服務(wù)器節(jié)點(diǎn)執(zhí)行失敗轉(zhuǎn)移操作,從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。2、根據(jù)權(quán)利要求1所述的容災(zāi)系統(tǒng),其特征在于,所述主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新指令,向非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份數(shù)據(jù)。3、根據(jù)權(quán)利要求1或2所述的容災(zāi)系統(tǒng),其特征在于,所述負(fù)載調(diào)度器包括心跳檢測(cè)模塊,與負(fù)載服務(wù)單元中的每一服務(wù)器節(jié)點(diǎn)保持心跳連接,用于檢測(cè)各服務(wù)器節(jié)點(diǎn)的心跳信息;選舉模塊,與所述心跳檢測(cè)模塊連接,用于定期接收心跳檢測(cè)模塊檢測(cè)到的各服務(wù)器節(jié)點(diǎn)的心跳信息,周期性維護(hù)服務(wù)器節(jié)點(diǎn)的心跳信息列表;調(diào)度策略模塊,與所述選舉模塊連接,用于根據(jù)心跳信息列表決策出代理轉(zhuǎn)發(fā)的主服務(wù)器節(jié)點(diǎn)的IP地址或檢測(cè)出需要進(jìn)行失敗轉(zhuǎn)移的主服務(wù)器節(jié)點(diǎn)的IPi也址;重定向轉(zhuǎn)發(fā)器模塊,與所述調(diào)度策略模塊連接,用于根據(jù)從所述調(diào)度策略^^莫塊獲得的代理轉(zhuǎn)發(fā)的主服務(wù)器節(jié)點(diǎn)的IP地址重定向轉(zhuǎn)發(fā)用戶終端的注冊(cè)服務(wù)請(qǐng)求或指示需要進(jìn)行失敗轉(zhuǎn)移的主服務(wù)器節(jié)點(diǎn)的IP地址。4、根據(jù)權(quán)利要求3所述的容災(zāi)系統(tǒng),其特征在于,所述負(fù)載代理單元還包括一冗余備份器;所述負(fù)載調(diào)度器還包括一廣告模塊,與所述冗余備份器連接,用于定期向冗余備份器發(fā)送負(fù)載調(diào)度器的廣告信息,所述廣告信息包括心跳信息;所述冗余備份器用于當(dāng)接收負(fù)載調(diào)度器的廣告信息超時(shí)時(shí),啟動(dòng)虛擬IP地址服務(wù),將冗余備份器的工作狀態(tài)轉(zhuǎn)換成負(fù)載調(diào)度器。5、根據(jù)權(quán)利要求1或2所述的容災(zāi)系統(tǒng),其特征在于,所述服務(wù)器節(jié)點(diǎn)包括IP配置器模塊,當(dāng)該IP配置模塊所屬的服務(wù)器節(jié)點(diǎn)為重新確定的主服務(wù)器節(jié)點(diǎn)時(shí),用于響應(yīng)負(fù)載調(diào)度器發(fā)出的冗余IP地址配置命令,并將該IP配置模塊所屬的服務(wù)器節(jié)點(diǎn)的IP地址配置為原主服務(wù)器節(jié)點(diǎn)的IP地址。6、根據(jù)權(quán)利要求1或2所述的容災(zāi)系統(tǒng),其特征在于,所述服務(wù)器節(jié)點(diǎn)包括打分模塊,用于周期性收集該服務(wù)器節(jié)點(diǎn)的性能和/或負(fù)荷指標(biāo),計(jì)算該服務(wù)器節(jié)點(diǎn)的性能荷數(shù);心跳模塊,與負(fù)載調(diào)度器保持心跳連接,定期將所述性能荷數(shù)攜帶在心跳信息中發(fā)送至負(fù)載調(diào)度器。7、根據(jù)權(quán)利要求1或2所述的容災(zāi)系統(tǒng),其特征在于,包括事件通知模塊,當(dāng)該事件通知模塊所屬的服務(wù)器節(jié)點(diǎn)為主服務(wù)器節(jié)點(diǎn)時(shí),主服務(wù)器節(jié)點(diǎn)通過(guò)事件通知模塊通知負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新的命令;當(dāng)該事件通知模塊所屬的服務(wù)器節(jié)點(diǎn)為非主服務(wù)器節(jié)點(diǎn)時(shí),主服務(wù)器節(jié)點(diǎn)通過(guò)事件通知模塊接收負(fù)載服務(wù)單元中的主服務(wù)器節(jié)點(diǎn)發(fā)送的數(shù)據(jù)同步更新的命令。數(shù)據(jù)讀/寫操作模塊,用于對(duì)本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);與事件通知模塊連接,當(dāng)對(duì)本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí),用于通過(guò)事件通知模塊對(duì)負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)。8、一種基于集群備份的容災(zāi)方法,其特征在于,包括主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互;所述業(yè)務(wù)交互包括主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)讀數(shù)據(jù)和/或?qū)憯?shù)據(jù);當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí)還包括主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù);負(fù)載代理單元當(dāng)負(fù)載代理單元檢測(cè)到當(dāng)前主服務(wù)節(jié)點(diǎn)的心跳停止時(shí),從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。9、根據(jù)權(quán)利要求8所述的容突方法,其特征在于,所述主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫所述數(shù)據(jù)包括;主服務(wù)器節(jié)點(diǎn)向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)發(fā)送數(shù)據(jù)同步更新指令,向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份所述數(shù)據(jù)。10、根據(jù)權(quán)利要求8或9所述的容災(zāi)方法,其特征在于,主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互之前還包括用戶終端首次向負(fù)載代理單元發(fā)出注冊(cè)服務(wù)請(qǐng)求,所述注冊(cè)服務(wù)請(qǐng)求中包括用戶終端的用戶信息;負(fù)載代理單元根據(jù)收集的心跳信息調(diào)度一個(gè)服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)為該用戶終端服務(wù),并將所述注冊(cè)服務(wù)請(qǐng)求轉(zhuǎn)發(fā)給該主服務(wù)器節(jié)點(diǎn);該主服務(wù)器節(jié)點(diǎn)存儲(chǔ)用戶終端的用戶信息,并將所述注冊(cè)服務(wù)請(qǐng)求在非主服務(wù)器節(jié)點(diǎn)上備份后,向用戶終端反饋?zhàn)?cè)服務(wù)響應(yīng),所述注冊(cè)服務(wù)響應(yīng)中包括主服務(wù)器節(jié)點(diǎn)的IP地址。11、根據(jù)權(quán)利要求IO所述的容災(zāi)方法,其特征在于,還包括負(fù)載代理單元定期接收心跳檢測(cè)模塊檢測(cè)到的各服務(wù)器節(jié)點(diǎn)的心跳信息,周期性維護(hù)服務(wù)器節(jié)點(diǎn)的心跳信息列表。12、根據(jù)權(quán)利要求11所述的容災(zāi)方法,其特征在于,所述從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)包括負(fù)載代理單元根據(jù)負(fù)載代理單元中的心跳信息列表重新確定主服務(wù)器節(jié)點(diǎn),并向該重新確定的主服務(wù)器節(jié)點(diǎn)發(fā)出冗余網(wǎng)絡(luò)地址配置命令,將該重新確定的主服務(wù)器節(jié)點(diǎn)的IP地址配置為原主服務(wù)器節(jié)點(diǎn)的IP地址。13、根據(jù)權(quán)利要求11或12所述的容災(zāi)方法,其特征在于,還包括負(fù)載代理單元備份心跳信息列表,并定期更新所述心跳信息列表。14、根據(jù)權(quán)利要求IO所述的容災(zāi)方法,其特征在于,所述心跳信息中包括服務(wù)器節(jié)點(diǎn)的性能荷數(shù)。全文摘要本發(fā)明涉及基于集群備份的容災(zāi)系統(tǒng)及容災(zāi)方法。該容災(zāi)系統(tǒng)包括負(fù)載代理單元及負(fù)載服務(wù)單元,負(fù)載服務(wù)單元包括至少兩個(gè)服務(wù)器節(jié)點(diǎn),其中一與用戶終端進(jìn)行業(yè)務(wù)交互的主服務(wù)器節(jié)點(diǎn),其余服務(wù)器節(jié)點(diǎn)為非主服務(wù)器節(jié)點(diǎn);業(yè)務(wù)交互包括當(dāng)主服務(wù)器節(jié)點(diǎn)向主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)寫數(shù)據(jù)時(shí),向負(fù)載服務(wù)單元中的非主服務(wù)器節(jié)點(diǎn)中的本地?cái)?shù)據(jù)庫(kù)備份數(shù)據(jù);負(fù)載代理單元包括與各服務(wù)器節(jié)點(diǎn)分別連接的負(fù)載調(diào)度器,當(dāng)檢測(cè)到主服務(wù)器節(jié)點(diǎn)的心跳停止時(shí),對(duì)該主服務(wù)器節(jié)點(diǎn)執(zhí)行失敗轉(zhuǎn)移操作,從非主服務(wù)器節(jié)點(diǎn)中選擇一服務(wù)器節(jié)點(diǎn)作為主服務(wù)器節(jié)點(diǎn)與用戶終端進(jìn)行業(yè)務(wù)交互。本發(fā)明提高了單個(gè)服務(wù)器節(jié)點(diǎn)的利用率以及對(duì)等多服務(wù)器節(jié)點(diǎn)的整體利用率。文檔編號(hào)H04L29/08GK101309167SQ20081004821公開日2008年11月19日申請(qǐng)日期2008年6月27日優(yōu)先權(quán)日2008年6月27日發(fā)明者盧正新,軍史,晨李,王芙蓉,莫益軍,辰黃申請(qǐng)人:華中科技大學(xué)