意圖,其具體可以包括寫指針和讀指針,其中,寫指針可用于將任務(wù)1、任務(wù)2、任務(wù)3…等寫入緩沖區(qū),讀指針可用于從所述緩沖區(qū)讀取任務(wù),在實際應(yīng)用中,可以通過所述讀指針來實現(xiàn)任務(wù)的讀取,并利用單線程執(zhí)行所讀取的任務(wù)。需要說明的是,也可由單線程來執(zhí)行任務(wù)的讀取操作,本發(fā)明實施例對任務(wù)的讀取操作的執(zhí)行主體不加以限制。
[0059]以上述向服務(wù)器的磁盤寫日志的操作為例,本發(fā)明實施例可以從各應(yīng)用程序?qū)?yīng)的應(yīng)用模塊、針對網(wǎng)站設(shè)置的各應(yīng)用模塊等應(yīng)用模塊接收相應(yīng)的寫日志任務(wù),將所述任務(wù)寫入緩沖區(qū),從所述緩沖區(qū)中讀取所述任務(wù),并利用單線程執(zhí)行所述任務(wù);相對于現(xiàn)有方案由多個應(yīng)用模塊占用多個線程資源來執(zhí)行所述寫日志任務(wù),本發(fā)明實施例利用單線程執(zhí)行所述寫日志任務(wù),能夠有效節(jié)省線程資源等系統(tǒng)資源,并且,利用單線程執(zhí)行所述任務(wù)能夠避免多線程執(zhí)行任務(wù)過程中出現(xiàn)的磁盤混亂等問題。
[0060]綜上,本發(fā)明實施例將來自多個應(yīng)用模塊的任務(wù)任務(wù)寫入緩沖區(qū),從所述緩沖區(qū)中讀取所述任務(wù),并利用單線程執(zhí)行所述任務(wù);相對于現(xiàn)有方案由多個應(yīng)用模塊占用多個線程資源來執(zhí)行所述任務(wù),本發(fā)明實施例利用單線程執(zhí)行所述任務(wù),能夠有效節(jié)省線程資源等系統(tǒng)資源。并且,利用單線程執(zhí)行所述任務(wù)能夠避免多線程共同操作一個對象而導(dǎo)致的對象混亂等問題。
[0061 ] 在本發(fā)明的一種可選實施例中,可以通過控制將所述任務(wù)寫入緩沖區(qū)的順序來控制所述任務(wù)的執(zhí)行順序,相應(yīng)地,所述將所述任務(wù)寫入緩沖區(qū)的步驟,具體可以包括:
[0062]按照所述任務(wù)的接收順序,將所述任務(wù)寫入緩沖區(qū);和/或
[0063]按照所述任務(wù)的優(yōu)先級,將所述任務(wù)寫入緩沖區(qū);和/或
[0064]按照所述任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級,將所述任務(wù)寫入緩沖區(qū);和/或
[0065]按照所述任務(wù)的屬性信息,將所述任務(wù)寫入緩沖區(qū)。
[0066]其中,任務(wù)的接收順序也即從對應(yīng)應(yīng)用模塊接收任務(wù)的順序,最新接收的任務(wù)則最先被寫入緩沖區(qū);任務(wù)的優(yōu)先級可用于表示任務(wù)的緊急程度、重要程度等信息,優(yōu)先級越高則對應(yīng)的任務(wù)越優(yōu)先被寫入緩沖區(qū);通常,任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級越高,則任務(wù)越優(yōu)先寫入緩沖區(qū);所述任務(wù)的屬性信息具體可以包括:任務(wù)復(fù)雜程度、執(zhí)行時間等信息,為了避免執(zhí)行時間較長的任務(wù)影響其它執(zhí)行時間較短任務(wù)的執(zhí)行,在本發(fā)明的一種應(yīng)用示例中,可以優(yōu)先寫入執(zhí)行時間較短的任務(wù),而延遲執(zhí)行時間較長的任務(wù)。
[0067]以上對將所述任務(wù)寫入緩沖區(qū)的幾種方案進行了介紹,可以理解,本領(lǐng)域技術(shù)人員可以根據(jù)實際需求采用上述寫入方案中的任一,或者,采用上述幾種寫入方案的組合,例如,對任務(wù)的接收順序、任務(wù)的優(yōu)先級、任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級和任務(wù)的屬性信息等任務(wù)信息進行加權(quán)平均,并依據(jù)加權(quán)平均結(jié)果將所述任務(wù)寫入緩沖區(qū)等等,實際上,本領(lǐng)域技術(shù)人員通過控制將所述任務(wù)寫入緩沖區(qū)的順序來控制所述任務(wù)的執(zhí)行順序的寫入方案均是可行的,本發(fā)明實施例對具體的將所述任務(wù)寫入緩沖區(qū)的方案不加以限制。
[0068]在本發(fā)明的另一種可選實施例中,可以通過控制從所述緩沖區(qū)讀取所述任務(wù)的順序來控制所述任務(wù)的執(zhí)行順序,相應(yīng)地,所述從所述緩沖區(qū)中讀取所述任務(wù)的步驟,具體可以包括:
[0069]按照所述任務(wù)的寫入順序,從所述緩沖區(qū)中讀取所述任務(wù);和/或
[0070]按照所述任務(wù)的優(yōu)先級,從所述緩沖區(qū)中讀取所述任務(wù);和/或
[0071]按照所述任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級,從所述緩沖區(qū)中讀取所述任務(wù);和/或
[0072]按照所述任務(wù)的屬性信息,從所述緩沖區(qū)中讀取所述任務(wù)。
[0073]可以理解,本領(lǐng)域技術(shù)人員可以根據(jù)實際需求采用上述讀取方案中的任一,或者,采用上述幾種讀取方案的組合,例如,可以將任務(wù)的寫入順序、任務(wù)的優(yōu)先級、任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級和任務(wù)的屬性信息等任務(wù)信息寫入緩沖區(qū),并首先從緩沖區(qū)中讀取這些任務(wù)信息,對任務(wù)的寫入順序、任務(wù)的優(yōu)先級、任務(wù)對應(yīng)應(yīng)用模塊的優(yōu)先級和任務(wù)的屬性信息等信息進行加權(quán)平均,并依據(jù)加權(quán)平均結(jié)果從所述緩沖區(qū)中讀取等等,實際上,本領(lǐng)域技術(shù)人員通過控制從所述緩沖區(qū)讀取所述任務(wù)的順序來控制所述任務(wù)的執(zhí)行順序的讀取方案均是可行的,本發(fā)明實施例對具體的從所述緩沖區(qū)中讀取所述任務(wù)的方案不加以限制。
[0074]在具體實現(xiàn)中,所述緩沖區(qū)具體可以包括:內(nèi)存緩沖區(qū)和/或持久緩沖區(qū)。其中,所述內(nèi)存緩沖區(qū)具有讀寫速度快的優(yōu)點;所述持久緩沖區(qū)能夠?qū)?shù)據(jù)持久化在文件中,從而能夠保證重啟同步操作后數(shù)據(jù)不丟失。在具體實現(xiàn)中,所述內(nèi)存緩沖區(qū)可以用隊列、鏈表等數(shù)據(jù)結(jié)構(gòu)實現(xiàn),本發(fā)明實施例對所述內(nèi)存緩沖區(qū)的具體數(shù)據(jù)結(jié)構(gòu)不加以限制。
[0075]在本發(fā)明的一種可選實施例中,所述將所述任務(wù)寫入緩沖區(qū)的步驟,具體可以包括:將所述任務(wù)循環(huán)寫入所述緩沖區(qū)。本可選實施例可以在寫入速度較快的情況下循環(huán)利用緩沖區(qū),從而實現(xiàn)節(jié)省緩存資源的效果。在具體實現(xiàn)中,為了避免寫入速度超過讀取速度引起的數(shù)據(jù)丟失問題,在將所述多個任務(wù)循環(huán)寫入所述緩沖區(qū)之前,可以對寫指針和讀指針進行比較,如果寫指針所指向的位置超出了讀指針所指向的位置,則將所述任務(wù)寫入其它緩沖區(qū),若寫指針所指向的位置未超出讀指針所指向的位置,則將所述任務(wù)循環(huán)寫入所述緩沖區(qū)。
[0076]本發(fā)明的另一種可選實施例中,所述緩沖區(qū)可以為持久緩沖區(qū),所述持久緩沖區(qū)可以進一步包括單位塊;
[0077]則所述方法還可以包括:
[0078]在按照所述任務(wù)的接收順序,將所述任務(wù)寫入所述持久緩沖區(qū)中單位塊后,針對所述單位塊中內(nèi)容生成相應(yīng)的第一校驗參數(shù);
[0079]在從所述單位塊中讀取所述任務(wù)后,針對所讀取的任務(wù)生成相應(yīng)的第二校驗參數(shù);
[0080]判斷所述第二校驗參數(shù)與所述第一校驗參數(shù)是否一致;
[0081]在所述第二校驗參數(shù)與所述第一校驗參數(shù)一致時,執(zhí)行所讀取的任務(wù);
[0082]在所述第二校驗參數(shù)與所述第一校驗參數(shù)不一致時,丟棄所讀取的任務(wù)。
[0083]當數(shù)據(jù)存儲在SSD (固態(tài)硬盤,Solid State Drives)等持久緩沖區(qū)中時,由于SSD中閃存塊(block)的壽命是有限的,故SSD中難免會出現(xiàn)一些壞的閃存塊,一旦閃存塊成為壞塊,則該閃存塊中數(shù)據(jù)就將不可用。
[0084]為了避免壞塊中數(shù)據(jù)不可用導(dǎo)致整個閃存塊數(shù)據(jù)的不可用,本可選實施例在將所述多個任務(wù)寫入所述持久緩沖區(qū)中單位塊后,可以針對所述單位塊中內(nèi)容生成相應(yīng)的第一校驗參數(shù),這樣,在從所述單位塊中讀取所述子任務(wù)及其對應(yīng)任務(wù)信息后,針對所讀取的任務(wù)生成相應(yīng)的第二校驗參數(shù),通過判斷所述第一校驗參數(shù)和第二校驗參數(shù)是否一致來確定所述單位塊是否損壞,在確定所述單位塊損壞后,只是所述單位塊的數(shù)據(jù)不可用,其它數(shù)據(jù)(如與所述單位塊在同一閃存塊的其它單位塊的數(shù)據(jù))還可以正常使用,因此能夠提高存儲數(shù)據(jù)的可靠性。
[0085]在具體實現(xiàn)中,可以米用MD5 (信息摘要算法5,Message-Digest Algorithm 5)、DSA (數(shù)字簽名算法,Digital Signature Algorithm)等認證算法生成所述第一校驗參數(shù)和第二校驗參數(shù),本發(fā)明實施例對生成所述第一校驗參數(shù)和第二校驗參數(shù)的具體方法不加以限制。
[0086]另外,本領(lǐng)域技術(shù)人員可以根據(jù)實際情況確定所述單位塊的大小,所述單位塊的大小可以小于閃存塊的大小,例如,SLC(單層單元,Single Layer Cell)中閃存塊的大小為128kb,那么,所述單位塊的大小可以為32kb等等,本發(fā)明實施例對所述單位塊的大小不加以限制。
[0087]在本發(fā)明的再一種可選實施例中,所述任務(wù)的信息具體可以包括:任務(wù)數(shù)據(jù)幀,其中,所述任務(wù)數(shù)據(jù)幀可以為子包對應(yīng)的封裝幀,所述子包為依據(jù)數(shù)據(jù)包分解得到,所述任務(wù)數(shù)據(jù)幀具體可以包括:子包在數(shù)據(jù)包中的編號、子包數(shù)據(jù)和數(shù)據(jù)包結(jié)束