本發(fā)明屬于計算機領(lǐng)域,尤其涉及一種垃圾回收方法及裝置。
背景技術(shù):
現(xiàn)有的甲骨文互聯(lián)網(wǎng)目錄垃圾回收系統(tǒng)(oracleinternetdirectorygarbagecollectionframework)中支持對輕型目錄訪問協(xié)議(lightweightdirectoryaccessprotocol,簡稱ldap)類型的垃圾進行回收。而阿豆比adobeaem的垃圾回收系統(tǒng)針對數(shù)據(jù)包、臨時文件和工作流負責(zé)這些類型的垃圾進行回收。再有worldserver的垃圾回收系統(tǒng)主要對數(shù)據(jù)庫中產(chǎn)生的垃圾進行回收。
由上可知,現(xiàn)有的垃圾回收系統(tǒng)基本上都是針對具有相同領(lǐng)域特征的垃圾類型進行回收,對于多樣性的異構(gòu)垃圾回收場景不能通用。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種垃圾回收方法及裝置,用于解決現(xiàn)有的垃圾回收系統(tǒng)均是針對具有相同領(lǐng)域特征的垃圾類型進行回收,并不能用于對多樣性的異構(gòu)垃圾的回收,通用性較差。
為了實現(xiàn)上述目的,本發(fā)明提供了一種垃圾回收方法,包括:
獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型;其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件;
確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件;
利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
為了實現(xiàn)上述目的,本發(fā)明提供了一種垃圾回收裝置,包括:
獲取模塊,用于獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型;其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件;
確定模塊,用于確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件;
回收模塊,用于利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
為了實現(xiàn)上述目的,本發(fā)明提供了一種垃圾回收裝置,包括:
掃描儀,用于獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型;其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件;
調(diào)度器,用于確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件;
執(zhí)行器,用于利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
本發(fā)明提供的垃圾回收方法及裝置,通過獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型,確定與每個目標業(yè)務(wù)類型對應(yīng)的目標回收組件,利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。本發(fā)明中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,為不同的業(yè)務(wù)類型對應(yīng)不同的回收組件,基于這些組件進行垃圾回收,可以靈活地對業(yè)務(wù)類型進行擴展,可以實現(xiàn)對異構(gòu)的業(yè)務(wù)類型的回收,通用性較高。
附圖說明
圖1為本發(fā)明實施例一的垃圾回收方法的流程示意圖;
圖2為本發(fā)明實施例二的垃圾回收方法的流程示意圖;
圖3為本發(fā)明實施例二的垃圾回收方法的應(yīng)用示意圖;
圖4為本發(fā)明實施例三的垃圾回收裝置的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實施例四的垃圾回收裝置的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實施例五的垃圾回收裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明實施例提供的垃圾回收方法及裝置進行詳細描述。
實施例一
如圖1所示,其為本發(fā)明實施例一的垃圾回收方法的流程示意圖。 該垃圾回收方法包括以下步驟:
s101、獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。
其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件。
在獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型之前,為不同的業(yè)務(wù)類型構(gòu)建與其對應(yīng)的回收組件。具體地,為每一個業(yè)務(wù)類型構(gòu)建一個對應(yīng)的回收組件,但是實際應(yīng)用中,有些業(yè)務(wù)類型的垃圾回收邏輯是相同,為了節(jié)省資源,具有相同垃圾回收邏輯的業(yè)務(wù)類型可以復(fù)用一個回收組件,在這種情況下,為不同業(yè)務(wù)類型構(gòu)建對應(yīng)的回收組件的過程如下:
具體地,為具有相同的垃圾回收邏輯的所有業(yè)務(wù)類型構(gòu)建一個與其對應(yīng)的回收組件;其中具有相同的垃圾回收邏輯所有業(yè)務(wù)類型復(fù)用所述與其對應(yīng)的回收組件。例如,業(yè)務(wù)類型a和業(yè)務(wù)類型b具有相同的垃圾回收邏輯,為業(yè)務(wù)類型a和業(yè)務(wù)類型b構(gòu)建一個與其對應(yīng)的回收組件1。業(yè)務(wù)類型a和業(yè)務(wù)類型b則復(fù)用該回收組件1。而業(yè)務(wù)類型d和業(yè)務(wù)類型g具有相同的垃圾回收邏輯,則為業(yè)務(wù)類型d和業(yè)務(wù)類型g構(gòu)建一個回收組件5,業(yè)務(wù)類型d和業(yè)務(wù)類型g復(fù)用該回收組件5。
進一步地,由于除了具有相同的垃圾回收邏輯的所有業(yè)務(wù)類型之外的其他業(yè)務(wù)類型之間的垃圾回收邏輯均是不同的,則為每個其他業(yè)務(wù)類型分別構(gòu)建與其對應(yīng)的回收組件。例如,業(yè)務(wù)類型c、業(yè)務(wù)類型e、業(yè)務(wù)類型f稱為其他業(yè)務(wù)類型,業(yè)務(wù)類型c、業(yè)務(wù)類型e以及業(yè)務(wù)類型f三者的垃圾回收邏輯均不同,則分別構(gòu)建于業(yè)務(wù)類型c、業(yè)務(wù)類型e以及業(yè)務(wù)類型f對應(yīng)的回收組件2、回收組件3以及回收組件4。
為了滿足能夠動態(tài)地對垃圾類型可擴展的需求,本實施例中,通過回收組件對垃圾回收邏輯進行封裝,回收組件具有可熱插拔的功能,基于回收組件就可以實現(xiàn)對垃圾類型進行靈活地擴展的目的。
進一步地,為了實現(xiàn)對大量異構(gòu)的垃圾類型進行回收,本實施例中,針對不同的業(yè)務(wù)類型構(gòu)建不同的回收組件,一般情況下,一個業(yè)務(wù)類型對應(yīng)至少一個回收組件。本實施例中提供的垃圾回收方法中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,提高了該方法的通用性,能夠適用于大數(shù)據(jù)處理環(huán)境。
本實施例中,對所有的業(yè)務(wù)項目進行掃描,將掃描結(jié)果生成業(yè)務(wù)項目列表。其中,業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。在掃描獲取到業(yè)務(wù)項目列表后,可以將業(yè)務(wù)項目列表進行存儲。本實施例中,可以定時對所有的業(yè)務(wù)項目進行掃描,從而能自動地觸發(fā)垃圾回收流程,而且用戶可以根據(jù)業(yè)務(wù)場景設(shè)定回收周期。例如,用戶可以通過前端界面配置定時的時間間隔,可以以每小時/每天/每周/每月等作為時間間隔進行定時,在啟動掃描后,則相應(yīng)地啟動垃圾回收流程??蛇x地,可以通過用戶手動操作,在前端界面上進行操作,啟動掃描以完成垃圾回收流程。
s102、確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件。
在獲取到所有業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型后,由于每個業(yè)務(wù)類型對應(yīng)至少一個回收組件,則根據(jù)所包括的目標業(yè)務(wù)類型,確定與目標業(yè)務(wù)類型對應(yīng)的目標回收組件。
s103、利用各目標回收組件對所對應(yīng)目標業(yè)務(wù)類型的垃圾進行回收。
在獲取到所有的目標回收組件后,利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型產(chǎn)生的垃圾進行回收。具體地,將每個業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型作為一個任務(wù)分配到對應(yīng)的目標回收組件中,加載所有的目標回收組件,并為各目標回收組件分配所需的線程池,啟動所有的目標回收組件使用所分配的線程池執(zhí)行垃圾回收邏輯,各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。其中,可以為目標回收組件分配多個線程池,當線程池為多個時,目標回收組件可以并行地執(zhí)行垃圾回收邏輯對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
本實施例提供的垃圾回收方法,通過獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型,確定與目標業(yè)務(wù)類型對應(yīng)的目標回收組件,利用目標回收組件對目標業(yè)務(wù)類型的垃圾進行回收。本實施例中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,為不同的業(yè)務(wù)類型對應(yīng)不同的回收組件,基于這些組件進行垃圾回收,可以靈活地對業(yè)務(wù)類型進行擴展,可以實現(xiàn)對異構(gòu)的業(yè)務(wù)類型的回收,通用性較高。
實施例二
如圖2所示,其為本發(fā)明實施例二的垃圾回收方法的流程示意圖。該垃圾回收方法包括以下步驟:
s201、對所有的業(yè)務(wù)項目進行掃描。
本實施例中,對所有的業(yè)務(wù)項目進行掃描,將掃描結(jié)果生成業(yè)務(wù)項目列表。其中,業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。在掃描獲取到業(yè)務(wù)項目列表后,可以將業(yè)務(wù)項目列表進行存儲。本實施例中,可以定時對所有的業(yè)務(wù)項目進行掃描,例如,用戶可以通過前端界面配置定時的時間間隔,可以以每小時/每天/每周/每月等作為時間間隔進行定時,在啟動掃描后,則相應(yīng)地啟動垃圾回收流程??蛇x地,可以通過用戶手動操作,在前端界面上進行操作,啟動掃描以完成垃圾回收流程。
s202、將掃描結(jié)果生成業(yè)務(wù)項目列表。
其中,業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。
將對所有業(yè)務(wù)項目進行掃描后,經(jīng)過掃描后,能獲取到掃描結(jié)果,其中掃描結(jié)果為每個業(yè)務(wù)項目所包括的業(yè)務(wù)類型,然后將掃描結(jié)果生成業(yè)務(wù)項目列表,也就是說,生成的業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。其中,生成的業(yè)務(wù)項目列表中包括業(yè)務(wù)項目的標識、目標業(yè)務(wù)類型的標識,以及業(yè)務(wù)項目與所包括的目標業(yè)務(wù)類型之間的對應(yīng)關(guān)系。
s203、判斷業(yè)務(wù)項目列表中是否存在新的目標業(yè)務(wù)類型。
具體地,將當前掃描后生成的項目業(yè)務(wù)列表與上一次掃描后生成的業(yè)務(wù)項目列表進行比較,以判斷當前項目業(yè)務(wù)類別中是否存在新的目標業(yè)務(wù)類型,如果判斷結(jié)果為是,執(zhí)行步驟204;否則執(zhí)行步驟205。
s204、獲取與所述新的目標業(yè)務(wù)類型對應(yīng)的新的目標回收組件。
在獲取到新的目標業(yè)務(wù)類型后,將與該新的目標業(yè)務(wù)類型對應(yīng)的新的目標回收組件添加到用于管理回收組件的設(shè)備上。其中,新的目標回收組件在添加之前,需要管理人員根據(jù)該目標業(yè)務(wù)類型的垃圾回收邏輯進行構(gòu)建。
s205、根據(jù)業(yè)務(wù)項目列表中獲取每個業(yè)務(wù)項目已刪除的目標業(yè)務(wù)類 型。
具體地,將當前掃描生成的業(yè)務(wù)項目列表與上次掃描生成的業(yè)務(wù)項目列表進行比較,從而能夠確定出業(yè)務(wù)項目列中每個業(yè)務(wù)項目已刪除的目標業(yè)務(wù)類型。
s206、針對每個業(yè)務(wù)項目,判斷已刪除的目標業(yè)務(wù)類型對應(yīng)的目標回收組件是否被所述業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型所復(fù)用。
針對每一個業(yè)務(wù)項目,當確定出已刪除的目標業(yè)務(wù)類型后,需要判斷該已刪除的目標業(yè)務(wù)類型對應(yīng)的目標回收組件是否被業(yè)務(wù)項目列表中至少一個其他的目標目標業(yè)務(wù)類型所復(fù)用,此處將已刪除的目標業(yè)務(wù)類型對應(yīng)的目標回收組件稱為待刪除的目標回收組件。如果待刪除的目標回收組件未被其他的業(yè)務(wù)類型所復(fù)用,則表明可以將待刪除的目標回收組件進行刪除,執(zhí)行步驟207。
如果待刪除的目標回收組件被其他的目標業(yè)務(wù)類型所復(fù)用,則表明當前不能刪除該待刪除的目標回收組件,繼續(xù)維持該待刪除的目標回收組件,執(zhí)行步驟208。
s207、將已刪除的目標業(yè)務(wù)類型對應(yīng)的目標回收組件進行刪除。
將已刪除的目標業(yè)務(wù)類型對應(yīng)的目標回收組件后,繼續(xù)執(zhí)行步驟208。
s208、為業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型確定與其對應(yīng)的目標回收組件。
進一步地,還需要為業(yè)務(wù)項目列表中除該新的目標業(yè)務(wù)類型和已刪除的目標業(yè)務(wù)類型之外的其他的每個目標業(yè)務(wù)類型確定與其對應(yīng)的目標回收組件。關(guān)于為目標業(yè)務(wù)類型確定與其對應(yīng)的目標回收組件的相關(guān)內(nèi)容,可參見上述實施例中相關(guān)內(nèi)容的記載,此次不再贅述。
s209、利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
在為所有的目標業(yè)務(wù)類型確定了對應(yīng)的目標回收組件后,利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收,具體過程,可參見上述實施例中相關(guān)內(nèi)容的記載,此次不再贅述。
本實施例中,基于回收組件對垃圾進行回收,能適應(yīng)現(xiàn)有大數(shù)據(jù)開放處理平臺中對大量異構(gòu)類型垃圾回收的要求,基于回收組件具有的熱插拔功能,具有很強的動態(tài)擴展性,能夠?qū)Ξa(chǎn)生的新業(yè)務(wù)類型的垃圾有效支持,從而適用于大數(shù)據(jù)處理環(huán)境。
s210、在利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收的同時監(jiān)控垃圾回收進度,并將監(jiān)控到的垃圾回收進度作為一個檢查點。
s211、在垃圾回收的過程中出現(xiàn)斷點后,利用與斷點時間最近的所述檢查點進行斷點恢復(fù)。
本實施例中,為垃圾回收方法設(shè)置有快照功能,該快照功能定時觸發(fā)。在利用回收組件回收各業(yè)務(wù)類型的垃圾的過程中,需要對垃圾回收進度進行監(jiān)控,在觸發(fā)了快照功能后,就可以記錄當時時刻的垃圾回收進度,并將監(jiān)控到的垃圾回收進度記為一個檢查點,并將該檢查點存儲在磁盤中。當在垃圾回收的過程中,如果出現(xiàn)異常情況,導(dǎo)致垃圾回收的過程被中斷,可以根據(jù)最近的檢查點進行斷點恢復(fù)。
本實施例提供的垃圾回收方法可以由圖3所示的垃圾回收系統(tǒng)來完成。如圖3所示,該垃圾回收系統(tǒng)包括:前端、管理器(manager)和處理器(processor)。其中,該垃圾回收系統(tǒng)的前端可以為人機交互模塊,用于提供人機交互界面,用戶可以基于該界面對該垃圾回收系統(tǒng)進行設(shè)置。例如,開始、關(guān)閉或者定時等。manager中包括掃描模塊(scanner)、調(diào)度模塊(scheduler)和故障轉(zhuǎn)移模塊(failover)。processor中包括多個節(jié)點(worker),每個worker上設(shè)置回收組件。其中,scanner對所有的業(yè)務(wù)項目進行掃描,能夠得到業(yè)務(wù)項目列表。scheduler負責(zé)任務(wù)調(diào)度,可以獲取scanner掃描的結(jié)果即業(yè)務(wù)項目列表,并將各業(yè)務(wù)項目中包括的業(yè)務(wù)類型作為任務(wù)分發(fā)給處理器中的對應(yīng)的worker,scheduler還可以監(jiān)控垃圾回收系統(tǒng)的運行狀態(tài),并能夠獲取垃圾回收的結(jié)果。
processor中的worker在被分配到與回收組件相應(yīng)的業(yè)務(wù)類型后,worker可以執(zhí)行設(shè)置的回收組件的具體回收邏輯。worker可以為回收組件分配多個線程池,當線程池為多個時,可以并行地執(zhí)行回收組件的回 收邏輯,提高垃圾回收效率。
在對業(yè)務(wù)項目的垃圾回收的過程中,manager中故障轉(zhuǎn)移模塊會對垃圾回收進度進行監(jiān)控,每隔一段時間將監(jiān)控到的垃圾回收進度記為一個檢查點(checkpoint),通過該檢查點進行斷點恢復(fù)。
為了更好地理解本實施例提供的垃圾回收方法,舉例進行說明:
業(yè)務(wù)項目包括:淘寶、阿里巴巴、高德和支付寶等。
業(yè)務(wù)類型包括:實時查詢、機器學(xué)習(xí)、流式計算、在線監(jiān)控、離線計算等。
一個業(yè)務(wù)類型對應(yīng)一個回收組件或者多個回收組件,各回收組件放置在垃圾回收系統(tǒng)中處理器的worker上。例如,實時查詢對應(yīng)一個回收組件,記為回收組件1,將該回收組件1設(shè)置在worker1上。機器學(xué)習(xí)對應(yīng)2個回收組件,分別記為回收組件2和回收組件3,將回收組件2和回收組件3分別設(shè)置在worker2和worker3上。流式計算對應(yīng)一個回收組件,記為回收組件4,將回收組件4設(shè)置在worker4上。在線監(jiān)控對應(yīng)一個回收組件,記為回收組件5,將回收組件4設(shè)置在worker5上以及離線計算對應(yīng)三個回收組件,記為回收組件6、回收組件7和回收組件8,將回收組件6、回收組件7和回收組件8分別設(shè)置在worker6、worker7和worker8上。一個業(yè)務(wù)項目中包括多個目標業(yè)務(wù)類型,例如,高德業(yè)務(wù)項目包括實時查詢和流式計算等目標業(yè)務(wù)類型。淘寶業(yè)務(wù)項目包括實時查詢、流式計算和在線監(jiān)控等目標業(yè)務(wù)類型。阿里巴巴業(yè)務(wù)項目包括業(yè)務(wù)類型實時查詢、機器學(xué)習(xí)以及流失計算等目標業(yè)務(wù)類型。支付寶業(yè)務(wù)項目包括:實時查詢、機器學(xué)習(xí)以及在線監(jiān)控等目標業(yè)務(wù)類型。
當垃圾回收系統(tǒng)中的scanner對所有的業(yè)務(wù)項目進行掃描,得到每個業(yè)務(wù)項目包括的目標業(yè)務(wù)類型,將所有的業(yè)務(wù)項目掃描結(jié)果生成一個業(yè)務(wù)項目列表,scheduler根據(jù)業(yè)務(wù)項目列表獲取與各業(yè)務(wù)項目相關(guān)的目標回收組件,然后將各業(yè)務(wù)項目中的目標業(yè)務(wù)類型作為任務(wù)分配到對應(yīng)的worker上,worker基于目標回收組件的垃圾回收路基對對應(yīng)的業(yè)務(wù)類型進行垃圾回收。
例如,高德業(yè)務(wù)項目包括實時查詢和流式計算等目標業(yè)務(wù)類型,為 了對該業(yè)務(wù)項目的垃圾進行回收,需要調(diào)用與其對應(yīng)的目標回收組件,其中目標回收組件包括:回收組件1和回收組件4。基于回收組件1和回收組件4對該業(yè)務(wù)項目的垃圾進行回收。其中,回收組件1用于回收實時查詢的垃圾,而回收組件4回收流式計算的垃圾。該示例中,worker可以為目標回收組件分配多個線程池,通過多個線程池并行地執(zhí)行目標回收組件,用于提高垃圾回收效率。
淘寶業(yè)務(wù)項目包括實時查詢、流式計算和在線監(jiān)控等目標業(yè)務(wù)類型,為了對該業(yè)務(wù)項目的垃圾進行回收,需要的目標回收組件包括:回收組件1、回收組件4和回收組件5。然后基于回收組件1、回收組件4和回收組件5對淘寶業(yè)務(wù)項目的垃圾進行回收。具體過程參見高德業(yè)務(wù)項目的處理過程,此處不再贅述。
當所有的業(yè)務(wù)項目中不再包括實時查詢目標業(yè)務(wù)類型時,scheduler可以指示worker1將對應(yīng)的回收組件1進行刪除。當僅有一些業(yè)務(wù)項目不再包括實時查詢目標業(yè)務(wù)類型時,該實時查詢目標業(yè)務(wù)類型對應(yīng)的回收組件1不能被刪除。例如,當阿里巴巴業(yè)務(wù)項目不再包括實時查詢目標業(yè)務(wù)類型,而淘寶仍然包括該實時查詢目標業(yè)務(wù)類型,則該目標業(yè)務(wù)類型對應(yīng)的回收組件1不能被刪除。
當增加了新的目標業(yè)務(wù)類型時,需要添加該新的目標業(yè)務(wù)類型相應(yīng)的目標回收組件。例如增加新的目標業(yè)務(wù)類型為離線計算時,相應(yīng)地增加該離線計算目標業(yè)務(wù)的回收組件6,將該回收組件6放置到對應(yīng)點worker上。
新增加的目標業(yè)務(wù)類型被用于淘寶業(yè)務(wù)項目上時,當掃描該淘寶業(yè)務(wù)項目時,就可以得到該淘寶業(yè)務(wù)項目包括實時查詢、流式計算、在線監(jiān)控和離線計算,相應(yīng)地目標回收組件:回收組件1、回收組件4、回收組件5和回收組件6。
在對業(yè)務(wù)項目的垃圾回收的過程中,failover會對垃圾回收進度進行監(jiān)控,每隔一段時間將監(jiān)控到的垃圾回收進度記為一個檢查點,通過該檢查點進行斷點恢復(fù)。例如,當在垃圾回收的過程中出現(xiàn)異常情況,導(dǎo)致垃圾回收過程被中斷,重新運行后,可以從檢查點中獲取到被中斷時 刻的垃圾回收進度,從該進度下開始繼續(xù)回收垃圾,避免重復(fù)之前的操作。
實施例三
如圖4所示,其為本發(fā)明實施例三的垃圾回收裝置的結(jié)構(gòu)示意圖。該垃圾回收裝置包括:構(gòu)建模塊10、獲取模塊11、確定模塊12和回收模塊13。
其中,構(gòu)建模10,用于在所述獲取模塊獲取所有的業(yè)務(wù)項目所包括的業(yè)務(wù)類型之前,為不同的業(yè)務(wù)類型構(gòu)建對應(yīng)的回收組件,其中,一個業(yè)務(wù)類型至少對應(yīng)一個回收組件。
在獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型之前,為不同的業(yè)務(wù)類型構(gòu)建與其對應(yīng)的回收組件。具體地,為每一個業(yè)務(wù)類型構(gòu)建一個對應(yīng)的回收組件,但是實際應(yīng)用中,有些業(yè)務(wù)類型的垃圾回收邏輯是相同,為了節(jié)省資源,具有相同垃圾回收邏輯的業(yè)務(wù)類型可以復(fù)用一個回收組件,構(gòu)建模10為不同業(yè)務(wù)類型構(gòu)建對應(yīng)的回收組件的過程,可參見上述實施例中相關(guān)內(nèi)容的記載,此處不再贅述。
獲取模塊11,用于獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型;其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件。
為了滿足能夠動態(tài)地對垃圾類型可擴展的需求,本實施例中,通過回收組件對垃圾回收邏輯進行封裝,回收組件具有可熱插拔的功能,基于回收組件就可以實現(xiàn)對垃圾類型進行靈活地擴展的目的。
進一步地,為了實現(xiàn)對大量異構(gòu)的垃圾類型進行回收,本實施例中,針對不同的業(yè)務(wù)類型構(gòu)建不同的回收組件,一般情況下,一個業(yè)務(wù)類型對應(yīng)至少一個回收組件。本實施例中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,提高通用性,能夠適用于大數(shù)據(jù)處理環(huán)境。
本實施例中,獲取模塊11對所有的業(yè)務(wù)項目進行掃描,獲取所有業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型。
確定模塊12,用于確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件。
在獲取模塊11獲取到所有業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型后,由于每個業(yè)務(wù)類型對應(yīng)至少一個回收組件,則確定模塊12根據(jù)所包括的目標 業(yè)務(wù)類型,確定與目標業(yè)務(wù)類型對應(yīng)的目標回收組件。
回收模塊13,用于利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
在獲取到目標回收組件后,回收模塊13利用各目標回收組件對目標業(yè)務(wù)類型產(chǎn)生的垃圾進行回收。具體地,將每個業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型作為一個任務(wù)分配到對應(yīng)的目標回收組件中,加載所有的目標回收組件,并為各目標回收組件分配所需的線程池,啟動所有的目標回收組件使用所分配的線程池執(zhí)行垃圾回收邏輯,各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
本實施例提供的垃圾回收裝置,通過獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型,確定與目標業(yè)務(wù)類型對應(yīng)的目標回收組件,利用目標回收組件對目標業(yè)務(wù)類型的垃圾進行回收。本實施例中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,為不同的業(yè)務(wù)類型對應(yīng)不同的回收組件,基于這些組件進行垃圾回收,可以靈活地對業(yè)務(wù)類型進行擴展,可以實現(xiàn)對異構(gòu)的業(yè)務(wù)類型的回收,通用性較高。
實施例四
如圖5所示,其為本發(fā)明實施例四的垃圾回收裝置的結(jié)構(gòu)示意圖。該垃圾回收裝置除了包括上述實施例三中的構(gòu)建模塊10、獲取模塊11、確定模塊12和回收模塊13之外,還包括:監(jiān)控模塊14和斷點恢復(fù)模塊15。
構(gòu)建模塊10,具體用于為具有相同的垃圾回收邏輯的所有的業(yè)務(wù)類型,構(gòu)建一個與其對應(yīng)的回收組件,為其他的每個業(yè)務(wù)類型分別構(gòu)建與其對應(yīng)的回收組件;其中,所述具有相同的垃圾回收垃圾的所有的業(yè)務(wù)類型復(fù)用與其對應(yīng)的回收組件。
本實施例中獲取模塊11一種可選地結(jié)構(gòu)包括:掃描單元111和生成單元112。
其中,掃描單元111,用于對所有的業(yè)務(wù)項目進行掃描。
生成單元112,用于將掃描結(jié)果生成業(yè)務(wù)項目列表。
其中,所述業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的所述目標 業(yè)務(wù)類型。
本實施例中確定模塊12一種可選地結(jié)構(gòu)包括:判斷單元121、獲取單元122、刪除單元123和確定單元124。
其中,判斷單元121,用于判斷所述業(yè)務(wù)項目列表中是否存在新的目標業(yè)務(wù)類型。
獲取單元122,用于在所述判斷單元判斷出存在所述新的目標業(yè)務(wù)類型時,獲取與所述新的目標業(yè)務(wù)類型對應(yīng)新的目標回收組件。
進一步地,獲取單元121,還用于在所述判斷單元判斷出未存在所述新的目標業(yè)務(wù)類型時,根據(jù)所述業(yè)務(wù)項目列表中獲取每個業(yè)務(wù)項目已刪除的目標業(yè)務(wù)類型。
進一步地,判斷單元122,還用于判斷所述已刪除的目標業(yè)務(wù)類型對應(yīng)的的目標回收組件是否被所述業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型所復(fù)用。
刪除單元123,用于在所述判斷單元判斷所述已刪除的業(yè)務(wù)類型對應(yīng)的目標回收組件未被復(fù)用時,將所述已刪除的業(yè)務(wù)類型對應(yīng)的目標回收組件進行刪除。
確定單元124,用于為所述業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型確定與其對應(yīng)的目標回收組件,其中所述其他的目標業(yè)務(wù)類型為所述業(yè)務(wù)項目列表中除所述新的目標業(yè)務(wù)類型和已刪除的目標業(yè)務(wù)類型之外的目標業(yè)務(wù)類型。
本實施例中回收模塊13一種可選地結(jié)構(gòu)包括:分配單元131、加載單元132、線程分配單元133和執(zhí)行單元134。
分配單元131,用于將每個業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型作為一個任務(wù)分配到對應(yīng)的所有目標回收組件中。
加載單元132,用于加載所有的目標回收組件。
線程分配單元133,用于為各目標回收組件分配所需的線程池。
執(zhí)行單元134,用于啟動各目標回收組件使用所分配的所述線程池執(zhí)行所述垃圾回收邏輯對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
監(jiān)控模塊14,用于在利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型 的垃圾進行回收的過程中,監(jiān)控垃圾回收進度并將監(jiān)控到的所述垃圾回收進度作為為一個檢查點。
斷點恢復(fù)模塊15,用于在垃圾回收的過程中出現(xiàn)斷點后,利用與所述斷點時間最近的所述檢查點進行斷點恢復(fù)。
上述實施例一和實施例二提供的垃圾回收方法可以運行在如圖5所示的垃圾回收裝置中。
本實施例中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,為不同的業(yè)務(wù)類型對應(yīng)不同的回收組件,基于這些組件進行垃圾回收,可以靈活地對業(yè)務(wù)類型進行擴展,可以實現(xiàn)對異構(gòu)的業(yè)務(wù)類型的回收,通用性較高。
本實施例中,基于回收組件對垃圾進行回收,能適應(yīng)現(xiàn)有大數(shù)據(jù)開放處理平臺中對大量異構(gòu)類型垃圾回收的要求,基于回收組件具有的熱插拔功能,具有很強的動態(tài)擴展性,能夠?qū)Ξa(chǎn)生的新業(yè)務(wù)類型的垃圾有效支持,從而適用于大數(shù)據(jù)處理環(huán)境。當在垃圾回收的過程中,如果出現(xiàn)異常情況,導(dǎo)致垃圾回收的過程被中斷,可以根據(jù)最近的檢查點進行斷點恢復(fù)。
實施例五
如圖6所示,其為本發(fā)明實施例五的垃圾回收裝置的結(jié)構(gòu)示意圖。該垃圾回收裝置包括:掃描儀21、調(diào)度器22和執(zhí)行器23。
其中,掃描儀21,用于獲取所有的業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型;其中,不同的業(yè)務(wù)類型對應(yīng)不同的回收組件。
調(diào)度器22,用于確定與各目標業(yè)務(wù)類型所對應(yīng)的目標回收組件。
執(zhí)行器23,用于利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
進一步地,執(zhí)行器22,用于在所述掃描儀獲取所有的業(yè)務(wù)項目所包括的業(yè)務(wù)類型之前,為不同的業(yè)務(wù)類型構(gòu)建對應(yīng)的回收組件,其中,一個業(yè)務(wù)類型至少對應(yīng)一個回收組件。
執(zhí)行器22,具體用于為具有相同的垃圾回收邏輯的所有的業(yè)務(wù)類型,構(gòu)建一個與其對應(yīng)的回收組件,為其他的每個業(yè)務(wù)類型分別構(gòu)建與其對應(yīng)的回收組件。
其中,所述具有相同的垃圾回收垃圾的所有的業(yè)務(wù)類型復(fù)用與其對應(yīng)的回收組件。
掃描儀21,具體用于對所有的業(yè)務(wù)項目進行掃描,將掃描結(jié)果生成業(yè)務(wù)項目列表;其中,所述業(yè)務(wù)項目列表中包括所有的業(yè)務(wù)項目所包括的所述目標業(yè)務(wù)類型。
調(diào)度器22,具體用于在所述掃描儀生成所述業(yè)務(wù)項目列表后,用于判斷所述業(yè)務(wù)項目列表中是否存在新的目標業(yè)務(wù)類型,以及在判斷出存在所述新的目標業(yè)務(wù)類型時,獲取與所述新的目標業(yè)務(wù)類型對應(yīng)新的目標回收組件。
調(diào)度器23,還具體用于在判斷出未存在所述新的目標業(yè)務(wù)類型時,根據(jù)所述業(yè)務(wù)項目列表中獲取每個業(yè)務(wù)項目已刪除的目標業(yè)務(wù)類型,以及判斷所述已刪除的目標業(yè)務(wù)類型對應(yīng)的的目標回收組件是否被所述業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型所復(fù)用,在判斷所述已刪除的業(yè)務(wù)類型對應(yīng)的目標回收組件未被復(fù)用時,將所述已刪除的業(yè)務(wù)類型對應(yīng)的目標回收組件進行刪除,以及為所述業(yè)務(wù)項目列表中其他的目標業(yè)務(wù)類型確定與其對應(yīng)的目標回收組件,其中所述其他的目標業(yè)務(wù)類型為所述業(yè)務(wù)項目列表中除所述新的目標業(yè)務(wù)類型和已刪除的目標業(yè)務(wù)類型之外的目標業(yè)務(wù)類型,并將每個業(yè)務(wù)項目所包括的目標業(yè)務(wù)類型作為一個任務(wù)分配給所述執(zhí)行器。
執(zhí)行器23,具體用于接收所述調(diào)度器分配的任務(wù),將任務(wù)分配到對應(yīng)的所有目標回收組件中,加載所有的目標回收組件,為各目標回收組件分配所需的線程池,以及啟動各目標回收組件使用所分配的所述線程池執(zhí)行所述垃圾回收邏輯對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收。
該垃圾回收裝置還包括:故障處理器24。
故障處理器24,用于在利用各目標回收組件對所對應(yīng)的目標業(yè)務(wù)類型的垃圾進行回收的過程中,監(jiān)控垃圾回收進度并將監(jiān)控到的所述垃圾回收進度作為為一個檢查點。
故障處理器24,還用于在垃圾回收的過程中出現(xiàn)斷點后,利用與所述斷點時間最近的所述檢查點進行斷點恢復(fù)。
上述實施例一和實施例二提供的垃圾回收方法可以運行在如圖5所示的垃圾回收裝置中。
本實施例中以業(yè)務(wù)類型為粒度構(gòu)建的回收組件,為不同的業(yè)務(wù)類型對應(yīng)不同的回收組件,基于這些組件進行垃圾回收,可以靈活地對業(yè)務(wù)類型進行擴展,可以實現(xiàn)對異構(gòu)的業(yè)務(wù)類型的回收,通用性較高。
本實施例中,基于回收組件對垃圾進行回收,能適應(yīng)現(xiàn)有大數(shù)據(jù)開放處理平臺中對大量異構(gòu)類型垃圾回收的要求,基于回收組件具有的熱插拔功能,具有很強的動態(tài)擴展性,能夠?qū)Ξa(chǎn)生的新業(yè)務(wù)類型的垃圾有效支持,從而適用于大數(shù)據(jù)處理環(huán)境。當在垃圾回收的過程中,如果出現(xiàn)異常情況,導(dǎo)致垃圾回收的過程被中斷,可以根據(jù)最近的檢查點進行斷點恢復(fù)。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。