本技術(shù)涉及存儲(chǔ),特別涉及一種數(shù)據(jù)處理方法、系統(tǒng)及設(shè)備。
背景技術(shù):
1、現(xiàn)有的集中式存儲(chǔ)系統(tǒng)中,為了提高系統(tǒng)的可用性、容錯(cuò)能力以及讀寫性能,在一些業(yè)務(wù)場(chǎng)景下部署雙活架構(gòu)的存儲(chǔ)系統(tǒng),即通過(guò)兩套存儲(chǔ)系統(tǒng)同時(shí)提供讀寫服務(wù)并互為備份。
2、然而在雙活架構(gòu)下,存儲(chǔ)系統(tǒng)復(fù)雜性和成本增加,例如當(dāng)兩個(gè)站點(diǎn)同事收到針對(duì)同一數(shù)據(jù)塊的寫操作時(shí),寫沖突問(wèn)題隨之產(chǎn)生。
3、因此亟需一種能夠解決沖突問(wèn)題,保障數(shù)據(jù)一致性的數(shù)據(jù)寫入方法以解決上述技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問(wèn)題,提供一種數(shù)據(jù)寫入方法、系統(tǒng)設(shè)備及截止。
2、第一方面,本技術(shù)提供一種數(shù)據(jù)寫入方法,所述方法包括:
3、響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);
4、根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;
5、響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:
6、獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);
7、根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。
8、在一些實(shí)施例中,所述方法還包括:
9、響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,根據(jù)所述本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)生成同步寫請(qǐng)求;
10、將所述本地站點(diǎn)生成的所述同步寫請(qǐng)求發(fā)送至所述遠(yuǎn)端站點(diǎn)。
11、在一些實(shí)施例中,所述根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及所述預(yù)設(shè)寫入規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,包括:
12、根據(jù)所述本地元數(shù)據(jù)內(nèi)的本地版本號(hào)和所述遠(yuǎn)端元數(shù)據(jù)內(nèi)的遠(yuǎn)端版本號(hào),判斷所述本地站點(diǎn)接收到的向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述同步寫請(qǐng)求與本地站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述數(shù)據(jù)寫請(qǐng)求是否通過(guò)第一寫沖突驗(yàn)證;
13、若通過(guò)所述第一寫沖突驗(yàn)證,則確定所述遠(yuǎn)端待寫入數(shù)據(jù)為目標(biāo)待寫入數(shù)據(jù)以及確定所述遠(yuǎn)端元數(shù)據(jù)內(nèi)的遠(yuǎn)端寫操作范圍為目標(biāo)寫操作范圍;
14、若未通過(guò)所述第一寫沖突驗(yàn)證,則根據(jù)所述遠(yuǎn)端寫操作范圍與所述本地寫操作范圍,判斷所述本地站點(diǎn)接收到的向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述同步寫請(qǐng)求與本地站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述數(shù)據(jù)寫請(qǐng)求是否通過(guò)第二寫沖突驗(yàn)證;
15、若通過(guò)所述第二寫沖突驗(yàn)證,則確定所述遠(yuǎn)端待寫入數(shù)據(jù)為目標(biāo)待寫入數(shù)據(jù)以及確定所述遠(yuǎn)端寫操作范圍為目標(biāo)寫操作范圍;
16、若未通過(guò)所述第二寫沖突驗(yàn)證,則根據(jù)所述遠(yuǎn)端寫操作范圍與所述本地寫操作范圍確定目標(biāo)寫操作范圍,并確定與所述目標(biāo)寫操作范圍匹配的遠(yuǎn)端待寫入數(shù)據(jù)為目標(biāo)待寫入數(shù)據(jù)。
17、在一些實(shí)施例中,所述根據(jù)所述本地元數(shù)據(jù)內(nèi)的本地版本號(hào)和所述遠(yuǎn)端元數(shù)據(jù)內(nèi)的遠(yuǎn)端版本號(hào),判斷所述本地站點(diǎn)接收到的向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述同步寫請(qǐng)求與本地站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述數(shù)據(jù)寫請(qǐng)求是否通過(guò)第一寫沖突驗(yàn)證,包括:
18、讀取所述本地版本號(hào)內(nèi)的本地序列號(hào)以及所述遠(yuǎn)端版本號(hào)內(nèi)的遠(yuǎn)端序列號(hào);
19、若所述本地序列號(hào)小于所述遠(yuǎn)端序列號(hào),則判斷通過(guò)所述第一寫沖突驗(yàn)證;
20、若所述本地序列號(hào)大于所述遠(yuǎn)端序列號(hào),則判斷未通過(guò)所述第一寫沖突驗(yàn)證。
21、在一些實(shí)施例中,所述根根據(jù)所述遠(yuǎn)端寫操作范圍與所述本地寫操作范圍,判斷所述本地站點(diǎn)接收到的向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述同步寫請(qǐng)求與本地站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的所述數(shù)據(jù)寫請(qǐng)求是否通過(guò)第二寫沖突驗(yàn)證,包括:
22、獲取與所述本地寫操作范圍對(duì)應(yīng)的本地范圍起點(diǎn)和本地范圍終點(diǎn)以及獲取與所述遠(yuǎn)端寫操作范圍對(duì)應(yīng)的遠(yuǎn)端范圍起點(diǎn)和遠(yuǎn)端范圍終點(diǎn);
23、若所述本地范圍起點(diǎn)大于所述遠(yuǎn)端范圍終點(diǎn)或所述本地范圍終點(diǎn)小于所述遠(yuǎn)端范圍起點(diǎn),則判定通過(guò)所述第二寫沖突驗(yàn)證;
24、若所述本地范圍起點(diǎn)小于所述遠(yuǎn)端范圍起點(diǎn)或所述本地范圍終點(diǎn)大于所述遠(yuǎn)端范圍終點(diǎn),則判定未通過(guò)所述第二寫沖突驗(yàn)證。
25、在一些實(shí)施例中,所述根據(jù)所述遠(yuǎn)端寫操作范圍與所述本地寫操作范圍確定目標(biāo)寫操作范圍之前,所述方法包括:
26、響應(yīng)于檢測(cè)到所述本地范圍起點(diǎn)小于所述遠(yuǎn)端范圍起點(diǎn)且所述本地范圍終點(diǎn)大于所述遠(yuǎn)端范圍終點(diǎn),則確定不存在所述目標(biāo)寫操作范圍;
27、響應(yīng)于檢測(cè)到所述本地范圍起點(diǎn)小于所述遠(yuǎn)端范圍起點(diǎn)且所述本地范圍終點(diǎn)小于遠(yuǎn)端范圍終點(diǎn),確定存在所述目標(biāo)寫操作范圍;
28、響應(yīng)于檢測(cè)到所述本地范圍起點(diǎn)大于所述遠(yuǎn)端范圍起點(diǎn)且所述本地范圍終點(diǎn)大于所述遠(yuǎn)端范圍終點(diǎn),確定存在所述目標(biāo)寫操作范圍。
29、在一些實(shí)施例中,所述根據(jù)所述遠(yuǎn)端寫操作范圍與所述本地寫操作范圍確定目標(biāo)寫操作范圍,包括:
30、響應(yīng)于檢測(cè)到所述本地范圍起點(diǎn)小于所述遠(yuǎn)端范圍起點(diǎn)且所述本地范圍終點(diǎn)小于所述遠(yuǎn)端范圍終點(diǎn),確定所述遠(yuǎn)端范圍起點(diǎn)與所述本地范圍終點(diǎn)構(gòu)成的寫操作范圍為目標(biāo)寫操作范圍;
31、響應(yīng)于檢測(cè)到所述本地范圍起點(diǎn)大于所述遠(yuǎn)端范圍起點(diǎn)且所述本地范圍終點(diǎn)大于所述遠(yuǎn)端范圍終點(diǎn),確定所述本地范圍起點(diǎn)與所述遠(yuǎn)端范圍終點(diǎn)構(gòu)成的寫操作范圍為目標(biāo)寫操作范圍。
32、第二方面,本技術(shù)提供一種數(shù)據(jù)寫入系統(tǒng),所述系統(tǒng)包括:
33、數(shù)據(jù)準(zhǔn)備模塊,用于響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);
34、數(shù)據(jù)處理模塊,用于根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;
35、數(shù)據(jù)處理模塊,還用于響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:
36、獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);
37、根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。
38、第三方面,本技術(shù)提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,該計(jì)算機(jī)程序被處理器執(zhí)行時(shí)如下方法的步驟:
39、響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);
40、根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;
41、響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:
42、獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);
43、根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。
44、第三方面,本技術(shù)提供了一種電子設(shè)備,電子設(shè)備包括:
45、一個(gè)或多個(gè)處理器;
46、以及與一個(gè)或多個(gè)處理器關(guān)聯(lián)的存儲(chǔ)器,存儲(chǔ)器用于存儲(chǔ)程序指令,程序指令在被一個(gè)或多個(gè)處理器讀取執(zhí)行時(shí),執(zhí)行如下操作:
47、響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);
48、根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;
49、響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:
50、獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);
51、根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。
52、第四方面,本技術(shù)還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),存儲(chǔ)介質(zhì)上存儲(chǔ)計(jì)算機(jī)程序,計(jì)算機(jī)程序使得計(jì)算機(jī)執(zhí)行如下操作:
53、響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);
54、根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;
55、響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:
56、獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);
57、根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。
58、本技術(shù)實(shí)現(xiàn)的有益效果為:
59、本技術(shù)提供了一種數(shù)據(jù)寫入方法,包括響應(yīng)于檢測(cè)到本地站點(diǎn)向目標(biāo)數(shù)據(jù)塊發(fā)起的數(shù)據(jù)寫請(qǐng)求,獲取所述本地站點(diǎn)當(dāng)前維護(hù)的本地版本號(hào);根據(jù)所述數(shù)據(jù)寫請(qǐng)求對(duì)應(yīng)的本地寫操作范圍與所述本地版本號(hào)以生成本地元數(shù)據(jù)并將所述數(shù)據(jù)寫請(qǐng)求中內(nèi)的本地待寫入數(shù)據(jù)以及所述本地元數(shù)據(jù)寫入所述目標(biāo)數(shù)據(jù)塊;響應(yīng)于檢測(cè)到所述本地站點(diǎn)接收到遠(yuǎn)端站點(diǎn)向所述目標(biāo)數(shù)據(jù)塊發(fā)起的同步寫請(qǐng)求,觸發(fā)所述本地站點(diǎn)應(yīng)答所述同步寫請(qǐng)求,包括:獲取所述同步寫請(qǐng)求中包含的遠(yuǎn)端待寫入數(shù)據(jù)和遠(yuǎn)端元數(shù)據(jù),所述遠(yuǎn)端元數(shù)據(jù)包括所述同步寫請(qǐng)求對(duì)應(yīng)的遠(yuǎn)端寫操作范圍以及所述遠(yuǎn)端站點(diǎn)當(dāng)前維護(hù)的遠(yuǎn)端版本號(hào);根據(jù)所述本地元數(shù)據(jù)、遠(yuǎn)端元數(shù)據(jù)、所述遠(yuǎn)端待寫入數(shù)據(jù)以及預(yù)設(shè)規(guī)則,確定與所述同步寫請(qǐng)求對(duì)應(yīng)的目標(biāo)待寫入數(shù)據(jù)以及目標(biāo)寫操作范圍,并將所述目標(biāo)待寫入數(shù)據(jù)寫入所述目標(biāo)寫操作范圍以應(yīng)答所述遠(yuǎn)端站點(diǎn)發(fā)起的同步寫請(qǐng)求。解決了存儲(chǔ)雙活系統(tǒng)中的寫沖突問(wèn)題,避免了可能產(chǎn)生死鎖風(fēng)險(xiǎn),提高了系統(tǒng)的并發(fā)性能,并保證了兩個(gè)站點(diǎn)上的數(shù)據(jù)一致性。