本申請涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法、裝置。
背景技術(shù):
1、分布式文件系統(tǒng)是一種將數(shù)據(jù)分散存儲在多臺服務(wù)器上的數(shù)據(jù)存儲系統(tǒng),其中,hdfs(hadoop?distributed?file?system)分布式文件系統(tǒng)是一種常見的適用于hadoop大數(shù)據(jù)計算引擎的分布式文件系統(tǒng)。其中,hdfs通過數(shù)據(jù)塊block的方式將數(shù)據(jù)分散存儲在整個數(shù)據(jù)集群中的多個節(jié)點上。
2、在hdfs實際使用過程中,很容易因為并發(fā)操作沖突出現(xiàn)數(shù)據(jù)不一致的情況,從而導(dǎo)致不同用戶訪問同一個文件夾獲取的數(shù)據(jù)不一致,影響用戶體驗。
技術(shù)實現(xiàn)思路
1、有鑒于此,本申請實施例提供了一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法、裝置,以減少分布式文件系統(tǒng)中存在的數(shù)據(jù)不一致的問題,保障用戶體驗。
2、第一方面,本申請實施例提供了一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法,其中,該方法包括:
3、接收用戶傳入的數(shù)據(jù)請求,其中,所述數(shù)據(jù)請求中攜帶有待寫入的目標(biāo)數(shù)據(jù);
4、為所述目標(biāo)數(shù)據(jù)在目標(biāo)路徑下創(chuàng)建一個臨時鎖文件,若所述臨時鎖文件創(chuàng)建成功,則利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件,其中,所述鎖文件用于對鎖文件對應(yīng)的路徑進(jìn)行鎖定;
5、若創(chuàng)建所述臨時鎖文件失敗,則啟動競爭檢測策略,確定是否存在沖突的固定鎖文件;
6、若存在,則再次為所述目標(biāo)數(shù)據(jù)在目標(biāo)路徑下創(chuàng)建新的臨時鎖文件,并再次判斷所述新的臨時鎖文件是否創(chuàng)建成功,若所述新的臨時鎖文件創(chuàng)建失敗,則再次啟動所述競爭檢測策略,直至所述新的臨時鎖文件不存在沖突的固定鎖文件;
7、若不存在,利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件;
8、將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下。
9、在一些可能的實施例中,所述臨時鎖文件、所述固定鎖文件為所述分布式文件系統(tǒng)中的文件鎖,所述臨時鎖文件用于對所述臨時鎖文件對應(yīng)的路徑進(jìn)行第一時間周期的鎖定,所述固定鎖文件用于對所述固定鎖文件對應(yīng)的路徑進(jìn)行第二時間周期的鎖定,其中,所述第二時間周期長于所述第一時間周期。
10、在一些可能的實施例中,在所述將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下步驟之后,所述方法還包括:
11、清理所述臨時鎖文件,并刪除所述固定鎖文件。
12、在一些可能的實施例中,所述方法還包括:
13、若利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件成功,則將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下;
14、若利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件失敗,則清理所述臨時鎖文件。
15、第二方面,本申請實施例提供了一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理裝置,其中,該裝置包括:
16、接收模塊,用于接收用戶傳入的數(shù)據(jù)請求,其中,所述數(shù)據(jù)請求中攜帶有待寫入的目標(biāo)數(shù)據(jù);
17、文件命名處理模塊,用于為所述目標(biāo)數(shù)據(jù)在目標(biāo)路徑下創(chuàng)建一個臨時鎖文件,若所述臨時鎖文件創(chuàng)建成功,則利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件,其中,所述鎖文件用于對鎖文件對應(yīng)的路徑進(jìn)行鎖定;
18、競爭檢測模塊,用于若創(chuàng)建所述臨時鎖文件失敗,則啟動競爭檢測策略,確定是否存在沖突的固定鎖文件;若存在,則再次為所述目標(biāo)數(shù)據(jù)在目標(biāo)路徑下創(chuàng)建新的臨時鎖文件,并再次判斷所述新的臨時鎖文件是否創(chuàng)建成功,若所述新的臨時鎖文件創(chuàng)建失敗,則再次啟動所述競爭檢測策略,直至所述新的臨時鎖文件不存在沖突的固定鎖文件;
19、所述文件命名處理模塊,還用于若不存在沖突的固定鎖文件,利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件;
20、數(shù)據(jù)處理模塊,用于將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下。
21、在一些可能的實施例中,所述臨時鎖文件、所述固定鎖文件為所述分布式文件系統(tǒng)中的文件鎖,所述臨時鎖文件用于對所述臨時鎖文件對應(yīng)的路徑進(jìn)行第一時間周期的鎖定,所述固定鎖文件用于對所述固定鎖文件對應(yīng)的路徑進(jìn)行第二時間周期的鎖定,其中,所述第二時間周期長于所述第一時間周期。
22、在一些可能的實施例中,在所述將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下步驟之后,所述數(shù)據(jù)處理模塊,還用于:
23、清理所述臨時鎖文件,并刪除所述固定鎖文件。
24、在一些可能的實施例中,所述數(shù)據(jù)處理模塊,具體用于:
25、若利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件成功,則將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下;
26、若利用原子性命名規(guī)則,基于所述目標(biāo)數(shù)據(jù)將所述臨時鎖文件重命名為固定鎖文件失敗,則清理所述臨時鎖文件。
27、第三方面,本申請實施例提供了一種電子設(shè)備,其中,所述電子設(shè)備包括:
28、處理器;以及
29、存儲程序的存儲器,
30、其中,所述程序包括指令,所述指令在由所述處理器執(zhí)行時使所述處理器執(zhí)行第一方面所述的基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法。
31、第四方面,本申請實施例提供了一種存儲有計算機(jī)指令的非瞬時計算機(jī)可讀存儲介質(zhì),其特征在于,所述計算機(jī)指令用于使計算機(jī)執(zhí)行第一方面所述的基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法。
32、本申請的有益效果:
33、本申請?zhí)峁┝艘环N基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法、裝置,其中,該方法通過為目標(biāo)數(shù)據(jù)在目標(biāo)路徑下創(chuàng)建鎖文件的方式,對用于寫入該目標(biāo)數(shù)據(jù)的路徑進(jìn)行鎖定,通過臨時鎖文件是否能夠成功創(chuàng)建判斷是否存在其他用戶并行競爭相同的路徑,若存在,則啟動競爭檢測策略,繼續(xù)確定是否存在沖突的固定鎖文件,若存在沖突的固定鎖文件,則表明其他用戶已經(jīng)處于臨時鎖文件已經(jīng)建立完畢,并且臨時鎖文件重命名為固定鎖文件,此時為了避免與其他用戶產(chǎn)生并發(fā)操作沖突,通過重新建立新的臨時鎖文件,不斷嘗試出一個完全不沖突的新的臨時鎖文件,并將該臨時鎖文件重命名為固定鎖文件,最終將目標(biāo)數(shù)據(jù)更新至臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下。
34、如此,借助臨時鎖文件與固定鎖文件進(jìn)行競爭檢測,可避免不同用戶高并發(fā)處理時針對同一個數(shù)據(jù)產(chǎn)生的不同寫入結(jié)果,不同用戶在訪問同一個固定鎖文件對應(yīng)的路徑時,僅會看到相同的一份數(shù)據(jù),可有效保障數(shù)據(jù)在用戶視角的一致性,有助于保障用戶的使用體驗。
1.一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述臨時鎖文件、所述固定鎖文件為所述分布式文件系統(tǒng)中的文件鎖,所述臨時鎖文件用于對所述臨時鎖文件對應(yīng)的路徑進(jìn)行第一時間周期的鎖定,所述固定鎖文件用于對所述固定鎖文件對應(yīng)的路徑進(jìn)行第二時間周期的鎖定,其中,所述第二時間周期長于所述第一時間周期。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下步驟之后,所述方法還包括:
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:
5.一種基于分布式文件系統(tǒng)的數(shù)據(jù)一致性處理裝置,其特征在于,所述裝置包括:
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述臨時鎖文件、所述固定鎖文件為所述分布式文件系統(tǒng)中的文件鎖,所述臨時鎖文件用于對所述臨時鎖文件對應(yīng)的路徑進(jìn)行第一時間周期的鎖定,所述固定鎖文件用于對所述固定鎖文件對應(yīng)的路徑進(jìn)行第二時間周期的鎖定,其中,所述第二時間周期長于所述第一時間周期。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,在所述將所述目標(biāo)數(shù)據(jù)更新至所述臨時鎖文件重命名后的固定鎖文件對應(yīng)的路徑下步驟之后,所述數(shù)據(jù)處理模塊,還用于:
8.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述數(shù)據(jù)處理模塊,具體用于:
9.一種電子設(shè)備,其特征在于,所述電子設(shè)備包括:
10.一種存儲有計算機(jī)指令的非瞬時計算機(jī)可讀存儲介質(zhì),其特征在于,所述計算機(jī)指令用于使計算機(jī)執(zhí)行根據(jù)權(quán)利要求1-4中任一項所述的方法。