專利名稱:一種建立檢查點(diǎn)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及應(yīng)用程序備份技術(shù)領(lǐng)域,尤其涉及一種建立檢查點(diǎn)的方法和系統(tǒng)。
背景技術(shù):
隨著計(jì)算機(jī)和通信技術(shù)的發(fā)展,對(duì)服務(wù)器系統(tǒng)的可靠性要求越來越高。為了避免由于服務(wù)器死機(jī)(宕機(jī))或誤操作而導(dǎo)致應(yīng)用程序的運(yùn)行狀態(tài)的數(shù)據(jù)信息丟失,需要對(duì)系統(tǒng)進(jìn)行熱備份。熱備份是指在系統(tǒng)正常工作的情況下,將系統(tǒng)中應(yīng)用程序運(yùn)行狀態(tài)記錄成備份文件并保存下來。系統(tǒng)生成熱備份一般是采用以固定周期對(duì)系統(tǒng)中各個(gè)應(yīng)用程序建立檢查點(diǎn),以便對(duì)系統(tǒng)中所有的應(yīng)用程序的運(yùn)行狀態(tài)進(jìn)行記錄生成備份文件。當(dāng)系統(tǒng)出現(xiàn)故障并重新運(yùn)行時(shí),可以利用備份文件將系統(tǒng)恢復(fù)至檢查點(diǎn)建立時(shí)刻的狀態(tài)。由于建立服務(wù)器系統(tǒng)檢查點(diǎn)的過程中,系統(tǒng)一般會(huì)以一個(gè)固定的周期來為所有應(yīng)用程序均建立檢查點(diǎn),而對(duì)于應(yīng)用程序中的某些應(yīng)用進(jìn)程而言,在相鄰兩次檢查點(diǎn)之間,應(yīng)用進(jìn)程的運(yùn)行狀態(tài)并沒有發(fā)生改變,但是系統(tǒng)卻進(jìn)行了兩次備份操作,增加了數(shù)據(jù)開銷,從而造成了資源浪費(fèi)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種建立檢查點(diǎn)的方法和檢查點(diǎn)管理系統(tǒng),能降低建立檢查點(diǎn)帶來的數(shù)據(jù)開銷,節(jié)省系統(tǒng)資源。為實(shí)現(xiàn)上述目的本發(fā)明提供了一種建立檢查點(diǎn)的方法,包括判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行以下設(shè)定檢查點(diǎn)觸發(fā)條件的步驟,如果否,則執(zhí)行以下監(jiān)測(cè)應(yīng)用進(jìn)程的步驟;設(shè)定檢查點(diǎn)觸發(fā)條件的步驟包括監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次響應(yīng)輸出之間的時(shí)間間隔;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;監(jiān)測(cè)應(yīng)用進(jìn)程的步驟包括對(duì)于一個(gè)應(yīng)用進(jìn)程,判斷當(dāng)前是否滿足建立檢查點(diǎn)的觸發(fā)條件,如果是,則為該應(yīng)用進(jìn)程建立檢查點(diǎn)。另一方面,本發(fā)明提供了一種建立檢查點(diǎn)的系統(tǒng),包括判斷單元,用于判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作,如果否,則執(zhí)行檢查點(diǎn)建立單元的操作;觸發(fā)設(shè)定單元,用于為各個(gè)應(yīng)用進(jìn)程設(shè)定檢查點(diǎn)觸發(fā)條件;
檢查點(diǎn)建立單元,用于當(dāng)某個(gè)應(yīng)用進(jìn)程滿足觸發(fā)條件時(shí),為該應(yīng)用進(jìn)程建立檢查點(diǎn)ο從上述的技術(shù)方案可以看出,本發(fā)明實(shí)施例公開一種建立檢查點(diǎn)的方法和系統(tǒng), 通過監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),可以確定出各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,將各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔與預(yù)設(shè)的時(shí)間檢查點(diǎn)的周期作比較,為不同應(yīng)用進(jìn)程確定不同的建立檢查點(diǎn)的觸發(fā)條件,這樣系統(tǒng)可以合理的安排各個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn)的周期,避免某個(gè)應(yīng)用進(jìn)程在當(dāng)前建立檢查點(diǎn)時(shí),該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)與上一檢查點(diǎn)時(shí)刻的運(yùn)行狀態(tài)相同的情況出現(xiàn),從而減少建立檢查點(diǎn)帶來的數(shù)據(jù)開銷,造成系統(tǒng)資源浪費(fèi)。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。圖1為本發(fā)明公開的一種建立檢查點(diǎn)的方法的一個(gè)實(shí)施例的流程示意圖;圖2為本發(fā)明的一種建立檢查點(diǎn)的方法的一個(gè)應(yīng)用場(chǎng)景示意圖;圖3為服務(wù)器系統(tǒng)出現(xiàn)故障后,利用本發(fā)明所建立的檢查點(diǎn)恢復(fù)應(yīng)用進(jìn)程運(yùn)行狀態(tài)的流程示意圖;圖4為本發(fā)明公開的一種建立檢查點(diǎn)的方法的另一個(gè)實(shí)施例的流程示意圖;圖5為本發(fā)明一種建立檢查點(diǎn)的方法的另一個(gè)應(yīng)用場(chǎng)景示意圖;圖6為本發(fā)明公開的一種建立檢查點(diǎn)的系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明公開了一種建立檢查點(diǎn)的方法和系統(tǒng),根據(jù)不同應(yīng)用進(jìn)程的響應(yīng)輸出間隔,為不同應(yīng)用進(jìn)程確定不同的建立檢查點(diǎn)的觸發(fā)條件,并在某個(gè)應(yīng)用進(jìn)程滿足建立檢查點(diǎn)的觸發(fā)條件時(shí),為該應(yīng)用進(jìn)程建立檢查點(diǎn)。參見圖1,示出了本發(fā)明一種建立檢查點(diǎn)的方法的一個(gè)實(shí)施例的流程示意圖,本實(shí)施例的方法可以包括以下步驟步驟101 判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行設(shè)定檢查點(diǎn)觸發(fā)條件的步驟,進(jìn)入步驟102,如果否,則執(zhí)行監(jiān)測(cè)應(yīng)用進(jìn)程的步驟,進(jìn)入步驟105。其中,具體何時(shí)進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定可以根據(jù)服務(wù)器系統(tǒng)的性能、服務(wù)器系統(tǒng)的應(yīng)用場(chǎng)合、服務(wù)器系統(tǒng)運(yùn)行的應(yīng)用程序的數(shù)量等因素來確定??梢栽O(shè)定在服務(wù)器系統(tǒng)中應(yīng)用程序進(jìn)行初始化時(shí),進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,并在完成初始化之后,各個(gè)應(yīng)用進(jìn)程的觸發(fā)條件保持不變。由于服務(wù)器系統(tǒng)中每個(gè)應(yīng)用程序的運(yùn)行過程中可能會(huì)涉及多個(gè)應(yīng)用進(jìn)程(或者稱為應(yīng)用進(jìn)程組),而不同時(shí)刻同一應(yīng)用進(jìn)程的運(yùn)行速度、相鄰兩次接收到請(qǐng)求的時(shí)間間隔,相鄰兩次響應(yīng)輸出的時(shí)間間隔等都可能會(huì)發(fā)生較大的變化,因此也可以預(yù)先設(shè)置進(jìn)行檢查點(diǎn)觸發(fā)條件設(shè)定的周期,并周期性的進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定。具體的可以判斷當(dāng)前是否滿足預(yù)設(shè)的進(jìn)行檢查點(diǎn)觸發(fā)條件設(shè)定的時(shí)刻,如果是,則執(zhí)行檢查點(diǎn)觸發(fā)條件的操作。如,可以每隔兩個(gè)小時(shí)進(jìn)行一次設(shè)定檢查點(diǎn)觸發(fā)條件的操作。當(dāng)然,也可以采用實(shí)時(shí)監(jiān)測(cè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),以確定應(yīng)用進(jìn)程的響應(yīng)輸出間隔。當(dāng)滿足設(shè)定檢查點(diǎn)觸發(fā)條件的執(zhí)行條件時(shí),就可以進(jìn)行檢查點(diǎn)觸發(fā)條件的操作, 執(zhí)行步驟102、103和104。步驟102 監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔。其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次輸出之間的時(shí)間間隔。當(dāng)然該響應(yīng)輸出間隔的確定還綜合考慮了該應(yīng)用進(jìn)程的平均響應(yīng)時(shí)間以及該應(yīng)用進(jìn)程接收到的請(qǐng)求的
頻率等因素。監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),可以獲取到不同應(yīng)用進(jìn)程的接收到請(qǐng)求的頻率, 該應(yīng)用進(jìn)程的響應(yīng)時(shí)間,以及該應(yīng)用進(jìn)程的相鄰兩次請(qǐng)求的輸入時(shí)間間隔,該應(yīng)用進(jìn)程相鄰兩次輸出的時(shí)間間隔等。不同的應(yīng)用進(jìn)程接收到請(qǐng)求的頻率、以及響應(yīng)時(shí)間等會(huì)存在差異,因此不同的應(yīng)用進(jìn)程的相鄰兩次輸出之間的時(shí)間間隔也會(huì)有差異,例如應(yīng)用進(jìn)程1可能每隔15ms接收到一個(gè)請(qǐng)求,接收到請(qǐng)求后的響應(yīng)時(shí)間為5ms,該應(yīng)用進(jìn)程的響應(yīng)輸出間隔可以為15ms ;而應(yīng)用進(jìn)程2每隔80ms接收到一次請(qǐng)求,響應(yīng)時(shí)間為25ms,該應(yīng)用進(jìn)程的響應(yīng)輸出間隔可以為 80ms ο需要說明的是,在現(xiàn)有技術(shù)中對(duì)于以上例子中的兩個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn)的周期是相同的,如可以每隔20ms為這兩個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn),當(dāng)建立檢查點(diǎn)時(shí)需要將這兩個(gè)應(yīng)用進(jìn)程均凍結(jié),中斷兩個(gè)應(yīng)用進(jìn)程的執(zhí)行,而頻繁的為兩個(gè)應(yīng)用進(jìn)程均建立檢查點(diǎn)消耗了大量的系統(tǒng)資源。如對(duì)于應(yīng)用進(jìn)程2而言,該應(yīng)用進(jìn)程接收到請(qǐng)求的間隔時(shí)間遠(yuǎn)大于 20ms,因此相鄰兩個(gè)檢查點(diǎn)之間,該應(yīng)用進(jìn)程2的運(yùn)行狀態(tài)并沒有發(fā)生變化,但是服務(wù)器系統(tǒng)卻為該應(yīng)用進(jìn)程建立了檢查點(diǎn),造成了資源的浪費(fèi)。而且在建立檢查點(diǎn)的過程中該應(yīng)用進(jìn)程2還可能由于被凍結(jié)而中斷程序運(yùn)行,使應(yīng)用程序的中斷時(shí)間增加,進(jìn)而影響系統(tǒng)性能。如果將服務(wù)器系統(tǒng)為這兩個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn)的周期延長(zhǎng),當(dāng)突然斷電時(shí),檢查點(diǎn)到斷電時(shí)刻中的系統(tǒng)應(yīng)用進(jìn)程運(yùn)行狀態(tài)的信息可能丟失的會(huì)較多。本發(fā)明通過監(jiān)測(cè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定出不同應(yīng)用進(jìn)程的響應(yīng)輸出間隔,區(qū)分出各個(gè)應(yīng)用進(jìn)程的差異性,進(jìn)而針對(duì)不同的應(yīng)用進(jìn)程確定不同的建立檢查點(diǎn)的觸發(fā)條件。步驟102 當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。步驟103 當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。其中,預(yù)設(shè)的建立檢查點(diǎn)的周期是指系統(tǒng)預(yù)先設(shè)定了建立檢查點(diǎn)的時(shí)刻,相鄰兩個(gè)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻的間隔為一個(gè)預(yù)設(shè)的建立檢查點(diǎn)的周期,該周期可以根據(jù)系統(tǒng)性能以及可靠性來確定。具體的可以考慮系統(tǒng)中各個(gè)應(yīng)用進(jìn)程的響應(yīng)時(shí)間以及響應(yīng)輸出的間隔來確定該預(yù)設(shè)的建立檢查點(diǎn)的周期,對(duì)于該預(yù)設(shè)的周期的時(shí)間長(zhǎng)度不做具體限定。得到各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔之后,將應(yīng)用進(jìn)程的響應(yīng)輸出間隔與預(yù)設(shè)的建立檢查點(diǎn)的周期進(jìn)行比較,以設(shè)定各個(gè)應(yīng)用進(jìn)程各自建立檢查點(diǎn)的觸發(fā)條件。例如,假設(shè)預(yù)設(shè)的建立檢查點(diǎn)的周期為30ms,應(yīng)用進(jìn)程1的輸出響應(yīng)輸出間隔為15ms,應(yīng)用進(jìn)程2的響應(yīng)輸出間隔為^ms,而應(yīng)用進(jìn)程3的響應(yīng)輸出間隔為60ms,而對(duì)于應(yīng)用進(jìn)程1和應(yīng)用進(jìn)程2 來說,在該預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻點(diǎn)即為這兩個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;而對(duì)于應(yīng)用進(jìn)程3而言,該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件為應(yīng)用進(jìn)程有響應(yīng)輸出。步驟104 對(duì)于一個(gè)應(yīng)用進(jìn)程,判斷當(dāng)前是否滿足建立檢查點(diǎn)的觸發(fā)條件,如果是,則為該應(yīng)用進(jìn)程建立檢查點(diǎn)。在確定了不同應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件后,可以執(zhí)行監(jiān)測(cè)應(yīng)用進(jìn)程的步驟,對(duì)于某個(gè)應(yīng)用進(jìn)程而言,依據(jù)為其設(shè)定的建立檢查點(diǎn)的觸發(fā)條件,判斷當(dāng)前該應(yīng)用進(jìn)程是否滿足建立檢查點(diǎn)的觸發(fā)條件,如果是,就為該應(yīng)用進(jìn)程建立檢查點(diǎn)。當(dāng)應(yīng)用進(jìn)程滿足建立檢查點(diǎn)的觸發(fā)條件時(shí),將待建立檢查點(diǎn)的應(yīng)用進(jìn)程進(jìn)行凍結(jié),保證在為該應(yīng)用進(jìn)程建立檢查點(diǎn)的過程中,該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)不會(huì)發(fā)生變化,以深度優(yōu)先搜索的方式遍歷該應(yīng)用進(jìn)程以及相關(guān)的線程,并記錄該待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài),生成與該待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài)相對(duì)應(yīng)的備份文件。建立檢查點(diǎn)時(shí)生成的備份文件也可以稱為熱備份文件,在該熱備份文件中可以包括該應(yīng)用進(jìn)程的打開的文件列表、網(wǎng)絡(luò)狀態(tài)、堆棧段指針等。本實(shí)施例中,通過監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),可以確定出各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,并將應(yīng)用進(jìn)程的響應(yīng)輸出間隔與預(yù)設(shè)的建立檢查點(diǎn)的周期作比較,為不同應(yīng)用進(jìn)程確定不同的建立檢查點(diǎn)的觸發(fā)條件,當(dāng)某個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔較短時(shí),可以在預(yù)設(shè)的建立檢查點(diǎn)的時(shí)間點(diǎn)到達(dá)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn);當(dāng)某個(gè)應(yīng)用進(jìn)行的響應(yīng)輸出時(shí)間間隔較長(zhǎng)時(shí),該應(yīng)用進(jìn)程建立檢查點(diǎn)的周期也會(huì)相應(yīng)的增長(zhǎng),這樣系統(tǒng)可以合理的安排各個(gè)應(yīng)用進(jìn)程建立檢查點(diǎn)的周期,避免某個(gè)應(yīng)用進(jìn)程在當(dāng)前建立檢查點(diǎn)時(shí),該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)與上一檢查點(diǎn)時(shí)刻的運(yùn)行狀態(tài)相同的情況出現(xiàn),從而減少建立檢查點(diǎn)帶來的數(shù)據(jù)開銷,造成系統(tǒng)資源浪費(fèi)。同時(shí),當(dāng)不同應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件不同,不同應(yīng)用進(jìn)程建立檢查點(diǎn)的時(shí)間也不相同,而只有在建立檢查點(diǎn)時(shí),該應(yīng)用進(jìn)程才會(huì)被凍結(jié),因此如果某個(gè)應(yīng)用進(jìn)程的響應(yīng)時(shí)間較長(zhǎng)且該應(yīng)用進(jìn)程的輸出時(shí)間間隔較長(zhǎng)時(shí),則只有在該應(yīng)用進(jìn)程有響應(yīng)輸出時(shí), 才觸發(fā)為該應(yīng)用進(jìn)程建立檢查點(diǎn)的操作,從而減少了該應(yīng)用進(jìn)程的中斷時(shí)間。需要說明的是,在為應(yīng)用進(jìn)程建立檢查點(diǎn)時(shí),需要將該應(yīng)用進(jìn)程進(jìn)行凍結(jié)。當(dāng)完成檢查點(diǎn)的建立,生成相應(yīng)的備份文件之后,還需要將該應(yīng)用進(jìn)程進(jìn)行解凍,恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),使該應(yīng)用進(jìn)程可以接收來自客戶端的請(qǐng)求。服務(wù)器系統(tǒng)中運(yùn)行的應(yīng)用進(jìn)程可以分為兩類,一類為記憶型應(yīng)用,記憶型應(yīng)用進(jìn)程在運(yùn)行過程中,應(yīng)用程序的數(shù)據(jù)狀態(tài)會(huì)隨應(yīng)用進(jìn)程的數(shù)據(jù)請(qǐng)求輸入和響應(yīng)輸出而發(fā)生變化。這類應(yīng)用進(jìn)程在執(zhí)行過程中應(yīng)用進(jìn)程的數(shù)據(jù)狀態(tài)以及進(jìn)程狀態(tài)都會(huì)發(fā)生改變。另一類是非記憶型應(yīng)用,這類應(yīng)用進(jìn)程在運(yùn)行過程中,應(yīng)用進(jìn)程的請(qǐng)求輸入和響應(yīng)輸出不會(huì)對(duì)應(yīng)用程序的數(shù)據(jù)狀態(tài)帶來影響。如,對(duì)于一些信息查詢程序,接收到用戶查詢請(qǐng)求時(shí),將用戶的請(qǐng)求的信息提供給用戶,但是應(yīng)用程序本身的數(shù)據(jù)狀態(tài)等都不會(huì)發(fā)生什么改變。對(duì)于非記憶型的應(yīng)用進(jìn)程,由于其應(yīng)用狀態(tài)和應(yīng)用程序的相關(guān)數(shù)據(jù)不會(huì)隨應(yīng)用進(jìn)程的輸入和輸出而發(fā)生改變,可以不對(duì)該類應(yīng)用進(jìn)程建立檢查點(diǎn)或者由手動(dòng)設(shè)置檢查點(diǎn)。因此,在檢查點(diǎn)建立之前還可以根據(jù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),判斷應(yīng)用進(jìn)程運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)是否發(fā)生改變,如果是,則執(zhí)行建立檢查點(diǎn)的操作。也就是說,對(duì)于在運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)發(fā)生改變的應(yīng)用進(jìn)程,才進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定的操作,并為該應(yīng)用進(jìn)程建立檢查點(diǎn)。為便于理解,下面以一具體的應(yīng)用場(chǎng)景對(duì)上述實(shí)施例中描述的建立檢查點(diǎn)的方法進(jìn)行詳細(xì)描述,參見圖2,為本發(fā)明中對(duì)不同應(yīng)用進(jìn)程建立檢查點(diǎn)的示意圖。圖中每個(gè)線段的兩端分別表示該應(yīng)用進(jìn)程接收到請(qǐng)求和響應(yīng)輸出所對(duì)應(yīng)的時(shí)間點(diǎn);同一個(gè)應(yīng)用進(jìn)程所對(duì)應(yīng)的各條線段之間的間距長(zhǎng)短代表了該應(yīng)用進(jìn)程接收到請(qǐng)求的頻率(即,響應(yīng)輸出間隔), 假設(shè)不同時(shí)間段內(nèi)同一應(yīng)用進(jìn)程的響應(yīng)輸出間隔不變;圖中的虛線表示系統(tǒng)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)間點(diǎn),兩條虛線之間的間隔為一個(gè)預(yù)設(shè)的建立檢查點(diǎn)的周期。其中,應(yīng)用進(jìn)程1、應(yīng)用進(jìn)程2和應(yīng)用進(jìn)程3均為記憶型應(yīng)用;應(yīng)用進(jìn)程4為非記憶型應(yīng)用。由圖2可以看出,由于應(yīng)用進(jìn)程4為非記憶型應(yīng)用,可以不為該應(yīng)用進(jìn)程建立檢查點(diǎn),進(jìn)而減少系統(tǒng)資源消耗。對(duì)于應(yīng)用進(jìn)程1、應(yīng)用進(jìn)程2和應(yīng)用進(jìn)程3而言,三個(gè)應(yīng)用進(jìn)程中,應(yīng)用進(jìn)程1的響應(yīng)輸出間隔的最短,應(yīng)用進(jìn)程3的響應(yīng)輸出間隔的最長(zhǎng),且應(yīng)用進(jìn)程1 和應(yīng)用進(jìn)程2的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期的時(shí)間長(zhǎng)度,而應(yīng)用進(jìn)程3的響應(yīng)輸出間隔遠(yuǎn)大于預(yù)設(shè)的建立檢查點(diǎn)的周期。因此,將預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻作為應(yīng)用進(jìn)程1和應(yīng)用進(jìn)程2建立檢查點(diǎn)的觸發(fā)條件,并周期性的在預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為應(yīng)用進(jìn)程1和應(yīng)用進(jìn)程2建立檢查點(diǎn)(圖中類似長(zhǎng)方形的圖形代表建立檢查點(diǎn)的操作); 將應(yīng)用進(jìn)程3的響應(yīng)輸出作為應(yīng)用進(jìn)程3建立檢查點(diǎn)的觸發(fā)條件,并在該應(yīng)用進(jìn)程3產(chǎn)生響應(yīng)輸出時(shí)為應(yīng)用進(jìn)程3建立檢查點(diǎn)。需要說明的是,當(dāng)服務(wù)器系統(tǒng)出現(xiàn)宕機(jī)或誤操作等故障后,服務(wù)器系統(tǒng)恢復(fù)正常時(shí)可以根據(jù)最近檢查點(diǎn)處所生成的備份文件,將系統(tǒng)中各個(gè)應(yīng)用程序恢復(fù)至該最近檢查點(diǎn)建立時(shí)刻的各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。為了清楚的描述服務(wù)器系統(tǒng)出現(xiàn)故障后,利用檢查點(diǎn)處建立的備份文件恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),參見圖3,為服務(wù)器系統(tǒng)故障重啟后,利用檢查點(diǎn)生成的備份文件恢復(fù)系統(tǒng)中應(yīng)用進(jìn)程的運(yùn)行狀態(tài)的流程示意圖,包括步驟301 讀取待恢復(fù)的應(yīng)用進(jìn)程的列表,依次讀取待恢復(fù)的應(yīng)用進(jìn)程的信息。該待恢復(fù)的應(yīng)用進(jìn)程列表中按先后順序列出了各個(gè)待恢復(fù)的應(yīng)用進(jìn)程,然后依次讀取各個(gè)應(yīng)用進(jìn)程的信息,以便逐次恢復(fù)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。步驟302 獲取某應(yīng)用進(jìn)程所對(duì)應(yīng)的最近檢查點(diǎn)處所生成的備份文件。步驟303 根據(jù)獲取到的備份文件,將該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)恢復(fù)至該備份文件建立時(shí)刻的運(yùn)行狀態(tài)。當(dāng)需要恢復(fù)某個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)時(shí),首先需要獲取到該應(yīng)用進(jìn)程最近的檢查點(diǎn)處所生成的備份文件。獲取到該備份文件之后,可以根據(jù)備份文件中記錄的信息恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。步驟303 啟動(dòng)該應(yīng)用進(jìn)程,并繼續(xù)讀取待恢復(fù)的應(yīng)用進(jìn)程的列表,當(dāng)仍有待恢復(fù)的應(yīng)用進(jìn)程時(shí),繼續(xù)執(zhí)行步驟302,直至將列表中所有應(yīng)用進(jìn)程的運(yùn)行狀態(tài)均恢復(fù)到其對(duì)應(yīng)的最近的檢查點(diǎn)建立時(shí)刻的運(yùn)行狀態(tài)。當(dāng)該應(yīng)用進(jìn)程恢復(fù)后,該應(yīng)用進(jìn)程可以繼續(xù)執(zhí)行進(jìn)程操作。系統(tǒng)繼續(xù)恢復(fù)后續(xù)的應(yīng)用進(jìn)程,直至所有的應(yīng)用進(jìn)程的運(yùn)行狀態(tài)均恢復(fù)為止。由于服務(wù)器系統(tǒng)出現(xiàn)故障后,對(duì)于某個(gè)應(yīng)用進(jìn)程而言,最近的檢查點(diǎn)處所記錄的進(jìn)程運(yùn)行狀態(tài)與在系統(tǒng)出現(xiàn)故障的時(shí)刻該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)間仍有差距,該應(yīng)用進(jìn)程運(yùn)行的數(shù)據(jù)信息仍有部分丟失。為了進(jìn)一步減少由于系統(tǒng)故障而導(dǎo)致的應(yīng)用進(jìn)程的數(shù)據(jù)丟失,在監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)的同時(shí),可以對(duì)各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄。該日志記錄主要反映該應(yīng)用進(jìn)程的數(shù)據(jù)狀態(tài)做了哪些修改,如該日志記錄中可以記錄該應(yīng)用進(jìn)程輸入的數(shù)據(jù)請(qǐng)求、數(shù)據(jù)響應(yīng)以及該應(yīng)用進(jìn)程依據(jù)接收到的請(qǐng)求對(duì)文件列表中的數(shù)據(jù)做了哪些修改等。參見圖4,示出了本發(fā)明另一實(shí)施例所提供的一種建立檢查點(diǎn)的方法的流程示意圖,本實(shí)施例包括步驟401 監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),對(duì)各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄。監(jiān)測(cè)應(yīng)用進(jìn)程,當(dāng)某個(gè)應(yīng)用進(jìn)程接收到數(shù)據(jù)請(qǐng)求之后,對(duì)該應(yīng)用進(jìn)程的數(shù)據(jù)請(qǐng)求狀態(tài),數(shù)據(jù)修改狀態(tài)、響應(yīng)的數(shù)據(jù)輸出等進(jìn)行記錄生成日志記錄。步驟402 判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行設(shè)定檢查點(diǎn)觸發(fā)條件的步驟,進(jìn)入步驟403,如果否,則執(zhí)行監(jiān)測(cè)應(yīng)用進(jìn)程的步驟,進(jìn)入步驟406。步驟403 依據(jù)日志記錄確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔。其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次輸出之間的時(shí)間間隔。此處的響應(yīng)輸出間隔與上一實(shí)施例中含義相同,在此不再贅述。不同之處在于獲取到各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔還可以通過各個(gè)應(yīng)用進(jìn)程的日志記錄的信息獲取到。步驟404 當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。步驟405 當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的周期為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。步驟406 對(duì)于一個(gè)應(yīng)用進(jìn)程,判斷當(dāng)前是否滿足建立檢查點(diǎn)的觸發(fā)條件,如果是,則為該應(yīng)用進(jìn)程建立檢查點(diǎn)。步驟404、步驟405和步驟406的操作過程分別與上一實(shí)施例中的步驟102、步驟 103和步驟104的過程相同,在此不再贅述。需要說明的是,對(duì)各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄的過程可以是將應(yīng)用進(jìn)程過程中的所涉及的數(shù)據(jù)狀態(tài)的信息均記錄下來,為了節(jié)省系統(tǒng)內(nèi)存空間也可以每隔一定時(shí)間更新一次應(yīng)用進(jìn)程的日志記錄??梢栽趯?duì)某個(gè)應(yīng)用進(jìn)程完成建立檢查點(diǎn)的操作時(shí),刪除該應(yīng)用進(jìn)程上次檢查點(diǎn)到當(dāng)前檢查點(diǎn)之間的日志記錄,更新該應(yīng)用進(jìn)程的日志記錄。還可以是應(yīng)用進(jìn)程每產(chǎn)生一次響應(yīng)輸出就更新一次該應(yīng)用進(jìn)程的日志記錄。當(dāng)然還有其他進(jìn)行應(yīng)用進(jìn)程的日志記錄的方式,只要能保證系統(tǒng)發(fā)生故障時(shí),從最近的檢查點(diǎn)到故障發(fā)生時(shí)刻之間的時(shí)間段內(nèi),應(yīng)用進(jìn)程的數(shù)據(jù)請(qǐng)求狀態(tài),數(shù)據(jù)修改狀態(tài)等日志記錄被記錄下來即可。由于在本實(shí)施例中增加了對(duì)應(yīng)用進(jìn)程進(jìn)行日志記錄的操作,在服務(wù)器系統(tǒng)出現(xiàn)故障系統(tǒng)重啟之后,可以利用應(yīng)用進(jìn)程對(duì)應(yīng)的最近的檢查點(diǎn)處所生成的備份文件,以及應(yīng)用進(jìn)程對(duì)應(yīng)的日志記錄,將應(yīng)用進(jìn)程會(huì)恢復(fù)至故障發(fā)生時(shí)刻的運(yùn)行狀態(tài)。具體的可以利用最近的檢查點(diǎn)處所生成的備份文件,將應(yīng)用進(jìn)程恢復(fù)至該備份文件建立時(shí)刻的進(jìn)程狀態(tài),并利用該應(yīng)用進(jìn)程對(duì)應(yīng)的日志記錄,將該應(yīng)用進(jìn)程恢復(fù)到故障發(fā)生時(shí)刻的進(jìn)程運(yùn)行狀態(tài)。也就是說,在利用備份文件將應(yīng)用狀態(tài)恢復(fù)到檢查點(diǎn)建立時(shí)刻的應(yīng)用狀態(tài)之后,還可以進(jìn)一步利用該應(yīng)用進(jìn)程對(duì)應(yīng)的日志記錄中記錄的數(shù)據(jù)狀態(tài)信息,將該應(yīng)用進(jìn)程恢復(fù)至系統(tǒng)故障發(fā)生時(shí)刻的運(yùn)行狀態(tài)。為便于理解,下面以一具體的應(yīng)用場(chǎng)景對(duì)上述實(shí)施例中描述的建立檢查點(diǎn)的方法以及服務(wù)器系統(tǒng)出現(xiàn)故障后,應(yīng)用進(jìn)程恢復(fù)運(yùn)行狀態(tài)的過程進(jìn)行詳細(xì)描述,參見圖5,圖中每個(gè)線段含義與圖2中的含義相同,圖中時(shí)間段1、時(shí)間段2和時(shí)間段4相鄰的虛線表示建立檢查點(diǎn)的時(shí)刻,時(shí)間段1、時(shí)間段2、和時(shí)間段3的時(shí)間長(zhǎng)度均為一個(gè)預(yù)設(shè)的時(shí)間檢查點(diǎn)的周期,其余虛線表示系統(tǒng)出現(xiàn)故障的時(shí)間點(diǎn),以及故障恢復(fù)后的時(shí)間點(diǎn)。在圖5中,應(yīng)用進(jìn)程1、應(yīng)用進(jìn)程2和應(yīng)用進(jìn)程3均為記憶型應(yīng)用;應(yīng)用進(jìn)程4為非記憶型應(yīng)用。由圖中可以看出應(yīng)用進(jìn)程1的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期,當(dāng)?shù)竭_(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻時(shí),為應(yīng)用進(jìn)程1建立檢查點(diǎn)生成相應(yīng)的備份文件。同時(shí)在應(yīng)用進(jìn)程1運(yùn)行過程中,為該應(yīng)用進(jìn)程1進(jìn)行了日志記錄。如圖,在應(yīng)用進(jìn)程1在執(zhí)行過程中, 對(duì)應(yīng)用進(jìn)程1進(jìn)行日志記錄,圖中的標(biāo)號(hào)為5的圓圈代表應(yīng)用進(jìn)程1運(yùn)行過程中的日志記錄,當(dāng)為該應(yīng)用進(jìn)程1建立檢查點(diǎn)之后,刪除該檢查點(diǎn)之前生成的日志記錄,更新該應(yīng)用進(jìn)程1的日志記錄,并繼續(xù)記錄該應(yīng)用進(jìn)程1的日志,圖中標(biāo)號(hào)為6的圓圈代表更新后的應(yīng)用進(jìn)程1的日志記錄。當(dāng)服務(wù)器系統(tǒng)出現(xiàn)宕機(jī),該應(yīng)用進(jìn)程1的運(yùn)行中斷后,為了恢復(fù)應(yīng)用進(jìn)程1的運(yùn)行狀態(tài),就可以利用標(biāo)號(hào)為6的備份文件將應(yīng)用進(jìn)程1的運(yùn)行狀態(tài)恢復(fù)至該標(biāo)號(hào)為6的備份文件生成時(shí)刻的運(yùn)行狀態(tài)。并利用之生成的標(biāo)號(hào)為6的日志記錄,將該應(yīng)用進(jìn)程的數(shù)據(jù)狀態(tài)恢復(fù)至最接近宕機(jī)時(shí)刻的數(shù)據(jù)狀態(tài)。應(yīng)用進(jìn)程2與應(yīng)用進(jìn)程1建立檢查點(diǎn)的過程類似,在此不再贅述。應(yīng)用進(jìn)程3的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期,當(dāng)應(yīng)用進(jìn)程3有響應(yīng)輸出時(shí),為該應(yīng)用進(jìn)程3建立檢查點(diǎn),圖中標(biāo)有標(biāo)號(hào)5且類似長(zhǎng)方形的代表為該應(yīng)用進(jìn)程3 在檢查點(diǎn)處建立的備份文件,且在應(yīng)用進(jìn)程3運(yùn)行過程中,對(duì)應(yīng)用進(jìn)程3進(jìn)行了日志記錄, 如圖中的標(biāo)號(hào)為4的圓圈,代表為該應(yīng)用進(jìn)程3生成的日志記錄。當(dāng)服務(wù)器系統(tǒng)出現(xiàn)宕機(jī),為了恢復(fù)應(yīng)用進(jìn)程3的運(yùn)行狀態(tài)可以將獲取到該應(yīng)用進(jìn)程3的備份文件,由于在應(yīng)用進(jìn)程3建立檢查點(diǎn)到出現(xiàn)宕機(jī)的時(shí)間段內(nèi),應(yīng)用進(jìn)程的運(yùn)行狀態(tài)沒有發(fā)生改變,沒有相應(yīng)的日志記錄,僅利用該應(yīng)用進(jìn)程3在檢查點(diǎn)處生成的備份文件, 就可以恢復(fù)應(yīng)用進(jìn)程3的運(yùn)行狀態(tài)。由于應(yīng)用進(jìn)程4為非記憶型應(yīng)用,可以不對(duì)該應(yīng)用進(jìn)程建立檢查點(diǎn)或者是進(jìn)行日志記錄,當(dāng)然具體情況可以根據(jù)需要進(jìn)行設(shè)定,在圖5中,對(duì)該應(yīng)用進(jìn)程4進(jìn)行了日志記錄。參見圖6,為本發(fā)明一種建立檢查點(diǎn)的系統(tǒng)的一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,本實(shí)施例的系統(tǒng)包括判斷單元610,用于判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作,如果否,則執(zhí)行檢查點(diǎn)建立單元的操作。觸發(fā)設(shè)定單元620,用于為各個(gè)應(yīng)用進(jìn)程設(shè)定檢查點(diǎn)觸發(fā)條件。檢查點(diǎn)建立單元630,用于當(dāng)某個(gè)應(yīng)用進(jìn)程滿足觸發(fā)條件時(shí),為該應(yīng)用進(jìn)程建立檢
10^^ ; ο具體的,該觸發(fā)設(shè)定單元620,包括狀態(tài)監(jiān)測(cè)單元621、響應(yīng)間隔確定單元622、第一觸發(fā)單元623和第二觸發(fā)單元624。其中,狀態(tài)監(jiān)測(cè)單元621,用于監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。響應(yīng)間隔確定單元622,用于依據(jù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次響應(yīng)輸出之間的時(shí)間間隔;第一觸發(fā)單元623,用于當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;第二觸發(fā)單元624,用于當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。需要說明的是,具體何時(shí)進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定可以根據(jù)服務(wù)器系統(tǒng)的性能、服務(wù)器系統(tǒng)的應(yīng)用場(chǎng)合、服務(wù)器系統(tǒng)運(yùn)行的應(yīng)用程序的數(shù)量等因素來確定。可以在系統(tǒng)初始化時(shí),進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,對(duì)應(yīng)的,該判斷單元610可以包括第一判斷單元,用于判斷應(yīng)用程序是否進(jìn)行初始化,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作,如果否,則執(zhí)行檢查點(diǎn)建立單元的操作。當(dāng)然,也可以由系統(tǒng)設(shè)定一個(gè)周期,然后周期性的進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,對(duì)應(yīng)的,判斷單元610可以包括第二判斷單元,用于判斷當(dāng)前時(shí)刻是否為預(yù)設(shè)的設(shè)定檢查點(diǎn)觸發(fā)條件的時(shí)刻,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作;如果否,則執(zhí)行檢查點(diǎn)建立單元的操作。當(dāng)然也可以實(shí)時(shí)監(jiān)測(cè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),從而確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,將各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔與預(yù)設(shè)的建立檢查點(diǎn)的周期進(jìn)行比較,進(jìn)而為不同的應(yīng)用進(jìn)程設(shè)定不同的觸發(fā)條件。在為某應(yīng)用進(jìn)程建立檢查點(diǎn)時(shí),需要將該應(yīng)用進(jìn)程進(jìn)行凍結(jié),該檢查點(diǎn)建立單元, 具體用于將待建立檢查點(diǎn)的應(yīng)用進(jìn)程進(jìn)行凍結(jié),并記錄所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程的執(zhí)行狀態(tài),生成與所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程執(zhí)行狀態(tài)相對(duì)應(yīng)的備份文件。當(dāng)然,在檢查點(diǎn)建立單元為該應(yīng)用進(jìn)程建立了檢查點(diǎn)之后,還需要為該應(yīng)用進(jìn)程進(jìn)行解凍,以恢復(fù)該應(yīng)用進(jìn)程接收請(qǐng)求的能力,恢復(fù)該應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。本實(shí)施例中狀態(tài)監(jiān)測(cè)單元可以實(shí)時(shí)監(jiān)測(cè)各個(gè)應(yīng)用程序的運(yùn)行狀態(tài),將各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)的信息發(fā)送到響應(yīng)間隔確定單元,以便響應(yīng)確定單元622可以確定該各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,進(jìn)而由第一觸發(fā)單元和第二觸發(fā)單元為各個(gè)應(yīng)用進(jìn)程確定建立檢查點(diǎn)的觸發(fā)條件,并觸發(fā)檢查點(diǎn)建立單元的操作為不同應(yīng)用進(jìn)程建立檢查點(diǎn)。由于應(yīng)用進(jìn)程可以劃分為記憶型應(yīng)用和非記憶型應(yīng)用,由于非記憶型的應(yīng)用進(jìn)程在接收到請(qǐng)求輸入到響應(yīng)輸出的過程中,不會(huì)對(duì)該應(yīng)用進(jìn)程涉及的文件以及數(shù)據(jù)狀態(tài)帶來影響,可以不對(duì)該類非記憶型應(yīng)用的應(yīng)用進(jìn)程建立檢查點(diǎn)。為了進(jìn)一步的節(jié)省系統(tǒng)開銷,本實(shí)施例的系統(tǒng)還可以包括應(yīng)用類型判斷單元,用于判斷應(yīng)用進(jìn)程運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)是否發(fā)生改變。檢查點(diǎn)建立觸發(fā)單元,用于當(dāng)所述應(yīng)用類型判斷單元判斷出應(yīng)用進(jìn)程在運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)發(fā)生改變時(shí),執(zhí)行所述檢查點(diǎn)建立單元的操作。
該應(yīng)用判斷單元也可以依據(jù)監(jiān)測(cè)單元獲取到的各個(gè)應(yīng)用進(jìn)行的運(yùn)行狀態(tài)信息,來判斷某個(gè)應(yīng)用進(jìn)程的進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)是否發(fā)生改變。如果某個(gè)應(yīng)用進(jìn)程在運(yùn)行過程中,不會(huì)對(duì)該進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)產(chǎn)生影響,則無需為該應(yīng)用進(jìn)程建立檢查點(diǎn),當(dāng)然也就可以不進(jìn)行響應(yīng)間隔確定單元、第一觸發(fā)單元和第二觸發(fā)單元的操作。檢查點(diǎn)管理系統(tǒng)可以完成檢查點(diǎn)的建立、刪除檢查點(diǎn),以及利用檢查點(diǎn)生成的備份文件恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),當(dāng)服務(wù)器系統(tǒng)出現(xiàn)故障后,需要利用應(yīng)用進(jìn)程最近檢查點(diǎn)處生成的備份文件,來恢復(fù)該應(yīng)用進(jìn)程的運(yùn)行狀態(tài),對(duì)應(yīng)的檢查點(diǎn)管理系統(tǒng)還包括進(jìn)程恢復(fù)單元,用于當(dāng)系統(tǒng)出現(xiàn)故障后,根據(jù)檢查點(diǎn)處所生成的備份文件,恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。進(jìn)一步的,為了使服務(wù)器系統(tǒng)出現(xiàn)故障后,能最大程度的保證應(yīng)用進(jìn)程的所涉及的數(shù)據(jù)狀態(tài)的完整性,該檢查點(diǎn)管理系統(tǒng)還包括日志記錄單元,用于在各個(gè)應(yīng)用進(jìn)程的運(yùn)行過程中,對(duì)所述各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄。該日志記錄主要反映應(yīng)用進(jìn)程的數(shù)據(jù)狀態(tài)做了哪些修改,如該日志記錄中可以記錄某應(yīng)用進(jìn)程輸入的數(shù)據(jù)請(qǐng)求、數(shù)據(jù)響應(yīng)以及該應(yīng)用進(jìn)程依據(jù)接收到的請(qǐng)求對(duì)文件列表中的數(shù)據(jù)做了哪些修改等。當(dāng)為應(yīng)用進(jìn)程進(jìn)行日志記錄時(shí),響應(yīng)間隔確定單元還可以依據(jù)日志記錄確定應(yīng)用進(jìn)程的響應(yīng)輸出間隔。與日志記錄單元相對(duì)應(yīng),進(jìn)程恢復(fù)單元,包括進(jìn)程恢復(fù)子單元,用于利用最近檢查點(diǎn)處所生成的備份文件,將應(yīng)用進(jìn)程恢復(fù)至該備份文件生成時(shí)刻的進(jìn)程運(yùn)行狀態(tài),并利用該日志記錄將該應(yīng)用進(jìn)程恢復(fù)到故障發(fā)生時(shí)刻的運(yùn)行狀態(tài)。為了減少占用的內(nèi)存空間,對(duì)于一個(gè)應(yīng)用進(jìn)程而言,如果在某時(shí)刻為該應(yīng)用進(jìn)程建立了檢查點(diǎn),那么該時(shí)刻之前的日志記錄可以被刪除,并重現(xiàn)記錄該應(yīng)用進(jìn)程在該檢查點(diǎn)之后的日志,與此對(duì)應(yīng),日志記錄單元,包括日志記錄更新單元,用于在檢查點(diǎn)建立單元建立檢查點(diǎn)之后,更新應(yīng)用程序的日志記錄。本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對(duì)于實(shí)施例公開的裝置而言,由于其與實(shí)施例公開的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法部分說明即可。專業(yè)人員還可以進(jìn)一步意識(shí)到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。 對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。
權(quán)利要求
1.一種建立檢查點(diǎn)的方法,其特征在于,包括判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行以下設(shè)定檢查點(diǎn)觸發(fā)條件的步驟,如果否,則執(zhí)行以下監(jiān)測(cè)應(yīng)用進(jìn)程的步驟;設(shè)定檢查點(diǎn)觸發(fā)條件的步驟包括監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次響應(yīng)輸出之間的時(shí)間間隔;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;監(jiān)測(cè)應(yīng)用進(jìn)程的步驟包括對(duì)于一個(gè)應(yīng)用進(jìn)程,判斷當(dāng)前是否滿足建立檢查點(diǎn)的觸發(fā)條件,如果是,則為該應(yīng)用進(jìn)程建立檢查點(diǎn)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,包括判斷應(yīng)用程序是否進(jìn)行初始化。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,包括判斷當(dāng)前時(shí)刻是否為預(yù)設(shè)的設(shè)定檢查點(diǎn)觸發(fā)條件的時(shí)刻。
4.根據(jù)權(quán)利要求1至3任一項(xiàng)所述的方法,其特征在于,在為應(yīng)用進(jìn)程建立檢查點(diǎn)之前,還包括根據(jù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),判斷應(yīng)用進(jìn)程運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)是否發(fā)生改變,如果是,則執(zhí)行所述建立檢查點(diǎn)的操作。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述建立檢查點(diǎn)包括將待建立檢查點(diǎn)的應(yīng)用進(jìn)程進(jìn)行凍結(jié),并記錄所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài),生成與所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài)相對(duì)應(yīng)的備份文件。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在建立檢查點(diǎn)之后還包括當(dāng)系統(tǒng)出現(xiàn)故障后,根據(jù)最近檢查點(diǎn)處所生成的備份文件,恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)的同時(shí), 對(duì)所述各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄;所述根據(jù)最近檢查點(diǎn)處所生成的備份文件,恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),包括利用所述備份文件,將所述應(yīng)用進(jìn)程恢復(fù)至所述備份文件建立時(shí)刻的進(jìn)程運(yùn)行狀態(tài), 并利用所述日志記錄將所述應(yīng)用進(jìn)程恢復(fù)到故障發(fā)生時(shí)刻的運(yùn)行狀態(tài)。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,在建立檢查點(diǎn)之后,還包括更新應(yīng)用進(jìn)程的日志記錄。
9.一種建立檢查點(diǎn)的系統(tǒng),其特征在于,包括判斷單元,用于判斷當(dāng)前是否需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作,如果否,則執(zhí)行檢查點(diǎn)建立單元的操作;觸發(fā)設(shè)定單元,用于為各個(gè)應(yīng)用進(jìn)程設(shè)定檢查點(diǎn)觸發(fā)條件;檢查點(diǎn)建立單元,用于當(dāng)某個(gè)應(yīng)用進(jìn)程滿足觸發(fā)條件時(shí),為該應(yīng)用進(jìn)程建立檢查點(diǎn)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述觸發(fā)設(shè)定單元包括 狀態(tài)監(jiān)測(cè)單元,用于監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài);響應(yīng)間隔確定單元,用于依據(jù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔,其中,響應(yīng)輸出間隔是指應(yīng)用進(jìn)程相鄰兩次響應(yīng)輸出之間的時(shí)間間隔;第一觸發(fā)單元,用于當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;第二觸發(fā)單元,用于當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件。
11.根據(jù)權(quán)利要求9或10所述的系統(tǒng),其特征在于,所述判斷單元包括第一判斷單元,用于判斷應(yīng)用程序是否進(jìn)行初始化,如果是,則執(zhí)行觸發(fā)設(shè)定單元的操作,如果否,則執(zhí)行以下監(jiān)測(cè)應(yīng)用進(jìn)程的操作。
12.根據(jù)權(quán)利要求9或10所述的系統(tǒng),其特征在于,所述判斷單元包括第二判斷單元,用于判斷當(dāng)前時(shí)刻是否為預(yù)設(shè)的設(shè)定檢查點(diǎn)觸發(fā)條件的時(shí)刻,如果是, 則執(zhí)行觸發(fā)設(shè)定單元的操作;如果否,則執(zhí)行檢查點(diǎn)建立單元的操作。
13.根據(jù)權(quán)利要求9或10所述的系統(tǒng),其特征在于,還包括應(yīng)用類型判斷單元,用于判斷應(yīng)用進(jìn)程運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)是否發(fā)生改變;檢查點(diǎn)建立觸發(fā)單元,用于當(dāng)所述應(yīng)用類型判斷單元判斷出應(yīng)用進(jìn)程在運(yùn)行過程中進(jìn)程狀態(tài)和數(shù)據(jù)狀態(tài)發(fā)生改變時(shí),執(zhí)行所述檢查點(diǎn)建立單元的操作。
14.根據(jù)權(quán)利要求9或10所述的系統(tǒng),其特征在于,所述檢查點(diǎn)建立單元,具體包括, 用于將待建立檢查點(diǎn)的應(yīng)用進(jìn)程進(jìn)行凍結(jié),并記錄所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài),生成與所述待建立檢查點(diǎn)的應(yīng)用進(jìn)程的運(yùn)行狀態(tài)相對(duì)應(yīng)的備份文件。
15.根據(jù)權(quán)利要求9或10所述的系統(tǒng),其特征在于,還包括進(jìn)程恢復(fù)單元,用于當(dāng)系統(tǒng)出現(xiàn)故障后,根據(jù)檢查點(diǎn)處所生成的備份文件,恢復(fù)應(yīng)用進(jìn)程的運(yùn)行狀態(tài)。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,還包括日志記錄單元,用于在各個(gè)應(yīng)用進(jìn)程的運(yùn)行過程中,對(duì)所述各個(gè)應(yīng)用進(jìn)程進(jìn)行日志記錄;所述進(jìn)程恢復(fù)單元,包括進(jìn)程恢復(fù)子單元,用于利用所述備份文件,將應(yīng)用進(jìn)程恢復(fù)至所述備份文件生成時(shí)刻的進(jìn)程運(yùn)行狀態(tài),并利用所述日志記錄將所述應(yīng)用進(jìn)程恢復(fù)到故障發(fā)生時(shí)刻的運(yùn)行狀態(tài)。
17.根據(jù)權(quán)利要求16所述的系統(tǒng),其特征在于,所述日志記錄單元,還包括日志記錄更新單元,用于在檢查點(diǎn)建立單元建立檢查點(diǎn)之后,更新應(yīng)用程序的日志記錄。
全文摘要
本發(fā)明公開了一種建立檢查點(diǎn)的方法和系統(tǒng),該方法包括監(jiān)測(cè)各個(gè)應(yīng)用進(jìn)程的運(yùn)行狀態(tài),確定各個(gè)應(yīng)用進(jìn)程的響應(yīng)輸出間隔;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔大于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以該應(yīng)用進(jìn)程的響應(yīng)輸出作為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;當(dāng)應(yīng)用進(jìn)程的響應(yīng)輸出間隔小于預(yù)設(shè)的建立檢查點(diǎn)的周期時(shí),以到達(dá)預(yù)設(shè)的建立檢查點(diǎn)的時(shí)刻為該應(yīng)用進(jìn)程建立檢查點(diǎn)的觸發(fā)條件;如果當(dāng)前不需要進(jìn)行檢查點(diǎn)觸發(fā)條件的設(shè)定,且某應(yīng)用進(jìn)程當(dāng)前滿足建立檢查點(diǎn)的觸發(fā)條件時(shí),為該應(yīng)用進(jìn)程建立檢查點(diǎn)。本發(fā)明的方法能降低建立檢查點(diǎn)帶來的數(shù)據(jù)開銷,節(jié)省系統(tǒng)資源。
文檔編號(hào)G06F11/14GK102369514SQ201180001571
公開日2012年3月7日 申請(qǐng)日期2011年8月31日 優(yōu)先權(quán)日2011年8月31日
發(fā)明者方應(yīng), 趙琪 申請(qǐng)人:華為技術(shù)有限公司