本技術涉及分布式,尤其涉及一種數據同步方法、裝置、電子設備以及存儲介質。
背景技術:
1、在分布式技術領域中,通常采用分布式塊存儲的架構來存儲數據,以滿足分布式系統的數據存取需求。在分布式塊存儲架構中,通常需要使用多副本的方式來做數據的冗余,此時,需要保證多個副本內的數據內容完全一致,以避免從不同副本中讀取出不同的數據,導致系統出錯。
2、基于此,若系統或者副本發(fā)生故障,則需要在系統恢復之后,檢測各個副本之間所存儲的數據內容是否一致,如果不一致,則需要及時進行數據同步,并在數據同步完成之后,再對外提供數據的讀寫服務。
3、相關技術中,為了保證多個副本之間的一致性,需要對各個副本進行一致性的數據更新,但是,現有的數據更新方式,流程較為復雜,導致系統延時較高,影響了系統的性能。
技術實現思路
1、本技術提供一種數據同步方法、裝置、電子設備以及存儲介質,用以解決現有技術中,在系統故障恢復后,對各個副本進行數據同步時,數據更新流程復雜,時延較高,影響了系統的整體性能的技術問題。
2、第一方面,本技術提供一種數據同步方法,包括:
3、確定第一副本中的第一目標數據塊;其中,所述第一副本表征發(fā)生故障的副本;所述第一目標數據塊表征在所述第一副本發(fā)生故障時,進行數據更新的數據塊;
4、對所述第一目標數據塊內的待校驗數據,進行數據校驗,得到數據校驗結果;其中,所述待校驗數據表征在所述第一副本發(fā)生故障時,進行數據更新的數據;所述數據校驗結果用于確定所述第一目標數據塊是否已經完成數據更新;
5、若基于所述數據校驗結果,確定出所述第一目標數據塊未完成數據更新,則基于第二副本內的,與所述第一目標數據塊相對應的第二目標數據塊,先更新所述第一目標數據塊對應的第一元數據,再更新所述第一目標數據塊中的待校驗數據,完成對所述第一副本的數據同步處理;其中,所述第二副本表征未發(fā)生故障的副本;所述第一元數據表征所述待校驗數據的屬性信息。
6、一個示例中,所述確定第一副本中的第一目標數據塊,包括:
7、獲取所述第一副本對應的目標序列號信息;其中,所述目標序列號信息用于確定所述第一副本中的,在發(fā)生故障之前完成數據更新的數據塊;
8、基于所述目標序列號信息,從所述第一副本所包括的各個數據塊中,確定所述第一目標數據塊。
9、一個示例中,所述方法還包括:
10、在完成對所述第一副本的數據同步處理之后,更新所述目標序列號信息。
11、一個示例中,基于所述目標序列號信息,從所述第一副本所包括的各個數據塊中,確定所述第一目標數據塊,包括:
12、確定所述第一副本內所包含的各個數據塊所對應的第二元數據;其中,所述第二元數據中包括全局序列號信息;所述全局序列號信息表征所述第一副本內所包含的各個數據塊在進行數據同步之前的數據更新順序;
13、基于所述目標序列號信息,從所述第一副本內所包含的各個數據塊所對應的全局序列號信息中,確定出目標標識數據,并將所述目標標識數據所對應的數據塊,確定為所述第一目標數據塊;其中,所述目標標識數據的取值,大于所述目標序列號信息的取值。
14、一個示例中,在對所述第一目標數據塊內的待校驗數據,進行數據校驗之前,所述方法還包括:
15、確定所述第一目標數據塊對應的第一元數據中所包括的數據更新信息;其中,所述數據更新信息包括更新起始位置信息和更新長度信息;
16、基于所述更新起始位置信息和所述更新長度信息,從所述第一目標數據塊中確定所述待校驗數據。
17、一個示例中,所述對所述第一目標數據塊內的待校驗數據,進行數據校驗,得到數據校驗結果,包括:
18、按照預先設置的數據校驗方法,計算所述待校驗數據對應的校驗計算數據;
19、將所述校驗計算數據與所述第一數據塊對應的第一元數據中的校驗值進行比較,得到第一校驗結果;
20、獲取所述第一目標數據塊對應的第一元數據所包括的第一版本號信息,以及所述第二目標數據塊對應的第三元數據所包括的第二版本號信息,并將所述第一版本號信息和所述第二版本號信息進行比較,得到第二校驗結果;
21、基于所述第一校驗結果和所述第二校驗結果,確定所述數據校驗結果。
22、一個示例中,所述基于所述第一校驗結果和所述第二校驗結果,確定所述數據校驗結果,包括:
23、若所述第一校驗結果表征所述校驗計算數據和所述第二校驗值相同,且,所述第二校驗結果表征所述第一版本號信息和所述第二版本號信息相同,則確定所述數據校驗結果表征所述第一目標數據塊已完成數據同步;
24、若所述第一校驗結果表征所述校驗計算數據和所述第二校驗值不相同,和/或,所述第二校驗結果表征所述第一版本號信息和所述第二版本號信息不相同,則確定所述數據校驗結果表征所述第一目標數據塊未完成數據同步。
25、第二方面,本技術提供一種數據同步裝置,包括:
26、第一確定單元,用于確定第一副本中的第一目標數據塊;其中,所述第一副本表征發(fā)生故障的副本;所述第一目標數據塊表征在所述第一副本發(fā)生故障時,進行數據更新的數據塊;
27、數據校驗單元,用于對所述第一目標數據塊內的待校驗數據,進行數據校驗,得到數據校驗結果;其中,所述待校驗數據表征在所述第一副本發(fā)生故障時,進行數據更新的數據;所述數據校驗結果用于確定所述第一目標數據塊是否已經完成數據更新;
28、數據同步單元,用于若基于所述數據校驗結果,確定出所述第一目標數據塊未完成數據更新,則基于第二副本內的,與所述第一目標數據塊相對應的第二目標數據塊,先更新所述第一目標數據塊對應的第一元數據,再更新所述第一目標數據塊中的待校驗數據,完成對所述第一副本的數據同步處理;其中,所述第二副本表征未發(fā)生故障的副本;所述第一元數據表征所述待校驗數據的屬性信息。
29、一個示例中,第一確定單元,用于:
30、獲取所述第一副本對應的目標序列號信息;其中,所述目標序列號信息用于確定所述第一副本中的,在發(fā)生故障之前完成數據更新的數據塊;
31、基于所述目標序列號信息,從所述第一副本所包括的各個數據塊中,確定所述第一目標數據塊。
32、一個示例中,該裝置還包括:
33、更新單元,用于在完成對所述第一副本的數據同步處理之后,更新所述目標序列號信息。
34、一個示例中,第一確定單元,用于:
35、確定所述第一副本內所包含的各個數據塊所對應的第二元數據;其中,所述第二元數據中包括全局序列號信息;所述全局序列號信息表征所述第一副本內所包含的各個數據塊在進行數據同步之前的數據更新順序;
36、基于所述目標序列號信息,從所述第一副本內所包含的各個數據塊所對應的全局序列號信息中,確定出目標標識數據,并將所述目標標識數據所對應的數據塊,確定為所述第一目標數據塊;其中,所述目標標識數據的取值,大于所述目標序列號信息的取值。
37、一個示例中,該裝置還包括:
38、第二確定單元,用于在對所述第一目標數據塊內的待校驗數據,進行數據校驗之前,確定所述第一目標數據塊對應的第一元數據中所包括的數據更新信息;其中,所述數據更新信息包括更新起始位置信息和更新長度信息;
39、基于所述更新起始位置信息和所述更新長度信息,從所述第一目標數據塊中確定所述待校驗數據。
40、一個示例中,數據校驗單元,用于:
41、按照預先設置的數據校驗方法,計算所述待校驗數據對應的校驗計算數據;
42、將所述校驗計算數據與所述第一數據塊對應的第一元數據中的校驗值進行比較,得到第一校驗結果;
43、獲取所述第一目標數據塊對應的第一元數據所包括的第一版本號信息,以及所述第二目標數據塊對應的第三元數據所包括的第二版本號信息,并將所述第一版本號信息和所述第二版本號信息進行比較,得到第二校驗結果;
44、基于所述第一校驗結果和所述第二校驗結果,確定所述數據校驗結果。
45、一個示例中,數據校驗單元,用于:
46、若所述第一校驗結果表征所述校驗計算數據和所述第二校驗值相同,且,所述第二校驗結果表征所述第一版本號信息和所述第二版本號信息相同,則確定所述數據校驗結果表征所述第一目標數據塊已完成數據同步;
47、若所述第一校驗結果表征所述校驗計算數據和所述第二校驗值不相同,和/或,所述第二校驗結果表征所述第一版本號信息和所述第二版本號信息不相同,則確定所述數據校驗結果表征所述第一目標數據塊未完成數據同步。
48、第三方面,本技術提供一種電子設備,包括:處理器,以及與所述處理器通信連接的存儲器;
49、所述存儲器存儲計算機執(zhí)行指令;
50、所述處理器執(zhí)行所述存儲器存儲的計算機執(zhí)行指令,以實現第一方面所述的方法。
51、第四方面,本技術提供一種計算機可讀存儲介質,所述計算機可讀存儲介質中存儲有計算機執(zhí)行指令,所述計算機執(zhí)行指令被處理器執(zhí)行時用于實現第一方面所述的方法。
52、第五方面,本技術提供一種計算機程序產品,所述計算機程序產品包括:計算機執(zhí)行指令,所述計算機執(zhí)行指令存儲在可讀存儲介質中,電子設備的至少一個處理器可以從所述可讀存儲介質讀取所述計算機執(zhí)行指令,所述至少一個處理器執(zhí)行所述計算機執(zhí)行指令,使得電子設備執(zhí)行第一方面所述的方法。
53、本技術提供的數據同步方法、裝置、電子設備以及存儲介質,可以在發(fā)生故障的第一副本故障恢復之后,獲取第一副本中的第一目標數據塊,其中,第一目標數據塊表征在第一副本發(fā)生故障時,進行數據更新的數據塊。然后,可以對第一目標數據塊內的待校驗數據,進行數據校驗,得到數據校驗結果。此時,若基于數據校驗結果,確定出第一目標數據塊未完成數據同步,則基于第二副本內的,與第一目標數據塊相對應的第二目標數據塊,先更新第一目標數據塊對應的第一元數據,再更新第一目標數據塊中的待校驗數據,完成對第一副本的數據同步處理。這種實施方式,可以在確定出發(fā)生故障的第一副本中的待校驗數據,未完成數據更新,需要進行數據同步的情況下,基于未發(fā)生故障的第二副本,先更新第一元數據,再更新待校驗數據,相較于現有的數據更新方法,減少了io次數,進而不僅減輕了磁盤壓力,還減少了數據更新過程中io路徑的時延,提高了數據同步的效率,進而提升了存儲系統的整體性能。