本發(fā)明屬于存儲,具體涉及一種存儲緩存系統(tǒng)的數(shù)據(jù)處理方法、一種存儲緩存系統(tǒng)的數(shù)據(jù)處理裝置、一種電子設(shè)備和一種計算機可讀存儲介質(zhì)。
背景技術(shù):
1、在云計算時代,海量數(shù)據(jù)的容災(zāi)備份的重要性也越來越高。由于打快照執(zhí)行時間快、占用磁盤空間少等優(yōu)點,快照逐漸成為容災(zāi)備份的重要手段。
2、在企業(yè)級存儲系統(tǒng)中,快照是其中必不可少的一種特性。快照一般采用寫時復(fù)制技術(shù)(cow)實現(xiàn),是數(shù)據(jù)對象某一時刻的只讀鏡像;在對該數(shù)據(jù)對象進行修改寫前,將數(shù)據(jù)對現(xiàn)象先拷貝一份,然后再對數(shù)據(jù)對象進行修改寫,拷貝的這份數(shù)據(jù)對象就是快照(snapshot)。但現(xiàn)有的快照服務(wù)在使用時通常會面對涉及大量的數(shù)據(jù)的復(fù)制和存儲、寫放大、涉及到對慢速存儲介質(zhì)如硬盤等介質(zhì)的訪問次數(shù),導(dǎo)致在高并發(fā)環(huán)境下訪問速度慢,對后端存儲系統(tǒng)壓力過大和內(nèi)存占用等問題。
3、緩存技術(shù)是一種通過保存數(shù)據(jù)副本來減少對原始數(shù)據(jù)源訪問次數(shù)的技術(shù)。它通過將頻繁訪問的數(shù)據(jù)存儲在高速的存儲介質(zhì)中,來減少對慢速存儲介質(zhì)的訪問次數(shù),從而提高數(shù)據(jù)訪問速度。
技術(shù)實現(xiàn)思路
1、鑒于上述背景技術(shù)中的相關(guān)問題,提出了本發(fā)明實施例以便提供一種克服上述問題或者至少部分地解決上述問題的一種存儲緩存系統(tǒng)的數(shù)據(jù)處理方法、一種存儲緩存系統(tǒng)的數(shù)據(jù)處理裝置、一種電子設(shè)備和一種計算機可讀存儲介質(zhì)。
2、為了解決上述問題,本發(fā)明實施例公開了一種存儲緩存系統(tǒng)的數(shù)據(jù)處理方法,應(yīng)用于存儲緩存系統(tǒng),所述方法包括:
3、當(dāng)接收到針對目標(biāo)對象的寫操作指令時,根據(jù)所述寫操作指令攜帶的數(shù)據(jù)和元數(shù)據(jù),對緩存中所述目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象,并對緩存中所述目標(biāo)對象對應(yīng)的緩存對象進行更新;
4、將所述目標(biāo)對象對應(yīng)的緩存對象和快照對象持久化存儲;
5、當(dāng)接收到針對所述目標(biāo)對象的讀操作指令時,從所述緩存中的所述緩存對象、所述緩存中的快照對象、持久化存儲的緩存對象和持久化存儲的快照對象的至少一種中讀取所述目標(biāo)對象的數(shù)據(jù)。
6、可選地,所述對緩存中所述目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象,包括:
7、獲取緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)和元數(shù)據(jù);
8、比較所述寫操作指令攜帶的數(shù)據(jù)中的快照版本,和所述緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)中的快照版本;
9、當(dāng)所述寫操作指令攜帶的數(shù)據(jù)中的快照版本和所述緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)中的快照版本不相同時,針對所述目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象;
10、將所述目標(biāo)對象對應(yīng)的緩存對象中的數(shù)據(jù)和元數(shù)據(jù)寫入所述快照對象,并將所述寫操作指令攜帶的數(shù)據(jù)中的快照版本寫入所述快照對象。
11、可選地,所述對緩存中所述目標(biāo)對象對應(yīng)的緩存對象進行更新,包括:
12、在創(chuàng)建所述快照對象后,清除所述緩存對象中的數(shù)據(jù),并將所述寫操作指令中攜帶的數(shù)據(jù)和元數(shù)據(jù)寫入所述緩存對象中。
13、可選地,所述將所述目標(biāo)對象對應(yīng)的緩存對象和快照對象持久化存儲,包括:
14、確定所述緩存對象和所述快照對象的所屬組;
15、根據(jù)所述所屬組對所述緩存對象和所述快照對象進行聚合處理;
16、將聚合處理得到的聚合數(shù)據(jù)放入預(yù)設(shè)組持久化隊列中,對所述預(yù)設(shè)組持久化隊列中的聚合數(shù)據(jù)進行持久化。
17、可選地,所述對所述預(yù)設(shè)組持久化隊列中的聚合數(shù)據(jù)進行持久化,包括:
18、當(dāng)滿足預(yù)設(shè)持久化條件時,將所述預(yù)設(shè)組持久化隊列中的聚合數(shù)據(jù),根據(jù)預(yù)設(shè)數(shù)據(jù)閾值劃分為多份作為持久化子任務(wù);所述持久化條件為所述預(yù)設(shè)組持久化隊列大小超過預(yù)設(shè)大小閾值或距離上次持久化操作的時間超過預(yù)設(shè)時間閾值;
19、對所述持久化子任務(wù)進行并發(fā)持久化處理。
20、可選地,所述當(dāng)接收到針對所述目標(biāo)對象的讀操作指令時,從所述緩存中的所述緩存對象、所述緩存中的快照對象、持久化存儲的緩存對象和持久化存儲的快照對象的至少一種中讀取所述目標(biāo)對象的數(shù)據(jù),包括:
21、當(dāng)在所述緩存中存在與所述讀操作指令指示的需求數(shù)據(jù)的快照版本對應(yīng)的所述緩存對象時,確定所述讀操作指令的命中情況;所述命中情況包括所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部命中,所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中部分命中,或所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部未命中;
22、若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部命中,則從所述緩存的所述緩存對象和所述快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù);
23、若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中部分命中,則從所述緩存的所述緩存對象和所述快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)的部分?jǐn)?shù)據(jù);以及,從持久化存儲的緩存對象和持久化存儲的快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)的部分?jǐn)?shù)據(jù);
24、若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部未命中,則從持久化存儲的緩存對象和持久化存儲的快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)。
25、可選地,所述當(dāng)接收到針對所述目標(biāo)對象的讀操作指令時,從所述緩存中的所述緩存對象、所述緩存中的快照對象、持久化存儲的緩存對象和持久化存儲的快照對象的至少一種中讀取所述目標(biāo)對象的數(shù)據(jù),還包括:
26、當(dāng)在所述緩存中不存在與所述讀操作指令指示的需求數(shù)據(jù)的快照版本對應(yīng)的所述緩存對象,但存在對應(yīng)的快照對象時,確定持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象;
27、比較所述讀操作指令指示的需求數(shù)據(jù)的快照版本,和所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本;
28、當(dāng)所述讀操作指令指示的需求數(shù)據(jù)的快照版本,大于所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本時,則從所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象中,讀取所述讀操作指令指示的需求數(shù)據(jù);
29、當(dāng)所述讀操作指令指示的需求數(shù)據(jù)的快照版本,小于或等于所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本時,獲取所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象對應(yīng)的快照對象;
30、從所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象對應(yīng)的快照對象中,讀取所述讀操作指令指示的需求數(shù)據(jù)。
31、本發(fā)明實施例還公開了一種存儲緩存系統(tǒng)的數(shù)據(jù)處理裝置,應(yīng)用于存儲緩存系統(tǒng),所述裝置包括:
32、寫操作模塊,用于當(dāng)接收到針對目標(biāo)對象的寫操作指令時,根據(jù)所述寫操作指令攜帶的數(shù)據(jù)和元數(shù)據(jù),對緩存中所述目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象,并對緩存中所述目標(biāo)對象對應(yīng)的緩存對象進行更新;
33、持久化模塊,用于將所述目標(biāo)對象對應(yīng)的緩存對象和快照對象持久化存儲;
34、讀操作模塊,用于當(dāng)接收到針對所述目標(biāo)對象的讀操作指令時,從所述緩存中的所述緩存對象、所述緩存中的快照對象、持久化存儲的緩存對象和持久化存儲的快照對象的至少一種中讀取所述目標(biāo)對象的數(shù)據(jù)。
35、可選地,所述寫操作模塊包括:
36、數(shù)據(jù)獲取子模塊,用于獲取緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)和元數(shù)據(jù);
37、第一比較子模塊,用于比較所述寫操作指令攜帶的數(shù)據(jù)中的快照版本,和所述緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)中的快照版本;
38、對象創(chuàng)建子模塊,用于當(dāng)所述寫操作指令攜帶的數(shù)據(jù)中的快照版本和所述緩存中所述目標(biāo)對象對應(yīng)的緩存對象的數(shù)據(jù)中的快照版本不相同時,針對所述目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象;
39、第一寫入子模塊,用于將所述目標(biāo)對象對應(yīng)的緩存對象中的數(shù)據(jù)和元數(shù)據(jù)寫入所述快照對象,并將所述寫操作指令攜帶的數(shù)據(jù)中的快照版本寫入所述快照對象。
40、可選地,所述寫操作模塊包括:
41、第二寫入子模塊,用于在創(chuàng)建所述快照對象后,清除所述緩存對象中的數(shù)據(jù),并將所述寫操作指令中攜帶的數(shù)據(jù)和元數(shù)據(jù)寫入所述緩存對象中。
42、可選地,所述持久化模塊包括:
43、組確定子模塊,用于確定所述緩存對象和所述快照對象的所屬組;
44、聚合處理子模塊,用于根據(jù)所述所屬組對所述緩存對象和所述快照對象進行聚合處理;
45、持久化子模塊,用于將聚合處理得到的聚合數(shù)據(jù)放入預(yù)設(shè)組持久化隊列中,對所述預(yù)設(shè)組持久化隊列中的聚合數(shù)據(jù)進行持久化。
46、可選地,所述持久化子模塊包括:
47、任務(wù)劃分單元,用于當(dāng)滿足預(yù)設(shè)持久化條件時,將所述預(yù)設(shè)組持久化隊列中的聚合數(shù)據(jù),根據(jù)預(yù)設(shè)數(shù)據(jù)閾值劃分為多份作為持久化子任務(wù);所述持久化條件為所述預(yù)設(shè)組持久化隊列大小超過預(yù)設(shè)大小閾值或距離上次持久化操作的時間超過預(yù)設(shè)時間閾值;
48、持久化單元,用于對所述持久化子任務(wù)進行并發(fā)持久化處理。
49、可選地,所述讀操作模塊包括:
50、命中情況確定子模塊,用于當(dāng)在所述緩存中存在與所述讀操作指令指示的需求數(shù)據(jù)的快照版本對應(yīng)的所述緩存對象時,確定所述讀操作指令的命中情況;所述命中情況包括所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部命中,所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中部分命中,或所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部未命中;
51、第一讀取子模塊,用于若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部命中,則從所述緩存的所述緩存對象和所述快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù);
52、第二讀取子模塊,用于若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中部分命中,則從所述緩存的所述緩存對象和所述快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)的部分?jǐn)?shù)據(jù);以及,從持久化存儲的緩存對象和持久化存儲的快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)的部分?jǐn)?shù)據(jù);
53、第三讀取子模塊,用于若所述命中情況為所述讀操作指令指示的需求數(shù)據(jù)在所述緩存的所述緩存對象和所述快照對象中全部未命中,則從持久化存儲的緩存對象和持久化存儲的快照對象中讀取所述讀操作指令指示的需求數(shù)據(jù)。
54、可選地,所述讀操作模塊還包括:
55、對象確定子模塊,用于當(dāng)在所述緩存中不存在與所述讀操作指令指示的需求數(shù)據(jù)的快照版本對應(yīng)的所述緩存對象,但存在對應(yīng)的快照對象時,確定持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象;
56、第二版本比較模塊,用于比較所述讀操作指令指示的需求數(shù)據(jù)的快照版本,和所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本;
57、第四讀取子模塊,用于當(dāng)所述讀操作指令指示的需求數(shù)據(jù)的快照版本,大于所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本時,則從所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象中,讀取所述讀操作指令指示的需求數(shù)據(jù);
58、對象獲取子模塊,用于當(dāng)所述讀操作指令指示的需求數(shù)據(jù)的快照版本,小于或等于所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象的快照版本時,獲取所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象對應(yīng)的快照對象;
59、第五讀取子模塊,用于從所述持久化存儲的與所述需求數(shù)據(jù)對應(yīng)的最新的緩存對象對應(yīng)的快照對象中,讀取所述讀操作指令指示的需求數(shù)據(jù)。
60、相應(yīng)的,本發(fā)明實施例公開了一種電子設(shè)備,包括:處理器、存儲器及存儲在所述存儲器上并能夠在所述處理器上運行的計算機程序,所述計算機程序被所述處理器執(zhí)行時實現(xiàn)上述存儲緩存系統(tǒng)的數(shù)據(jù)處理方法實施例的各個步驟。
61、相應(yīng)的,本發(fā)明實施例公開了一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)上述存儲緩存系統(tǒng)的數(shù)據(jù)處理方法實施例的各個步驟。
62、本發(fā)明實施例包括以下優(yōu)點:
63、本發(fā)明實施例通過當(dāng)存儲緩存系統(tǒng)接收到針對目標(biāo)對象的寫操作指令時,存儲緩存系統(tǒng)根據(jù)寫操作指令攜帶的數(shù)據(jù)和元數(shù)據(jù),對緩存中目標(biāo)對象對應(yīng)的緩存對象創(chuàng)建快照對象,并對緩存中目標(biāo)對象對應(yīng)的緩存對象進行更新;可以確保在更新緩存對象之前,目標(biāo)對象的狀態(tài)被完整地記錄下來。這樣,即使在更新過程中發(fā)生錯誤或系統(tǒng)故障,也可以通過快照對象恢復(fù)到更新前的狀態(tài),從而保持?jǐn)?shù)據(jù)的一致性??煺諏ο蟮拇嬖跒閿?shù)據(jù)恢復(fù)提供了快速通道。在需要時,可以直接從快照中恢復(fù)數(shù)據(jù),大大縮短了恢復(fù)時間;通過在接收到針對目標(biāo)對象的讀操作指令時,從緩存中的所述緩存對象、緩存中的快照對象、持久化存儲的緩存對象和持久化存儲的快照對象的至少一種中讀取所述目標(biāo)對象的數(shù)據(jù),從而提高在高并發(fā)環(huán)境下的訪問速度,減輕對后端存儲系統(tǒng)訪問壓力。