本技術(shù)實(shí)施例涉及數(shù)據(jù)處理,尤其涉及一種數(shù)據(jù)的處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、隨著互聯(lián)網(wǎng)及云服務(wù)技術(shù)的發(fā)展,云服務(wù)系統(tǒng)穩(wěn)定性是云服務(wù)質(zhì)量的重要評(píng)價(jià)指標(biāo),云服務(wù)需要保證長(zhǎng)時(shí)間運(yùn)行的可靠性。智能網(wǎng)卡是云上系統(tǒng)的基礎(chǔ)設(shè)施,涉及到大量軟硬件協(xié)同相關(guān)的數(shù)據(jù),對(duì)于這些數(shù)據(jù)的可靠性有著很高的要求,智能網(wǎng)卡的穩(wěn)定性是云服務(wù)系統(tǒng)的重要保障。智能網(wǎng)卡在長(zhǎng)時(shí)間的運(yùn)行過(guò)程中,由于業(yè)務(wù)場(chǎng)景的復(fù)雜性與可能出現(xiàn)的人為誤操作等問(wèn)題,不可避免的會(huì)出現(xiàn)系統(tǒng)異常,因此,當(dāng)智能網(wǎng)卡的底層軟件出現(xiàn)異常時(shí),極有可能導(dǎo)致軟硬件相關(guān)的數(shù)據(jù)完整性遭到破壞,進(jìn)而使整個(gè)程序的運(yùn)行處在一個(gè)完全不確定狀態(tài),進(jìn)而可能造成整個(gè)云上系統(tǒng)的崩潰。
2、目前的系統(tǒng)通常采用lsm-tree(log-structuredmerged-tree,日志結(jié)構(gòu)合并樹(shù))架構(gòu)來(lái)實(shí)現(xiàn)數(shù)據(jù)的讀寫(xiě)。lsm-tree將數(shù)據(jù)寫(xiě)入操作分成兩個(gè)階段:首先將新數(shù)據(jù)寫(xiě)入到一個(gè)內(nèi)存中的日志結(jié)構(gòu)中,然后定期地將這個(gè)內(nèi)存數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)通過(guò)日志追加的方式寫(xiě)入到磁盤(pán)中。但是,這種分段式數(shù)據(jù)存取方法數(shù)據(jù)的讀寫(xiě)時(shí)間較長(zhǎng),在對(duì)時(shí)間敏感的智能網(wǎng)卡的軟件系統(tǒng)中,因?yàn)橛脖P(pán)讀寫(xiě)速度通常在毫秒級(jí)別,由此會(huì)對(duì)數(shù)據(jù)的讀寫(xiě)速度造成很大的影響,會(huì)給系統(tǒng)帶來(lái)延遲,此外,日志追加操作寫(xiě)入數(shù)據(jù)的方式會(huì)消耗較高的磁盤(pán)空間。
技術(shù)實(shí)現(xiàn)思路
1、本技術(shù)實(shí)施例提供了一種數(shù)據(jù)的處理方法、裝置、設(shè)備及存儲(chǔ)介質(zhì),用于通過(guò)采用數(shù)據(jù)安全寫(xiě)入機(jī)制將待寫(xiě)入數(shù)據(jù)完整寫(xiě)入數(shù)據(jù)目標(biāo)區(qū)域,再結(jié)合恢復(fù)機(jī)制進(jìn)一步保證程序異常發(fā)生后,能夠?qū)⑽赐耆珜?xiě)入的數(shù)據(jù)的重新完整寫(xiě)入數(shù)據(jù)目標(biāo)區(qū)域,不僅能夠滿(mǎn)足云上環(huán)境數(shù)據(jù)操作時(shí)的高可靠性需求,即維護(hù)數(shù)據(jù)寫(xiě)入的完整性,而且能夠通過(guò)采用內(nèi)存存取數(shù)據(jù)來(lái)提高數(shù)據(jù)存取速度,從而降低智能網(wǎng)卡數(shù)據(jù)讀寫(xiě)的時(shí)延。
2、本技術(shù)實(shí)施例一方面提供了一種數(shù)據(jù)的處理方法,包括:
3、通過(guò)數(shù)據(jù)操作接口,將待寫(xiě)入數(shù)據(jù)從目標(biāo)應(yīng)用程序存儲(chǔ)空間復(fù)制到數(shù)據(jù)備份區(qū)域,其中,數(shù)據(jù)備份區(qū)域用于臨時(shí)存儲(chǔ)待寫(xiě)入數(shù)據(jù);
4、在刷新區(qū)域列表中為數(shù)據(jù)備份區(qū)域設(shè)置對(duì)應(yīng)的待寫(xiě)入標(biāo)記,其中,刷新區(qū)域列表用于記錄待寫(xiě)入數(shù)據(jù)的屬性信息,屬性信息包括待寫(xiě)入標(biāo)記;
5、將待寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域中,并清除刷新區(qū)域列表中的待寫(xiě)入標(biāo)記,其中,數(shù)據(jù)目標(biāo)區(qū)域用于存儲(chǔ)待寫(xiě)入數(shù)據(jù);
6、當(dāng)檢測(cè)到數(shù)據(jù)寫(xiě)入操作異常退出時(shí),檢測(cè)刷新區(qū)域列表中數(shù)據(jù)寫(xiě)入操作異常退出時(shí)對(duì)應(yīng)的當(dāng)前待寫(xiě)入標(biāo)記;
7、若檢測(cè)到存在當(dāng)前待寫(xiě)入標(biāo)記,則將當(dāng)前待寫(xiě)入標(biāo)記對(duì)應(yīng)的待寫(xiě)入數(shù)據(jù)重新從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域,并清除刷新區(qū)域列表中的當(dāng)前待寫(xiě)入標(biāo)記。
8、本技術(shù)另一方面提供了一種數(shù)據(jù)的處理裝置,包括:
9、處理單元,用于通過(guò)數(shù)據(jù)操作接口,將待寫(xiě)入數(shù)據(jù)從目標(biāo)應(yīng)用程序存儲(chǔ)空間復(fù)制到數(shù)據(jù)備份區(qū)域,其中,數(shù)據(jù)備份區(qū)域用于臨時(shí)存儲(chǔ)待寫(xiě)入數(shù)據(jù);
10、獲取單元,用于在刷新區(qū)域列表中為數(shù)據(jù)備份區(qū)域設(shè)置對(duì)應(yīng)的待寫(xiě)入標(biāo)記,其中,刷新區(qū)域列表用于記錄待寫(xiě)入數(shù)據(jù)的屬性信息,屬性信息包括待寫(xiě)入標(biāo)記;
11、處理單元,還用于將待寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域中,并清除刷新區(qū)域列表中的待寫(xiě)入標(biāo)記,其中,數(shù)據(jù)目標(biāo)區(qū)域用于存儲(chǔ)待寫(xiě)入數(shù)據(jù);
12、獲取單元,還用于當(dāng)檢測(cè)到數(shù)據(jù)寫(xiě)入操作異常退出時(shí),檢測(cè)刷新區(qū)域列表中數(shù)據(jù)寫(xiě)入操作異常退出時(shí)對(duì)應(yīng)的當(dāng)前待寫(xiě)入標(biāo)記;
13、處理單元,還用于若檢測(cè)到存在當(dāng)前待寫(xiě)入標(biāo)記,則將當(dāng)前待寫(xiě)入標(biāo)記對(duì)應(yīng)的待寫(xiě)入數(shù)據(jù)重新從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域,并清除刷新區(qū)域列表中的當(dāng)前待寫(xiě)入標(biāo)記。
14、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
15、獲取單元,還用于獲取待寫(xiě)入數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)目標(biāo)區(qū)域信息,其中,數(shù)據(jù)目標(biāo)區(qū)域信息至少包括數(shù)據(jù)目標(biāo)區(qū)域地址以及長(zhǎng)度,其中,數(shù)據(jù)目標(biāo)區(qū)域地址用于指示待寫(xiě)入數(shù)據(jù)向數(shù)據(jù)目標(biāo)區(qū)域?qū)懭氲牡刂?,長(zhǎng)度用于指示待寫(xiě)入數(shù)據(jù)向數(shù)據(jù)目標(biāo)區(qū)域?qū)懭氲臄?shù)據(jù)長(zhǎng)度;
16、處理單元,還用于將數(shù)據(jù)目標(biāo)區(qū)域地址和長(zhǎng)度更新到刷新區(qū)域列表中。
17、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,處理單元具體可以用于:
18、將待寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域地址以及長(zhǎng)度對(duì)應(yīng)的數(shù)據(jù)目標(biāo)區(qū)域中,并清除刷新區(qū)域列表中的待寫(xiě)入標(biāo)記。
19、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
20、處理單元,還用于通過(guò)數(shù)據(jù)存取空間申請(qǐng)接口,在系統(tǒng)數(shù)據(jù)存儲(chǔ)空間中劃分出數(shù)據(jù)目標(biāo)區(qū)域,以及與數(shù)據(jù)目標(biāo)區(qū)域相對(duì)應(yīng)的數(shù)據(jù)備份區(qū)域以及刷新區(qū)域列表;
21、處理單元,還用于基于系統(tǒng)支持的進(jìn)程類(lèi)型,將數(shù)據(jù)目標(biāo)區(qū)域劃分為n個(gè)數(shù)據(jù)目標(biāo)分組,以及將數(shù)據(jù)備份區(qū)域劃分為n個(gè)數(shù)據(jù)目標(biāo)分組相對(duì)應(yīng)的n個(gè)數(shù)據(jù)備份分組,其中,n為大于等于1的整數(shù)。
22、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,處理單元具體可以用于:
23、若通過(guò)數(shù)據(jù)安全寫(xiě)入接口并發(fā)接收到k個(gè)不同進(jìn)程類(lèi)型的接口調(diào)用請(qǐng)求,則將k個(gè)不同進(jìn)程類(lèi)型的對(duì)應(yīng)的k個(gè)待寫(xiě)入數(shù)據(jù),從目標(biāo)應(yīng)用程序存儲(chǔ)空間復(fù)制到k個(gè)數(shù)據(jù)備份分組,其中,k為小于等于n的整數(shù);
24、獲取單元具體可以用于:
25、在刷新區(qū)域列表中為k個(gè)數(shù)據(jù)備份分組設(shè)置對(duì)應(yīng)的k個(gè)待寫(xiě)入標(biāo)記;
26、處理單元具體可以用于:
27、將k個(gè)不同進(jìn)程類(lèi)型的對(duì)應(yīng)的k個(gè)待寫(xiě)入數(shù)據(jù),從k個(gè)數(shù)據(jù)備份分組復(fù)制到k個(gè)數(shù)據(jù)目標(biāo)區(qū)域地址以及長(zhǎng)度對(duì)應(yīng)的k個(gè)數(shù)據(jù)目標(biāo)分組;
28、清除刷新區(qū)域列表中k個(gè)數(shù)據(jù)目標(biāo)分組對(duì)應(yīng)的k個(gè)待寫(xiě)入標(biāo)記。
29、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,處理單元具體可以用于:
30、若通過(guò)數(shù)據(jù)安全寫(xiě)入接口并發(fā)接收到k個(gè)相同進(jìn)程類(lèi)型的接口調(diào)用請(qǐng)求,則依次執(zhí)行k次數(shù)據(jù)安全寫(xiě)入操作,每次從目標(biāo)應(yīng)用程序存儲(chǔ)空間復(fù)制一個(gè)相同進(jìn)程類(lèi)型對(duì)應(yīng)的一個(gè)待寫(xiě)入數(shù)據(jù)到同一個(gè)數(shù)據(jù)備份分組,其中,k為小于等于n的整數(shù);
31、獲取單元具體可以用于:
32、依次在刷新區(qū)域列表中為數(shù)據(jù)備份分組設(shè)置待寫(xiě)入標(biāo)記;
33、處理單元具體可以用于:
34、依次將一個(gè)相同進(jìn)程類(lèi)型對(duì)應(yīng)的一個(gè)待寫(xiě)入數(shù)據(jù),從數(shù)據(jù)備份分組復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域地址以及長(zhǎng)度對(duì)應(yīng)的數(shù)據(jù)目標(biāo)分組,直至將k個(gè)相同進(jìn)程類(lèi)型的k個(gè)待寫(xiě)入數(shù)據(jù)復(fù)制到數(shù)據(jù)目標(biāo)分組;
35、依次清除刷新區(qū)域列表中數(shù)據(jù)目標(biāo)分組對(duì)應(yīng)的k個(gè)待寫(xiě)入標(biāo)記。
36、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,獲取單元具體可以用于:
37、在刷新區(qū)域列表中為k個(gè)數(shù)據(jù)備份分組分配k個(gè)待寫(xiě)入標(biāo)記;
38、將k個(gè)待寫(xiě)入標(biāo)記分別設(shè)置為真;
39、處理單元具體可以用于:
40、將刷新區(qū)域列表中k個(gè)數(shù)據(jù)目標(biāo)分組對(duì)應(yīng)的k個(gè)待寫(xiě)入標(biāo)記設(shè)置為假。
41、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,處理單元具體可以用于:
42、若檢測(cè)到當(dāng)前待寫(xiě)入標(biāo)記為真,則將當(dāng)前待寫(xiě)入標(biāo)記對(duì)應(yīng)的數(shù)據(jù)作為未成功寫(xiě)入數(shù)據(jù);
43、將未成功寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份分組復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域地址以及長(zhǎng)度對(duì)應(yīng)的數(shù)據(jù)目標(biāo)分組中;
44、將刷新區(qū)域列表中的當(dāng)前待寫(xiě)入標(biāo)記設(shè)置為假。
45、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
46、處理單元,還用于通過(guò)數(shù)據(jù)安全寫(xiě)入接口,將m個(gè)不同進(jìn)程類(lèi)型的m個(gè)測(cè)試寫(xiě)入數(shù)據(jù),依次從m個(gè)數(shù)據(jù)備份分組中復(fù)制到m個(gè)數(shù)據(jù)目標(biāo)分組中,其中,m為小于等于n的整數(shù);
47、處理單元,還用于通過(guò)數(shù)據(jù)讀取接口,依次從m個(gè)數(shù)據(jù)目標(biāo)分組讀取m個(gè)測(cè)試讀取數(shù)據(jù);
48、確定單元,用于若每次讀取到的測(cè)試讀取數(shù)據(jù)與對(duì)應(yīng)的測(cè)試寫(xiě)入數(shù)據(jù)均一致,則確定數(shù)據(jù)存取測(cè)試正常。
49、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
50、處理單元,還用于記錄每次寫(xiě)入測(cè)試寫(xiě)入數(shù)據(jù)消耗的測(cè)試寫(xiě)入時(shí)間,并基于m個(gè)測(cè)試寫(xiě)入時(shí)間計(jì)算寫(xiě)入測(cè)試寫(xiě)入數(shù)據(jù)的平均測(cè)試寫(xiě)入時(shí)間。
51、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
52、處理單元,還用于記錄每次讀取測(cè)試讀取數(shù)據(jù)消耗的測(cè)試讀取時(shí)間,并基于m個(gè)測(cè)試讀取時(shí)間計(jì)算讀取測(cè)試讀取數(shù)據(jù)的平均測(cè)試讀取時(shí)間;
53、確定單元,還用于若平均測(cè)試寫(xiě)入時(shí)間小于寫(xiě)入時(shí)間閾值,以及平均測(cè)試讀取時(shí)間小于讀取時(shí)間閾值,則確定數(shù)據(jù)存取測(cè)試時(shí)延滿(mǎn)足數(shù)據(jù)讀寫(xiě)時(shí)延閾值。
54、在一種可能的設(shè)計(jì)中,本技術(shù)實(shí)施例另一方面的一種實(shí)現(xiàn)方式中,
55、處理單元,還用于向數(shù)據(jù)備份區(qū)域注入程序異常退出的故障數(shù)據(jù);
56、獲取單元,還用于通過(guò)數(shù)據(jù)恢復(fù)接口,獲取故障數(shù)據(jù)對(duì)應(yīng)的p個(gè)未寫(xiě)入測(cè)試數(shù)據(jù),其中,p為小于等于m的整數(shù);
57、處理單元,還用于將p個(gè)未寫(xiě)入測(cè)試數(shù)據(jù),依次從p個(gè)數(shù)據(jù)備份分組中復(fù)制到p個(gè)數(shù)據(jù)目標(biāo)分組中;
58、處理單元,還用于通過(guò)數(shù)據(jù)讀取接口,依次從p個(gè)數(shù)據(jù)目標(biāo)分組讀取p個(gè)測(cè)試讀取數(shù)據(jù);
59、確定單元,還用于若每次讀取到的測(cè)試讀取數(shù)據(jù)與對(duì)應(yīng)的未寫(xiě)入測(cè)試數(shù)據(jù)均一致,則確定數(shù)據(jù)恢復(fù)測(cè)試正常。
60、本技術(shù)另一方面提供了一種計(jì)算機(jī)設(shè)備,包括:存儲(chǔ)器、處理器以及總線(xiàn)系統(tǒng);
61、其中,存儲(chǔ)器用于存儲(chǔ)程序;
62、處理器用于執(zhí)行存儲(chǔ)器中的程序時(shí)實(shí)現(xiàn)如上述各方面的方法;
63、總線(xiàn)系統(tǒng)用于連接存儲(chǔ)器以及處理器,以使存儲(chǔ)器以及處理器進(jìn)行通信。
64、本技術(shù)的另一方面提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中存儲(chǔ)有指令,當(dāng)其在計(jì)算機(jī)上運(yùn)行時(shí),使得計(jì)算機(jī)執(zhí)行上述各方面的方法。
65、從以上技術(shù)方案可以看出,本技術(shù)實(shí)施例具有以下有益效果:
66、通過(guò)數(shù)據(jù)操作接口,將待寫(xiě)入數(shù)據(jù)從應(yīng)用程序內(nèi)存復(fù)制到數(shù)據(jù)備份區(qū)域,再在刷新區(qū)域列表中為數(shù)據(jù)備份區(qū)域設(shè)置對(duì)應(yīng)的待寫(xiě)入標(biāo)記,進(jìn)而將待寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域中,并清除刷新區(qū)域列表中的待寫(xiě)入標(biāo)記,然后,當(dāng)檢測(cè)到數(shù)據(jù)寫(xiě)入操作異常退出時(shí),檢測(cè)刷新區(qū)域列表中數(shù)據(jù)寫(xiě)入操作異常退出時(shí)對(duì)應(yīng)的當(dāng)前待寫(xiě)入標(biāo)記,如果檢測(cè)到存在當(dāng)前待寫(xiě)入標(biāo)記,則將當(dāng)前待寫(xiě)入標(biāo)記對(duì)應(yīng)的待寫(xiě)入數(shù)據(jù)重新從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域,并清除刷新區(qū)域列表中的當(dāng)前待寫(xiě)入標(biāo)記。通過(guò)上述方式,能夠采用數(shù)據(jù)安全寫(xiě)入機(jī)制將待寫(xiě)入數(shù)據(jù)從應(yīng)用程序內(nèi)存復(fù)制到數(shù)據(jù)備份區(qū)域,并將待寫(xiě)入數(shù)據(jù)從數(shù)據(jù)備份區(qū)域復(fù)制到數(shù)據(jù)目標(biāo)區(qū)域,來(lái)實(shí)現(xiàn)數(shù)據(jù)的完整寫(xiě)入,然后,再結(jié)合恢復(fù)機(jī)制進(jìn)一步保證程序異常發(fā)生后,能夠?qū)⒋嬖诋?dāng)前待寫(xiě)入標(biāo)記所對(duì)應(yīng)的待寫(xiě)入數(shù)據(jù)的重新寫(xiě)入數(shù)據(jù)目標(biāo)區(qū)域的完整性,不僅能夠滿(mǎn)足云上環(huán)境數(shù)據(jù)操作時(shí)的高可靠性需求,即維護(hù)數(shù)據(jù)寫(xiě)入的完整性,而且能夠通過(guò)采用內(nèi)存存取數(shù)據(jù)來(lái)提高數(shù)據(jù)存取速度,從而降低智能網(wǎng)卡數(shù)據(jù)讀寫(xiě)的時(shí)延。