所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD進(jìn)行比較,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD大于所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD,則所述操作已經(jīng)持久到磁盤,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD小于緩存sess1n中相應(yīng)slot的sequencelD,則所述操作并未執(zhí)行完,所述操作還未持久到所述磁盤。若所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)并未復(fù)制給所述備份服務(wù)器,則將持久到所述磁盤的所述sess1n結(jié)構(gòu)中slot的sequencelD更新到所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD。所述操作已經(jīng)持久到磁盤,若所述客戶端在宕機(jī)事件發(fā)生時并未收到回復(fù)結(jié)果,則所述備份服務(wù)器只需要重新構(gòu)造回復(fù)結(jié)果發(fā)送給所述客戶端;所述操作還未持久到所述磁盤,若所述客戶端在宕機(jī)事故發(fā)生前已經(jīng)收到回復(fù)結(jié)果,則將slot的結(jié)構(gòu)信息繼續(xù)持久到所述磁盤的所述sess1n結(jié)構(gòu)中,若所述客戶端并未收到回復(fù)結(jié)果,則由所述客戶端重發(fā)恢復(fù)。
【主權(quán)項】
1.一種元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法,其特征在于,包括: 步驟1,在客戶端正常訪問元數(shù)據(jù)服務(wù)器時,所述元數(shù)據(jù)服務(wù)器在sess1n結(jié)構(gòu)中為每個操作分配slotID、sequencelD以及存放響應(yīng)結(jié)果的緩存空間,將所述sess1n結(jié)構(gòu)持久寫入到元數(shù)據(jù)磁盤上,并將所述slotID和所述sequencelD復(fù)制給備份服務(wù)器,所述備份服務(wù)器收到后,將所述slotID和所述sequencelD放入所述備份服務(wù)器緩存中; 步驟2,所述元數(shù)據(jù)服務(wù)器宕機(jī)之后,所述備份服務(wù)器從磁盤中讀取所述sess1n結(jié)構(gòu)的信息,查找已經(jīng)持久到磁盤上但并未給客戶端發(fā)送回復(fù)結(jié)果的非冪等操作,根據(jù)所述sess1n結(jié)構(gòu)中的slot table重新構(gòu)造所述回復(fù)結(jié)果并發(fā)送給客戶端。2.如權(quán)利要求1所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法,其特征在于,所述步驟I包括:在磁盤上開辟一塊空間,專門用于存放所述sess1n結(jié)構(gòu); 所述元數(shù)據(jù)服務(wù)器在執(zhí)行操作時,同時將所述sess1n結(jié)構(gòu)隨著操作傳遞給vfs層和本地文件系統(tǒng)層; 當(dāng)元數(shù)據(jù)操作執(zhí)行到本地文件系統(tǒng)層時,所述本地文件系統(tǒng)層獲取所述sess1n結(jié)構(gòu)的信息后,將所述sess1n結(jié)構(gòu)和操作結(jié)果一同寫入磁盤日志,并作為一個原子操作一起同步到磁盤上,使得所述sess1n結(jié)構(gòu)的持久和操作結(jié)果保持一致。3.如權(quán)利要求1所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法,其特征在于,所述步驟2包括,獲取持久到所述磁盤的所述sess1n結(jié)構(gòu); 將持久到所述磁盤的所述sess1n結(jié)構(gòu)中每個slot的sequencelD和所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD進(jìn)行比較,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD大于所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD,則所述操作已經(jīng)持久到磁盤,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD小于緩存sess1n 中相應(yīng)slot的sequencelD,則所述操作并未執(zhí)行完,所述操作還未持久到所述磁盤。4.如權(quán)利要求3所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法,其特征在于,還包括:若所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)并未復(fù)制給所述備份服務(wù)器,則將持久到所述磁盤的所述sess1n結(jié)構(gòu)中slot的sequencelD更新到所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD。5.如權(quán)利要求3所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法,其特征在于,還包括:所述操作已經(jīng)持久到磁盤,若所述客戶端在宕機(jī)事件發(fā)生時并未收到回復(fù)結(jié)果,則所述備份服務(wù)器只需要重新構(gòu)造回復(fù)結(jié)果發(fā)送給所述客戶端; 所述操作還未持久到所述磁盤,若所述客戶端在宕機(jī)事故發(fā)生前已經(jīng)收到回復(fù)結(jié)果,則將slot的結(jié)構(gòu)信息繼續(xù)持久到所述磁盤的所述sess1n結(jié)構(gòu)中,若所述客戶端并未收到回復(fù)結(jié)果,則由所述客戶端重發(fā)恢復(fù)。6.一種元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的系統(tǒng),其特征在于,包括: 持久寫入模塊,用于在客戶端正常訪問元數(shù)據(jù)服務(wù)器時,所述元數(shù)據(jù)服務(wù)器在sess1n結(jié)構(gòu)中為每個操作分配slotID、sequencelD以及存放響應(yīng)結(jié)果的緩存空間,并將所述sess1n結(jié)構(gòu)持久寫入到元數(shù)據(jù)磁盤上; 重新構(gòu)造回復(fù)結(jié)果模塊,用于所述元數(shù)據(jù)服務(wù)器宕機(jī)之后,所述備份服務(wù)器從磁盤中讀取所述sess1n結(jié)構(gòu)的信息,查找已經(jīng)持久到磁盤上但并未給客戶端發(fā)送回復(fù)結(jié)果的非冪等操作,根據(jù)所述sess1n結(jié)構(gòu)中的slot table重新構(gòu)造所述回復(fù)結(jié)果并發(fā)送給客戶端。7.如權(quán)利要求6所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的系統(tǒng),其特征在于,持久寫入模塊還用于:在磁盤上開辟一塊空間,專門用于存放所述sess1n結(jié)構(gòu); 所述元數(shù)據(jù)服務(wù)器在執(zhí)行操作時,同時將所述sess1n結(jié)構(gòu)隨著操作傳遞給vfs層和本地文件系統(tǒng)層; 當(dāng)元數(shù)據(jù)操作執(zhí)行到本地文件系統(tǒng)層時,所述本地文件系統(tǒng)層獲取所述sess1n結(jié)構(gòu)的信息后,將所述sess1n結(jié)構(gòu)和操作結(jié)果一同寫入磁盤日志,并作為一個原子操作一起同步到磁盤上,使得所述sess1n結(jié)構(gòu)的持久和操作結(jié)果保持一致。8.如權(quán)利要求6所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的系統(tǒng),其特征在于,所述重新構(gòu)造回復(fù)結(jié)果模塊還用于,獲取持久到所述磁盤的所述sess1n結(jié)構(gòu); 將持久到所述磁盤的所述sess1n結(jié)構(gòu)中每個slot的sequencelD和所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD進(jìn)行比較,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD大于所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD,則所述操作已經(jīng)持久到磁盤,若持久到所述磁盤的所述sess1n結(jié)構(gòu)中某個slot的sequencelD小于緩存sess1n 中相應(yīng)slot的sequencelD,則所述操作并未執(zhí)行完,所述操作還未持久到所述磁盤。9.如權(quán)利要求8所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的系統(tǒng),其特征在于,還包括:若所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)并未復(fù)制給所述備份服務(wù)器,則將持久到所述磁盤的所述sess1n結(jié)構(gòu)中slot的sequencelD更新到所述備份服務(wù)器的緩存中所述sess1n結(jié)構(gòu)中相應(yīng)slot的sequencelD。10.如權(quán)利要求8所述的元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的系統(tǒng),其特征在于,還包括:所述操作已經(jīng)持久到磁盤,若所述客戶端在宕機(jī)事件發(fā)生時并未收到回復(fù)結(jié)果,則所述備份服務(wù)器只需要重新構(gòu)造回復(fù)結(jié)果發(fā)送給所述客戶端; 所述操作還未持久到所述磁盤,若所述客戶端在宕機(jī)事故發(fā)生前已經(jīng)收到回復(fù)結(jié)果,則將slot的結(jié)構(gòu)信息繼續(xù)持久到所述磁盤的所述sess1n結(jié)構(gòu)中,若所述客戶端并未收到回復(fù)結(jié)果,則由所述客戶端重發(fā)恢復(fù)。
【專利摘要】本發(fā)明涉及元數(shù)據(jù)服務(wù)器失效接替技術(shù)及非冪元數(shù)據(jù)等操作等領(lǐng)域,特別涉及元數(shù)據(jù)服務(wù)器失效接替中精確一次執(zhí)行語義的方法及系統(tǒng),包括:在客戶端正常訪問元數(shù)據(jù)服務(wù)器時,所述元數(shù)據(jù)服務(wù)器在會話session結(jié)構(gòu)中為每個操作分配slotID、sequenceID以及存放響應(yīng)結(jié)果的緩存空間,并將所述session結(jié)構(gòu)持久寫入到元數(shù)據(jù)磁盤上,并將所述slotID和所述sequenceID復(fù)制給備份服務(wù)器,所述備份服務(wù)器收到后,將所述slotID和所述sequenceID放入所述備份服務(wù)器緩存中;所述元數(shù)據(jù)服務(wù)器宕機(jī)之后,所述備份服務(wù)器從磁盤中讀取所述session結(jié)構(gòu)的信息,查找已經(jīng)持久到磁盤上但并未給客戶端發(fā)送回復(fù)結(jié)果的非冪等操作,根據(jù)所述session結(jié)構(gòu)中的slot table重新構(gòu)造所述回復(fù)結(jié)果并發(fā)送給客戶端。
【IPC分類】G06F3/06, G06F11/14
【公開號】CN104991739
【申請?zhí)枴緾N201510346978
【發(fā)明人】李月嘉, 邵冰清, 劉健, 董歡慶, 張軍偉, 劉振軍
【申請人】中國科學(xué)院計算技術(shù)研究所, 天津中科藍(lán)鯨信息技術(shù)有限公司
【公開日】2015年10月21日
【申請日】2015年6月19日