專利名稱:一種基于丟棄的多元數(shù)據(jù)服務(wù)器元數(shù)據(jù)日志一致性的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多數(shù)據(jù)器的元數(shù)據(jù)日志方法,具體來說,涉及一種基于丟棄的多元數(shù)據(jù)服務(wù)器元數(shù)據(jù)日志一致性的方法。
背景技術(shù):
在分布式文件系統(tǒng)中,元數(shù)據(jù)之間存在相關(guān)性,這表現(xiàn)在很多操作要同時修改幾部分的元數(shù)據(jù),當(dāng)只有部分數(shù)據(jù)修改時,系統(tǒng)是不一致的,即這種相關(guān)性受到破壞。當(dāng)整個操作完成時,系統(tǒng)從一個一致狀態(tài)轉(zhuǎn)移到另一個一致的狀態(tài)。當(dāng)系統(tǒng)處于不一致狀態(tài)時,受影響的元數(shù)據(jù)及相關(guān)的數(shù)據(jù)將不能被正確使用,甚至成為垃圾。如果系統(tǒng)不糾正該問題,而繼續(xù)運行,將造成更大的損害。對于多元數(shù)據(jù)服務(wù)器,每個元數(shù)據(jù)存儲于不同節(jié)點,當(dāng)節(jié)點發(fā)生崩潰時,這些節(jié)點上的元數(shù)據(jù)就會處于一個不一致的狀態(tài),導(dǎo)致元數(shù)據(jù)服務(wù)不可用。因此,如何保證多個元數(shù)據(jù)服務(wù)器上的元數(shù)據(jù)一致性是影響元數(shù)據(jù)可靠性的重要因素。為了保證元數(shù)據(jù)的一致性,一些分布式文件系統(tǒng)采用了日志系統(tǒng)。將多個相關(guān)的元數(shù)據(jù)操作封裝為一個事務(wù)。日志系統(tǒng)均采用先寫日志后應(yīng)用磁盤的策略,這樣即使其發(fā)生崩潰時,未應(yīng)用到磁盤的事務(wù)也可以通過重新應(yīng)用日志來保證其一致性。然而,若日志設(shè)備發(fā)生損壞時,不能通過應(yīng)用日志設(shè)備來恢復(fù)崩潰引起的系統(tǒng)不一致,傳統(tǒng)的方法是使用磁盤拷貝的方法,將副本進行數(shù)據(jù)恢復(fù),在TB級乃至PB級的系統(tǒng)中,這種開銷是不能容忍的。
發(fā)明內(nèi)容
本發(fā)明涉及一種基于丟棄的多數(shù)據(jù)器的元數(shù)據(jù)日志方法,目的是降低在日志設(shè)備損壞時的恢復(fù)所需的時間。一種基于丟棄的多元數(shù)據(jù)服務(wù)器元數(shù)據(jù)日志一致性的方法,主元數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)請求后,將其保存到內(nèi)存后,傳播請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器接收傳播請求保存到內(nèi)存后,應(yīng)答主元數(shù)據(jù)服務(wù)器;主元數(shù)據(jù)服務(wù)器收到應(yīng)答后將請求提交到日志設(shè)備,完成后,提交請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器收到提交請求后,提交到日志設(shè)備,同時應(yīng)答提交請求并應(yīng)用到磁盤并同步;主元數(shù)據(jù)服務(wù)器收到提交請求應(yīng)答后,應(yīng)用到磁盤并同步后,發(fā)送丟棄命令給從元數(shù)據(jù)服務(wù)器,并根據(jù)丟棄情況保存本地副本日志。優(yōu)選的,所述根據(jù)丟棄情況保存本地副本日志的過程為如果從副本收到主副本的丟棄請求,則回收對應(yīng)的內(nèi)存及日志設(shè)備,并返回丟棄應(yīng)答命令給主副本,否則保存到日志設(shè)備上;如果主副本收到從副本的丟棄應(yīng)答命令,則回收對應(yīng)的內(nèi)存及日志設(shè)備,否則保存到日志設(shè)備上。優(yōu)選的,所述日志設(shè)備發(fā)生損壞時,將沒有丟棄的日志發(fā)送到損壞的日志設(shè)備的副本節(jié)點。優(yōu)選的,所述從副本上丟棄消息的記錄使用一個hash表進行管理,將元數(shù)操作的事務(wù)號作為hash key若從副本將事務(wù)應(yīng)用完,則檢查該hash表中是否有該事務(wù),若沒有該事務(wù),則將該事務(wù)加入到hash表中;若有該事務(wù),則發(fā)送丟棄應(yīng)答。優(yōu)選的,所述從副本上到該事務(wù)的丟棄請求時,首先查詢hash表中是否有該事務(wù),有則發(fā)送應(yīng)答,否則加入hash表中。本發(fā)明通過引入三次通信機制,使得日志系統(tǒng)在日志設(shè)備損壞的情況下,可以通過少量拷貝日志文件,來實現(xiàn)恢復(fù),極大了減少了恢復(fù)的時間。
圖1是本發(fā)明的流程圖
具體實施例方式發(fā)明中的技術(shù)方案具體描述如下為了實現(xiàn)多個元數(shù)據(jù)服務(wù)器上的一致性,將元數(shù)據(jù)操作的可靠性操作分為幾個階段眷保存到內(nèi)存 寫入日志設(shè)備 寫入磁盤 同步到磁盤 根據(jù)丟棄情況保存本地副本日志多副本的元數(shù)據(jù)服務(wù)的消息通信流程如圖1所示主元數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)請求后,將其保存到內(nèi)存后,傳播請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器接收傳播請求保存到內(nèi)存后,應(yīng)答主元數(shù)據(jù)服務(wù)器;主元數(shù)據(jù)服務(wù)器收到應(yīng)答后將請求提交到日志設(shè)備,完成后,提交請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器收到提交請求后,提交到日志設(shè)備,同時應(yīng)答提交請求并應(yīng)用到磁盤并同步;主元數(shù)據(jù)服務(wù)器收到提交請求應(yīng)答后,應(yīng)用到磁盤并同步后,發(fā)送丟棄命令給從元數(shù)據(jù)服務(wù)器,并根據(jù)丟棄情況保存本地副本日志。即如果從副本收到主副本的丟棄請求,則回收對應(yīng)的內(nèi)存及日志設(shè)備,并返回丟棄應(yīng)答命令給主副本,否則保存到日志設(shè)備上;如果主副本收到從副本的丟棄應(yīng)答命令,則回收對應(yīng)的內(nèi)存及日志設(shè)備,否則保存到日志設(shè)備上。通過發(fā)送三次消息,控制多副本元數(shù)據(jù)的元數(shù)據(jù)操作。其中,傳播消息和提交消息保證先寫日志后寫磁盤,丟棄消息控制不會丟棄沒有應(yīng)用到磁盤的日志。通過上述的方法,在系統(tǒng)的日志設(shè)備發(fā)生損壞時,只需要將沒有丟棄的日志發(fā)送到發(fā)生日志設(shè)備損壞的副本節(jié)點即可,無需拷貝所有的磁盤數(shù)據(jù)。從副本上丟棄消息的記錄使用一個hash表進行管理,將元數(shù)據(jù)操作的事務(wù)號作為hash key,若從副本將事務(wù)應(yīng)用完,則檢查該hash表中是否有該事務(wù),若沒有該事務(wù),則將該事務(wù)加入到hash表中;若有該事務(wù),則發(fā)送丟棄應(yīng)答。同理,該節(jié)點收到該事務(wù)的丟棄請求時,首先查詢hash表中是否有該事務(wù),有則發(fā)送應(yīng)答,否則加入hash表中。查詢和插入操作需要使用鎖來互斥。 同時,這種丟棄消息可以根據(jù)系統(tǒng)來進行動態(tài)的設(shè)置,若系統(tǒng)的日志設(shè)備的可靠性較好,可以將丟棄的消息流程去掉,直接使用兩階段的消息通信,保證多副本的一致性需求。非常易于實現(xiàn)。
權(quán)利要求
1.一種基于丟棄的多元數(shù)據(jù)服務(wù)器元數(shù)據(jù)日志一致性的方法,其特征在于主元數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)請求后,將其保存到內(nèi)存后,傳播請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器接收傳播請求保存到內(nèi)存后,應(yīng)答主元數(shù)據(jù)服務(wù)器;主元數(shù)據(jù)服務(wù)器收到應(yīng)答后將請求提交到日志設(shè)備,完成后,提交請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器收到提交請求后,提交到日志設(shè)備,同時應(yīng)答提交請求并應(yīng)用到磁盤并同步;主元數(shù)據(jù)服務(wù)器收到提交請求應(yīng)答后,應(yīng)用到磁盤并同步后,發(fā)送丟棄命令給從元數(shù)據(jù)服務(wù)器,并根據(jù)丟棄情況保存本地副本日志。
2.如權(quán)利要求1所述的方法,其特征在于所述根據(jù)丟棄情況保存本地副本日志的過程為如果從副本收到主副本的丟棄請求,則回收對應(yīng)的內(nèi)存及日志設(shè)備,并返回丟棄應(yīng)答命令給主副本,否則保存到日志設(shè)備上;如果主副本收到從副本的丟棄應(yīng)答命令,則回收對應(yīng)的內(nèi)存及日志設(shè)備,否則保存到日志設(shè)備上。
3.如權(quán)利要求1所述的方法,其特征在于所述日志設(shè)備發(fā)生損壞時,將沒有丟棄的日志發(fā)送到損壞的日志設(shè)備的副本節(jié)點。
4.如權(quán)利要求1所述的方法,其特征在于所述從副本上丟棄消息的記錄使用一個 hash表進行管理,將元數(shù)操作的事務(wù)號作為hash key若從副本將事務(wù)應(yīng)用完,則檢查該 hash表中是否有該事務(wù),若沒有該事務(wù),則將該事務(wù)加入到hash表中;若有該事務(wù),則發(fā)送丟棄應(yīng)答。
5.如權(quán)利要求1所述的方法,其特征在于所述從副本上到該事務(wù)的丟棄請求時,首先查詢hash表中是否有該事務(wù),有則發(fā)送應(yīng)答,否則加入hash表中。
全文摘要
本發(fā)明提供了一種基于丟棄的多元數(shù)據(jù)服務(wù)器元數(shù)據(jù)日志一致性的方法,主元數(shù)據(jù)服務(wù)器收到元數(shù)據(jù)請求后,將其保存到內(nèi)存后,傳播請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器接收傳播請求保存到內(nèi)存后,應(yīng)答主元數(shù)據(jù)服務(wù)器;主元數(shù)據(jù)服務(wù)器收到應(yīng)答后將請求提交到日志設(shè)備,完成后,提交請求給從元數(shù)據(jù)服務(wù)器;從元數(shù)據(jù)服務(wù)器收到提交請求后,提交到日志設(shè)備,同時應(yīng)答提交請求并應(yīng)用到磁盤并同步;主元數(shù)據(jù)服務(wù)器收到提交請求應(yīng)答后,應(yīng)用到磁盤并同步后,發(fā)送丟棄命令給從元數(shù)據(jù)服務(wù)器,并根據(jù)丟棄情況保存本地副本日志。通過引入三次通信機制,使得日志系統(tǒng)在日志設(shè)備損壞的情況下,可以通過少量拷貝日志文件,來實現(xiàn)恢復(fù),極大了減少了恢復(fù)的時間。
文檔編號G06F17/30GK102508891SQ20111032829
公開日2012年6月20日 申請日期2011年10月25日 優(yōu)先權(quán)日2011年10月25日
發(fā)明者劉新春, 張東陽, 張玉龍, 王勇, 苗艷超, 邵宗有 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司