本申請要求2014年7月29日遞交的美國專利申請No.14/445,369的優(yōu)先權(quán),其全部內(nèi)容通過引用并入本文。
背景技術(shù):
在分布式計算系統(tǒng)(例如,同構(gòu)(簇)、異構(gòu)(網(wǎng)格和云)等)上執(zhí)行具有成千上萬的科學應(yīng)用過程的關(guān)鍵/實時科學應(yīng)用(例如地震數(shù)據(jù)處理、三維儲層不確定性建模和仿真)需要高端計算能力,這可能需要數(shù)天或數(shù)周來處理數(shù)據(jù)以生成所需的解決方案。較長工作執(zhí)行的成功取決于系統(tǒng)的可靠性。由于部署在超級計算機上的大多數(shù)科學應(yīng)用只要其中一個過程故障就可能會故障,因此分布式系統(tǒng)中的容錯是復雜計算環(huán)境中的重要特征。容許任意類型的計算機處理故障反應(yīng)性地通常涉及是否允許對一個或多個過程的狀態(tài)進行定期檢查點設(shè)置的選擇-可廣泛應(yīng)用于高性能計算環(huán)境中的有效技術(shù)。然而,這種技術(shù)具有與選擇最優(yōu)檢查點間隔和檢查點數(shù)據(jù)的穩(wěn)定存儲位置相關(guān)聯(lián)的開銷問題。此外,當前故障恢復模型通常限于幾種類型的計算故障,并且在計算故障的情況下手動地調(diào)用當前故障恢復模型,這限制了它們的有用性和效率。
技術(shù)實現(xiàn)要素:
本公開描述了根據(jù)一個實施方式用于提供用于分布式計算的主動故障恢復模型的方法和系統(tǒng),包括計算機實現(xiàn)的方法、計算機程序產(chǎn)品和計算機系統(tǒng)。一種計算機實現(xiàn)的方法,包括:構(gòu)建多個計算節(jié)點的虛擬樹狀計算結(jié)構(gòu),針對所述虛擬樹狀計算結(jié)構(gòu)的每個計算節(jié)點,由硬件處理器執(zhí)行節(jié)點故障預測模型以計算與所述計算節(jié)點相關(guān)聯(lián)的平均故障間隔時間(MTBF),基于計算出的MTBF與最大和最小閾值之間的比較來確定是否執(zhí)行所述計算節(jié)點的檢查點,將過程從所述計算節(jié)點遷移至作為恢復節(jié)點的不同的計算節(jié)點,以及在所述不同的計算節(jié)點上繼續(xù)執(zhí)行所述過程。
該方案的其他實施方式包括相應(yīng)的計算機系統(tǒng)、裝置和記錄在一個或多個計算機可讀介質(zhì)/存儲設(shè)備上的計算機程序,它們均被配置為執(zhí)行方法的動作。一個或多個計算機的系統(tǒng)可以被配置為通過在系統(tǒng)上的安裝的在操作時使得系統(tǒng)執(zhí)行動作的軟件、固件、硬件或者軟件、固件或硬件的組合來執(zhí)行特定操作或動作。一個或多個計算機程序可以被配置為通過包括指令來執(zhí)行特定操作或動作,所述指令在被數(shù)據(jù)處理裝置執(zhí)行時使得該裝置執(zhí)行動作。
前述和其他實施方式可以各自可選地以單獨或組合的方式包括以下特征中的一個或多個:
第一方案,可與一般實現(xiàn)方式組合,還包括:針對每個計算節(jié)點收集至少計算能力和節(jié)點位置參數(shù)值,基于所述計算節(jié)點的節(jié)點位置參數(shù)將所述計算節(jié)點劃分為集合,以及基于所述計算能力參數(shù)對每個集合內(nèi)的節(jié)點進行排序。
第二方案,可與前述方案中的任一個組合,還包括:識別上限和下限以確定經(jīng)排序的計算節(jié)點的等級,基于所述計算能力參數(shù)以及所述上限和所述下限將每個集合內(nèi)的計算節(jié)點排序為水平等級,將所述水平等級布置和垂直布置記錄到與每個計算節(jié)點相關(guān)聯(lián)的節(jié)點記錄信息表中;以及用指定的恢復節(jié)點填充每個節(jié)點記錄信息表。
第三方案,可與前述方案中的任一個組合,其中,所述上限和所述下限是根據(jù)針對每個計算節(jié)點所收集的計算能力和節(jié)點位置參數(shù)的交繪圖確定的,并且所述垂直布置是至少基于每個計算節(jié)點的節(jié)點位置參數(shù)確定的。
第四方案,可與前述方案中的任一個組合,其中,所述MTBF是至少基于網(wǎng)絡(luò)或數(shù)據(jù)存儲故障計算的。
第五方案,可與前述方案中的任一個組合,還包括:當所述計算節(jié)點的MTBF小于所述下限時創(chuàng)建檢查點;以及將與所述計算節(jié)點相關(guān)聯(lián)的所述下限更新為等于所述MTBF。
第六方案,可與前述方案中的任一個組合,還包括:確定所述計算節(jié)點的故障已經(jīng)發(fā)生;以及使用針對所述計算節(jié)點采取的最后一個檢查點作為過程狀態(tài)。
在本說明書中描述的主題可以在特定實施方式中實現(xiàn),以便實現(xiàn)以下優(yōu)點中的一個或多個。首先,所描述的故障恢復模型系統(tǒng)和方法具有廉價的框架設(shè)計,其即使在發(fā)生部分/嚴重的計算節(jié)點(例如,計算機服務(wù)器等)故障的情況下也允許計算過程的可靠的繼續(xù)操作——增強業(yè)務(wù)連續(xù)性最優(yōu)性。故障恢復模型系統(tǒng)允許繼續(xù)操作并且實現(xiàn)高性能定級以最優(yōu)地執(zhí)行故障的工作執(zhí)行。由于故障恢復模型是主動的(而不是被動的),成本針對重新處理工作進一步降低,并允許成本規(guī)避,并且從故障恢復實踐節(jié)省時間和工作量二者。第二,該框架對于大量的計算節(jié)點是可擴展的。第三,框架設(shè)計考慮了不同的災難恢復原則因素。第四,所描述的系統(tǒng)和方法將極大地使由不必要的過程檢查點設(shè)置造成的開銷最小化。第五,所描述的系統(tǒng)和方法可以被配置為實踐任何類型的負載平衡技術(shù)以優(yōu)化處理。第六,系統(tǒng)和方法不依賴于用于操作的本地式或集中式檢查點存儲。第七,系統(tǒng)和方法依賴于故障預測模型,以控制檢查點過程的最佳布置。第八,所提出的系統(tǒng)和方法設(shè)計允許高度的業(yè)務(wù)連續(xù)性最優(yōu)性。其他優(yōu)點對于本領(lǐng)域普通技術(shù)人員將是顯而易見的。第九,該框架設(shè)計中的故障預測模型可以捕獲和解決任何類型的故障(電源、軟件、硬件、網(wǎng)絡(luò)等)。
在附圖和以下描述中闡述了本說明書的主題的一個或多個實施方式的細節(jié)。根據(jù)描述、附圖和權(quán)利要求,本主題的其他特征、方面和優(yōu)點將變得顯而易見。
附圖說明
圖1A-圖1C示出了根據(jù)一個實施方式用于提供用于分布式計算的主動故障恢復模型的方法。
圖2示出了根據(jù)一個實施方式的可以用于構(gòu)建節(jié)點虛擬樹狀結(jié)構(gòu)的從節(jié)點收集的參數(shù)的示例交繪圖。
圖3示出了根據(jù)一個實施方式的節(jié)點的示例虛擬樹狀結(jié)構(gòu)。
圖4A示出了根據(jù)一個實施方式的在MTBF的計算中使用的節(jié)點性能值。
圖4B示出了根據(jù)一個實施方式的用于計算節(jié)點的MTBF的典型理論公式。
圖5是示出了根據(jù)一個實施方式的關(guān)于MTBF的檢查點間隔布置的圖形。
圖6示出了根據(jù)一個實施方式的當部分節(jié)點故障發(fā)生時節(jié)點的示例虛擬樹狀結(jié)構(gòu)以及如何將恢復模型用于恢復。
圖7示出了根據(jù)一個實施方式的當節(jié)點經(jīng)歷半故障時針對虛擬樹狀結(jié)構(gòu)的節(jié)點的檢查點設(shè)置數(shù)據(jù)存儲節(jié)點。
圖8示出了根據(jù)一個實施方式的參與應(yīng)用計算的節(jié)點。
圖9A和圖9B示出了根據(jù)一個實施方式的關(guān)于獨立和從屬過程的檢查點設(shè)置節(jié)點請求。
圖10是示出了根據(jù)一個實施方式的用于提供用于分布式計算的主動故障恢復模型的示例計算設(shè)備的框圖。
在各個附圖中,相似的附圖標記和名稱指示相似的元件。
具體實施方式
給出以下具體描述以使得本領(lǐng)域任何技術(shù)人員能夠做出和使用所公開的主題內(nèi)容,并且在一個或多個特定實施方式的上下文中提供所述描述。對公開的實施方式的各種修改對本領(lǐng)域技術(shù)人員而言將顯而易見,并且在不背離本公開的范圍的情況下,此處定義的一般原理可適用于其他實施方式和應(yīng)用。因此,本公開并非意在限于所描述的和/或示出的實施方式,而應(yīng)賦予與此處公開的原理和特征一致的最寬范圍。
本公開一般地描述了用于提供用于分布式計算的主動故障恢復模型(FRM)以確保在計算節(jié)點(例如,計算機服務(wù)器等))故障的情況下業(yè)務(wù)連續(xù)性最優(yōu)性的方法和系統(tǒng),包括計算機實現(xiàn)的方法、計算機程序產(chǎn)品和計算機系統(tǒng)。盡管以下描述關(guān)注特定實施方式,但具體實施方式并不意味著針對其他用途并用符合本公開的方式來限制所描述的主題內(nèi)容的適用性。
在分布式計算系統(tǒng)(例如,同構(gòu)(簇)、異構(gòu)(網(wǎng)格和云)等)上執(zhí)行具有成千上萬的過程的關(guān)鍵/實時科學應(yīng)用(例如地震數(shù)據(jù)處理和三維儲層不確定性仿真和建模)需要高端計算能力,并且科學應(yīng)用可能花費數(shù)天或有時數(shù)周來處理數(shù)據(jù)以生成所需解決方案。較長執(zhí)行的成功取決于系統(tǒng)的可靠性。由于部署在超級計算機上的大多數(shù)科學應(yīng)用只要其中一個過程故障就可能會故障,因此分布式系統(tǒng)中的容錯是復雜計算環(huán)境中的重要特征。容許任意類型的計算機處理故障反應(yīng)性地通常涉及是否允許對一個或多個過程的狀態(tài)進行定期檢查點設(shè)置的選擇。
檢查點設(shè)置是可廣泛應(yīng)用于高性能計算環(huán)境的有效技術(shù)并且是在分布式系統(tǒng)中的過程執(zhí)行期間發(fā)生故障的情況下使用的最有效的容錯技術(shù)。在檢查點設(shè)置中,在節(jié)點上執(zhí)行的過程的狀態(tài)被周期性地保存在例如硬盤、閃存等的可靠且穩(wěn)定的存儲器上。在一些實施方式中,檢查點設(shè)置創(chuàng)建描述運行過程(例如,上述“過程的狀態(tài)”)的文件,操作系統(tǒng)可以使用該文件來在稍后重建該過程。例如,檢查點文件可以包含關(guān)于設(shè)置了檢查點的過程的堆棧、堆和寄存器的數(shù)據(jù)。檢查點文件還可以包含待決信號狀態(tài)、信號處理程序、記帳記錄、終端狀態(tài)以及在給定時間點重建過程所需的任意其他必要數(shù)據(jù)的狀態(tài)。因此,使得過程能夠在取得特定檢查點的時刻并從該時刻開始、而不是通過重新開始該過程從起點開始繼續(xù)執(zhí)行。
在高等級,F(xiàn)RM被配置為維持一致的主題應(yīng)用/過程吞吐量,保持檢查點的最小必要集合以優(yōu)化/最小化過程返工執(zhí)行時間,在恢復生存節(jié)點之間實現(xiàn)最佳負載平衡策略(以下更詳細描述的),使無磁盤或輸入/輸出操作最小化,將檢查點數(shù)據(jù)存儲在穩(wěn)定且安全的存儲器中,和/或使存儲器開銷最小化。在一些實例中,F(xiàn)RM還可以通過使用非阻塞檢查點設(shè)置來減少檢查點設(shè)置延遲(過程發(fā)起檢查點請求和全局檢查點過程完成該處理之間的時間),非阻塞檢查點設(shè)置除非在參與恢復的節(jié)點中托管處理工作的情況下否則不阻塞執(zhí)行模式的處理工作。結(jié)果,減小了處理工作執(zhí)行延遲。
更具體地,所描述的FRM在一些實例中被實現(xiàn)為:1)可擴展的虛擬樹狀結(jié)構(gòu),其在無故障計算的情況下支持高性能、穩(wěn)定的計算系統(tǒng),并且在發(fā)生故障的情況下支持恢復資源的高可用性;以及2)在典型實例中使用的故障預測模型(FPM),以通過測量針對每個檢查點請求的有效性和需要來使基于檢查點的算法的協(xié)調(diào)和上下文切換的開銷最小化。
虛擬樹狀結(jié)構(gòu)計算拓撲設(shè)計
分層樹狀計算拓撲設(shè)計允許多個選項,所述多個選項用于分配恢復節(jié)點和可駐留在不同物理位置的遠程指定的檢查點數(shù)據(jù)存儲節(jié)點二者)。在典型的實施方式中,參與分布式計算工作量的所有計算節(jié)點(節(jié)點)被虛擬地放置到由兩個不同參數(shù)確定的虛擬樹狀結(jié)構(gòu)中:1)計算能力(CP-置于Y軸上)和2)節(jié)點位置(NLOC-置于X軸上)以構(gòu)建虛擬樹狀結(jié)構(gòu)。在其他實施方式中,可以在Y軸或X軸上收集和/或使用其他參數(shù),以允許有形/有意義的分類并構(gòu)建所描述的虛擬樹狀結(jié)構(gòu)。
節(jié)點故障預測模型
故障預測長期以來被認為是一個具有挑戰(zhàn)性的研究問題,主要是由于缺乏來自實際生產(chǎn)系統(tǒng)的實際故障數(shù)據(jù)。然而,計算的平均故障間隔時間(MTBF)(用于表示節(jié)點的可靠性的統(tǒng)計參數(shù))可以是針對節(jié)點的不久的將來的預定義時間段內(nèi)的故障率的良好指示符。
在一些實施方式中,在分布式計算環(huán)境中的故障可以被分類為五個不同的類別,其必須被考慮以確保魯棒且全面的故障恢復模型。例如,類別可以包括:1)崩潰故障-服務(wù)器停止,但是正常工作直到它停止為止;2)遺漏故障(接收或發(fā)送遺漏)-服務(wù)器無法響應(yīng)傳入請求、服務(wù)器無法接收傳入消息、服務(wù)器無法發(fā)送消息;3)定時故障-服務(wù)器的響應(yīng)在指定的時間間隔之外;4)響應(yīng)故障(值或狀態(tài)轉(zhuǎn)換故障)-服務(wù)器的響應(yīng)不正確;響應(yīng)的值錯誤,服務(wù)器偏離正確的控制流;5)任意故障-s服務(wù)器可以在任意時間產(chǎn)生任意響應(yīng)。
一般來說,分布式計算節(jié)點結(jié)構(gòu)(例如,節(jié)點N0;N1;N2;……;Nn)通過本地或全局的網(wǎng)絡(luò)連接(例如,互聯(lián)網(wǎng)或其他網(wǎng)絡(luò)云)來連接。每個節(jié)點通常具有其自己的物理存儲器和本地盤(例如,獨立的計算設(shè)備),并且部署穩(wěn)定的共享存儲器用于節(jié)點之間的大數(shù)據(jù)集共享。在科學、實時等的應(yīng)用中,節(jié)點的過程之間的通信可以通過消息傳遞接口(MPI)、被指定用于過程之間的全局發(fā)送/接收請求的共享存儲器和/或其他通信方法來實現(xiàn)。通常每個過程駐留在不同的節(jié)點上,但兩個或更多個單獨的過程可以在單個節(jié)點上執(zhí)行。
假設(shè)過程之間的通信信道是穩(wěn)定和可靠的,并且分布式計算系統(tǒng)中的每個節(jié)點是易失性的(意味著節(jié)點可以由于故障而離開分布式計算系統(tǒng),或者在修復之后加入分布式計算系統(tǒng)——還假設(shè)故障停止模型,其中故障節(jié)點將與計算環(huán)境隔離——節(jié)點的故障將導致故障節(jié)點上的所有過程停止工作(故障節(jié)點上的受影響過程的所有數(shù)據(jù)都丟失)。這里,可以使用FRM恢復/備用節(jié)點(而不是掛起應(yīng)用,直到故障物理上修復)以從每個受影響的過程的最后一個檢查點繼續(xù)處理。
通常特定節(jié)點的節(jié)點故障情形將由駐留在與虛擬樹狀結(jié)構(gòu)中的特定節(jié)點相同等級的任意節(jié)點確定(例如,由節(jié)點的軟件代理預測——每個節(jié)點通常具有其自己的服務(wù)守護進程“代理”)/協(xié)作地(向每個節(jié)點中保存的描述計算環(huán)境的結(jié)構(gòu)的記錄表中的指定的參與節(jié)點)通知。特定節(jié)點故障的預測是允許在不久的將來在一段時間內(nèi)評估故障風險并且采取主動步驟以保存與特定節(jié)點相關(guān)聯(lián)的過程狀態(tài)的更精細進展(更高粒度)的重要指示符。因此,如果在已經(jīng)預測可能發(fā)生故障時,特定節(jié)點發(fā)生嚴重故障,可以規(guī)避大量的重新處理時間,這是由于可以用于恢復與特定節(jié)點相關(guān)聯(lián)的過程的可用節(jié)點狀態(tài)的更精細粒度。典型地,節(jié)點故障的預測與檢查點的獲取/存儲的成本相平衡。
圖1A-圖1C示出了根據(jù)一個實施方式用于提供用于分布式計算的主動故障恢復模型的集合方法100(劃分為子方法100a、100b和100c)。在其他實施方式中,提供用于分布式計算的主動故障恢復模型可以包括更多或更少的步驟/操作,其包括更多的每個所描述的步驟/操作。方法100(或其任意單獨子方法)可以視情況由任何合適的系統(tǒng)、環(huán)境、軟件和/或硬件或系統(tǒng)、環(huán)境、軟件和/或硬件的組合(例如,在下文的圖10中描述的計算機系統(tǒng))來執(zhí)行。在一些實施方式中,方法100的各個步驟可以并行、組合、循環(huán)或以任意順序執(zhí)行。
構(gòu)建計算節(jié)點的虛擬樹狀結(jié)構(gòu)化模型
轉(zhuǎn)向參照圖1A,在102,使用分布式計算系統(tǒng)中的可用節(jié)點來構(gòu)建節(jié)點的虛擬樹狀結(jié)構(gòu)化模型。樹狀結(jié)構(gòu)被認為是“虛擬的”,原因在于節(jié)點的樹實際上沒有布置在樹狀結(jié)構(gòu)中,而是用這種方式映射以按父/子類型關(guān)系進行通信。如本領(lǐng)域普通技術(shù)人員將理解的,計算能力(CP)和節(jié)點位置(NLOC)參數(shù)的使用僅是構(gòu)建根據(jù)本公開的節(jié)點的虛擬樹狀接口模型的一種可能實施方式,并且還可以在其他實施方式中使用其他參數(shù)(例如,計算硬件類型和/或版本、軟件版本等)。CP和NLOC參數(shù)的使用并不意味著以任何方式限制所描述的主題,并且在本公開的范圍內(nèi)設(shè)想了其他參數(shù)。在典型實施方式中,認為CP在節(jié)點的虛擬樹狀結(jié)構(gòu)化模型的Y軸上,并且可以認為NLOC(或其他參數(shù))在節(jié)點的虛擬樹狀結(jié)構(gòu)化模型的X軸上。
在103a,針對參與例如計算過程的處理的分布式計算系統(tǒng)的所有節(jié)點收集至少計算能力(CP)、節(jié)點位置(NLOC)和/或其他參數(shù)。在一些實施方式中,將該收集的數(shù)據(jù)放入數(shù)據(jù)結(jié)構(gòu)、文件等中(例如,節(jié)點記錄信息表)以供虛擬樹創(chuàng)建過程(未示出)使用。在一些實施方式中,每個節(jié)點知道所有其他節(jié)點和相關(guān)聯(lián)的參數(shù)。例如,每個節(jié)點可以有權(quán)訪問包含針對分布式計算系統(tǒng)中的節(jié)點所收集的參數(shù)信息的數(shù)據(jù)結(jié)構(gòu)/文件。該信息可用于允許每個節(jié)點知道其兄弟、后代等。方法100a從103a前進至103b。
在103b,節(jié)點基于它們的位置(NLOC)被劃分成集合。方法100a從103b前進至103c。
在103c,基于節(jié)點CP參數(shù)在每個集合內(nèi)對節(jié)點進行排序。方法100a從103c前進至103d。
在103d,根據(jù)從節(jié)點收集的參數(shù)的交繪圖確定每個等級的下限和上限(即,閾值)?,F(xiàn)在轉(zhuǎn)到圖2,圖2示出了根據(jù)一個實施方式的可以用于構(gòu)建節(jié)點虛擬樹狀結(jié)構(gòu)的從節(jié)點收集的參數(shù)的示例交繪圖。如圖所示,每個節(jié)點(注意,#號/圖案可以表示顏色以指示不同的位置(NLOC)——例如,所有“藍色”繪制的節(jié)點在特定位置,而所有“綠色”繪制的節(jié)點在不同的特定位置)在一些實施方式中可以根據(jù)X軸202上的存儲器參數(shù)值(例如,從低到高-例如8GB-64GB的計算機服務(wù)器存儲范圍)和Y軸204上的CP參數(shù)值(從低到高-例如1.6-3.5GHz處理器時鐘的范圍)來繪制。如普通技術(shù)人員將理解的,這僅是產(chǎn)生交繪圖的許多可能方法中的一個。設(shè)想根據(jù)本公開的任何合適參數(shù)的使用在本公開的范圍內(nèi)。
在一些實施方式中,節(jié)點的水平布置(即節(jié)點是其一部分的水平“線”)是根據(jù)圖2的交繪圖內(nèi)的節(jié)點的位置而基于CP的。例如,基于節(jié)點的CP參數(shù)和位置,節(jié)點可以在虛擬樹狀結(jié)構(gòu)中的底部、中間或頂部位置。在所示的示例中,在一些實例中,水平布置可以通常是最底部附接的節(jié)點將是具有最高CP參數(shù)值(更高的計算能力)的節(jié)點,而節(jié)點在樹狀結(jié)構(gòu)中放置的位置越高,CP參數(shù)值越低(計算能力越低)。
在一些實施方式中,節(jié)點的垂直布置(例如,沿著上述水平“線”的左或右-例如,節(jié)點304b在下面的圖3中放置)取決于不同的可分類準則,例如物理位置、子網(wǎng)、帶寬速度、電源線等,并在默認情況下平衡虛擬樹狀結(jié)構(gòu)。例如,如果在交繪圖中使用的x軸準則引導樹結(jié)構(gòu)中的特定節(jié)點的布置,則虛擬樹狀結(jié)構(gòu)是平衡的并可以用作關(guān)于計算環(huán)境中是否應(yīng)用正確的物理災難恢復設(shè)置的指示符。用于垂直地對節(jié)點進行分離的附加準則可以尤其包括物理位置、子網(wǎng)、帶寬速度、電源線和/或其他附加準則。方法100a從103d前進至103e。
在103e,在節(jié)點記錄信息表中做出每個節(jié)點的水平和/或垂直樹布置條目。方法100a從103e前進至103f。
在103f,每個節(jié)點的節(jié)點記錄信息表用與該節(jié)點的相關(guān)聯(lián)的指定檢查點和/或恢復節(jié)點來填充??梢曰谔摂M樹狀結(jié)構(gòu)中的水平/垂直位置針對虛擬樹狀結(jié)構(gòu)中的每個節(jié)點來確定祖先節(jié)點和后代節(jié)點,并且利用該節(jié)點記錄信息來更新節(jié)點記錄信息表。此外,對于每個特定節(jié)點,可以將另一個節(jié)點(例如,一個或多個直接子代)指定為特定節(jié)點的默認恢復節(jié)點,并且可以將另一節(jié)點指定為特定節(jié)點的檢查點節(jié)點。通常,檢查點節(jié)點不是虛擬樹狀結(jié)構(gòu)中特定節(jié)點的兄弟、子代或祖先節(jié)點。在一些實施方式中,用于特定節(jié)點的指定恢復節(jié)點和檢查點節(jié)點可以是相同的。方法100a從103f前進至104(節(jié)點故障預測模型)。
現(xiàn)在轉(zhuǎn)到圖3,圖3示出了根據(jù)一個實施方式(例如,根據(jù)上面的103a-103f構(gòu)建的)節(jié)點的示例虛擬樹狀結(jié)構(gòu)300。如上面103b中所述,302a、302b、……、302n示出了節(jié)點的位置(NLOC)的集合,例如不同網(wǎng)絡(luò)子網(wǎng)中的位置。如上面103c和103d中所述,304a、304b、……、304n是通過CP參數(shù)排序的節(jié)點,并且通過從節(jié)點收集的參數(shù)的交繪圖劃分為水平等級。例如,節(jié)點304a可以具有比節(jié)點304n更高的CP參數(shù)值。此外,節(jié)點(例如,306a和306b)基于上述(或其他)不同的可分類準則(例如物理位置、子網(wǎng)、帶寬速度等)在同一水平等級內(nèi)垂直地分離。在一些節(jié)點內(nèi)示出了示例唯一節(jié)點標識(節(jié)點ID)值(例如,304n對于等級1、節(jié)點1顯示“N1(1)”,節(jié)點306b對于等級2、節(jié)點13顯示“N2(13)”)等(盡管未示出N2以下的節(jié)點ID)。設(shè)想任何合適的唯一節(jié)點標識符在本公開的范圍內(nèi)。
注意,虛擬樹狀結(jié)構(gòu)的拓撲是自適應(yīng)的。例如,如果將更多或更少的節(jié)點添加至特定位置,則節(jié)點CP值改變,節(jié)點被替換為更高的CP/存儲器模型等,可以更新該NLOC劃分的集合內(nèi)的關(guān)系樹,并且還可以更新與其他NLOC劃分的集合中的其他節(jié)點的關(guān)系。例如,如果將新節(jié)點添加到分布式計算系統(tǒng),則可以再次執(zhí)行虛擬樹狀結(jié)構(gòu)創(chuàng)建過程。在一些實例中,樹可以被部分或全部重構(gòu)。
轉(zhuǎn)向圖4A,圖4A示出了根據(jù)一個實施方式的在MTBF的計算中使用的節(jié)點性能值400a。這里,402是故障開始點(故障開始的時間(或“停機時間”)),而404是恢復開始點404(處理重新開始的時間(或“正常運行時間”))。406是故障之間的時間(“停機時間”和“正常運行時間”之差是在兩個事件之間運行的時間量)。408表示故障。
轉(zhuǎn)向圖4B,圖4B示出了根據(jù)一個實施方式的用于計算節(jié)點的MTB F的典型理論公式400b。這里,MTBF是操作時段的總和(例如,對于節(jié)點)除以觀察到的故障408的數(shù)量(例如,同樣對于該節(jié)點)。如本領(lǐng)域普通技術(shù)人員將理解的,節(jié)點故障的預測中也可以使用利用根據(jù)本公開的使用更多或更少的數(shù)據(jù)值的MTBF或類似值的其他變形,并且結(jié)果動作如下所述。方法100a從104前進至方法100b(圖1B)。
在圖1B,執(zhí)行是否檢查點過程狀態(tài)和/或遷移過程(工作)的決定100b。檢查點時間計算是使(例如,基于節(jié)點的MTBF)將節(jié)點的檢查點帶到其中認為更有必要的時間的系統(tǒng)開銷最小。
在106,將在方法100a中計算的節(jié)點的MTBF與最小閾值(MinLimit)和最大閾值(MaxLimit)進行比較。初始地,MinLimit和MaxLimit被設(shè)置為某個預定的時間值??梢愿鶕?jù)需要改變MinLimit值(例如,以確定何時對節(jié)點執(zhí)行下一次健康檢查)。還可以根據(jù)需要改變MaxLimit(例如,以反映增加的MTBF值)。
如果在106,MTBF在MinLimit和MaxLimit之間(例如,大于或等于MinLimit并且小于或等于MaxLimit),則方法100b前進至108。在108,不采取節(jié)點的檢查點。方法100b從108前進至110。
在110,基于由該節(jié)點的軟件代理針對該節(jié)點執(zhí)行的新的MTBF計算來調(diào)整采取下一個檢查點的時間(根據(jù)故障評估節(jié)點的當前狀態(tài)——在上一時段中發(fā)生了多少故障)。用這種方式,可以根據(jù)節(jié)點的狀態(tài)動態(tài)地調(diào)整檢查點間隔。例如,在第一檢查點之后,如果針對下一檢查點設(shè)置了五分鐘,則等待五分鐘。在下一檢查點之后,基于最近五分鐘內(nèi)的故障(如果有)執(zhí)行MTBF評估?;谒嬎愕腗TBF,可以向上或向下調(diào)整檢查點間隔(例如,如圖5所示)。方法100b從110前進至關(guān)于圖1A描述的104。
如果在106處,MTBF大于MaxLimit,則方法100b前進至112。在112,不采取節(jié)點的檢查點,并且MaxLimit被更新為等于MTBF。在一些實施方式中,MaxLimit高于特定閾值可以發(fā)起關(guān)于MaxLimit太高的警報的生成。方法100b從112前進至110。
如果在106處,MTBF小于MinLimit,則方法100b前進至114。在114,采取節(jié)點的檢查點,并且MinLimit被更新為等于當前計算的MTBF值。在一些實施方式中,檢查點可以尤其包括過程狀態(tài)(寄存器內(nèi)容)、存儲器內(nèi)容、通信狀態(tài)(例如,打開的文件和消息信道)、相關(guān)的內(nèi)核上下文和/或排隊的工作。方法100b從114前進至116。
在116,執(zhí)行關(guān)于工作(過程)是否應(yīng)當被遷移的決定是基于主動故障恢復的閾值(例如,在106確定的MTBF<MinLimit值)??梢愿鶕?jù)特定節(jié)點中的故障頻率主觀地強制閾值。如果確定不應(yīng)當遷移工作,則方法100b前進至110。如果確定應(yīng)當遷移工作,則方法100b前進至118以執(zhí)行工作遷移。
現(xiàn)在轉(zhuǎn)向圖5,圖5是示出了根據(jù)一個實施方式的關(guān)于MTBF的檢查點間隔布置的圖形。如圖所示,隨著MTBF減小(例如,分別與示例檢查點間隔相對應(yīng)的504a、504b和504c),檢查點之間的時間(檢查點間隔)(例如,502a、502b和502c)變短。隨著MTBF增加(例如,在504d),檢查點間隔減小(例如,在502d)。這是為了確保隨著故障風險增加(由于MTBF減少),如果節(jié)點故障則以較短的間隔為節(jié)點創(chuàng)建檢查點以最小化開銷并且最大化業(yè)務(wù)連續(xù)性的最優(yōu)性是有利的(可以在更接近實際故障時間的點恢復,以使損失的處理最小化)。
現(xiàn)在轉(zhuǎn)到圖1C,圖1C示出了用于在節(jié)點之間遷移工作的方法流100c。
在119a,恢復節(jié)點軟件代理協(xié)商以確定哪個節(jié)點應(yīng)當托管要遷移的工作。在一些實施方式中,協(xié)商用于負載平衡目的。在其他實施方式中,可以使用其他參數(shù)/準則用于協(xié)商目的。方法100c從119a前進至109b。
在119b,執(zhí)行關(guān)于節(jié)點的故障是否已經(jīng)發(fā)生的確定。如果確定沒有發(fā)生節(jié)點的故障,則方法100c前進至119c。如果確定發(fā)生了故障,則方法100c前進至119d。
在119c,提取節(jié)點的過程狀態(tài)。在一些實施方式中,過程狀態(tài)可以尤其包括過程狀態(tài)(寄存器內(nèi)容)、存儲器內(nèi)容、通信狀態(tài)(例如,打開的文件和消息信道)、相關(guān)的內(nèi)核上下文和/或排隊的工作。方法100c從119c前進至119e。
在119d處,使用最后一個檢查點來代替當前節(jié)點狀態(tài)(因為節(jié)點已經(jīng)故障并且“停機”/不可用于從中檢索過程狀態(tài))。在一些實施方式中,檢查點可以尤其包括過程狀態(tài)(寄存器內(nèi)容)、存儲器內(nèi)容、通信狀態(tài)(例如,打開的文件和消息信道)、相關(guān)的內(nèi)核上下文和/或排隊的工作。方法100c從119d前進至119e。
在119e,故障的祖先恢復節(jié)點軟件代理將保持向新的恢復節(jié)點轉(zhuǎn)發(fā)信號/通信(例如,通過以通信協(xié)議級搜索消息)。注意,在一些實施方式中,如果故障節(jié)點被修復,則轉(zhuǎn)發(fā)信號/通信的責任可以由修復的節(jié)點執(zhí)行(這時將向修復的節(jié)點移交轉(zhuǎn)發(fā)信號/通信的過程)。方法100c從119e前進至119f。
在119f,執(zhí)行從“停機”節(jié)點到恢復節(jié)點的過程轉(zhuǎn)移。轉(zhuǎn)移后的狀態(tài)通常包括過程的地址空間、執(zhí)行點(寄存器內(nèi)容)、通信狀態(tài)(例如,打開的文件和消息信道)和/或其他操作系統(tǒng)相關(guān)狀態(tài)。方法100c從119f前進至119g。
在119g,該過程繼續(xù)在恢復節(jié)點上執(zhí)行。方法100c從119g停止。返回圖1B,針對特定停機節(jié)點的方法118從118停止。在典型實施方式中,如果已經(jīng)對故障節(jié)點執(zhí)行了工作遷移,則故障節(jié)點與當前計算運行隔離,并且故障節(jié)點即使被修復也不能返回到相同的工作族并參與(例如,從虛擬樹狀結(jié)構(gòu)中的一個或多個節(jié)點的節(jié)點記錄信息表中將節(jié)點移除,并且必須等待直到新的計算運行開始)。對于使用節(jié)點故障預測模型的不同節(jié)點,處理返回到圖1A。在其他實施方式中,可以修復故障節(jié)點(例如,修復的節(jié)點可以被重新集成到虛擬樹狀結(jié)構(gòu)節(jié)點記錄信息表中,由節(jié)點故障預測模型過程,并且開始處理、轉(zhuǎn)發(fā)信號/通信等)。
返回圖1A所示,在104處,在一些實施方式中,執(zhí)行節(jié)點故障預測模型以尤其評估每個節(jié)點的當前機器狀態(tài),以確定是否執(zhí)行節(jié)點的檢查點,將工作(過程)從一個節(jié)點遷移至另一個節(jié)點等。每個節(jié)點的MTBF的計算由軟件代理計算,該軟件代理在駐留在樹結(jié)構(gòu)中與要針對故障條件評估的特定節(jié)點相同等級中的至少一個節(jié)點上和/或在特定節(jié)點自身上駐留/執(zhí)行。例如,如圖3所示,節(jié)點304b所在的等級中的任何節(jié)點可以確定節(jié)點304b的MTBF,并向適當節(jié)點通知該確定。
如104所示,在一些實施方式中,可以在故障預測模型中使用的值包括例如通過“健康檢查”類型/“心跳”程序產(chǎn)生的一個或多個系統(tǒng)日志105a(例如,網(wǎng)絡(luò)連接故障/拒絕、分組丟失、計算速度降級、低內(nèi)存條件、存儲/網(wǎng)絡(luò)問題等),對檢查的時間段的調(diào)整105b(例如,表示等待執(zhí)行下一次健康檢查的時間段的動態(tài)計算的值,該下一次健康檢查是由參與計算的每個節(jié)點上執(zhí)行的功能執(zhí)行的)。在動態(tài)計算檢查的時間段值105b之后調(diào)用該功能以確定下一時間段和周期性地(例如,tp時間段)收集的故障類別字典105c。在一些實施方式中,可以對問題、故障等的類型進行加權(quán)(例如,網(wǎng)絡(luò)/存儲更重要等)。
在105d處,通過用主觀指派給每個故障類別的權(quán)重值對每個故障進行分類,來計算故障類型頻率,以在計算每個tp時間段的故障頻率時度量影響。例如,可以監(jiān)測電力供應(yīng)和網(wǎng)絡(luò)連接性,并且可以針對特定時間段tp計算它們的故障類型頻率。在其他實施方式中,可以使用任何適當?shù)乃惴▉碛嬎愎收项愋皖l率。在105e,在一些實施方式中,可以通過將1除以計算的故障類型頻率來計算MTBF。
圖6示出了根據(jù)一個實施方式的當部分節(jié)點故障發(fā)生時節(jié)點的示例虛擬樹狀結(jié)構(gòu)600以及如何將恢復模型用于恢復。實現(xiàn)虛擬樹狀結(jié)構(gòu)中的恢復首先通過來自要恢復的故障節(jié)點的后代的同一等級的任何節(jié)點的通知而實現(xiàn),否則將通知發(fā)送給故障節(jié)點的祖先。
在一個示例中,如果節(jié)點602故障,則節(jié)點602的直接子代(后代)604或具有比該父節(jié)點更高的計算能力的進一步后代606將檢測到已經(jīng)出現(xiàn)問題(例如,與節(jié)點602的連接丟失、來自節(jié)點602的數(shù)據(jù)接收停止、節(jié)點502的心跳檢測指示節(jié)點故障等)。問題是哪些其他節(jié)點應(yīng)該替代節(jié)點602以處理節(jié)點602執(zhí)行的工作,以優(yōu)化業(yè)務(wù)連續(xù)性。選項是父節(jié)點604或后代節(jié)點606或608。在這種情況下,可以向節(jié)點606或608指派節(jié)點602的工作(由于其高得多的計算能力CP),以在更短的時間段內(nèi)完成最初在節(jié)點602上運行的工作,以優(yōu)化業(yè)務(wù)連續(xù)性。使用節(jié)點602的后代的決定還可以取決于由后代節(jié)點的負載平衡分析所確定的子節(jié)點的負載。
通過分配來自節(jié)點的兄弟后代的任何活動的、可用的和輕微加載(由系統(tǒng)中的負載平衡確定的)節(jié)點(如果故障節(jié)點的直接后代中沒有一個活動)來恢復任何故障的節(jié)點被稱為代-停止。例如,如果節(jié)點610故障,則節(jié)點610的子代應(yīng)該檢測節(jié)點610的故障。然而,在該示例中,節(jié)點610的所有子代也都停機。然后問題變成哪個(哪些)節(jié)點應(yīng)當代替節(jié)點510來完成節(jié)點510的工作。這里,向祖先節(jié)點612通知(例如,通過駐留在兩個不同節(jié)點上的兩個工作之間的通信協(xié)議——例如消息傳遞接口(MPI)和/或其他協(xié)議)節(jié)點610的故障,并且將尋找其相同等級的親戚來接管至少故障節(jié)點610的工作(以及在一些實例中也是節(jié)點610的后代的工作)的處理。這里,節(jié)點612與節(jié)點614通信(注意節(jié)點614可以在不同的子網(wǎng)中-參照圖3)以查看其及其子代是否可以承擔故障節(jié)點610的工作的處理。在該示例中,假設(shè)節(jié)點614接受該故障恢復任務(wù),則視情況,其可以將工作委托給其直接子代,所述直接子代可以將工作委托給它們的子代等(例如,基于計算能力、主題、負載平衡等)以優(yōu)化業(yè)務(wù)連續(xù)性。還要注意,在該示例中,節(jié)點614的一個或兩個直接子節(jié)點還可以與不同父節(jié)點的子節(jié)點(例如,節(jié)點616)通信,以便也參與輔助對最初鏈接到故障節(jié)點610或者節(jié)點614及其對其右邊的兄弟618(或該等級的其他節(jié)點612)的工作的操作。通常在這種情況下,應(yīng)該從最自下而上(具有更高的CP值)的節(jié)點開始執(zhí)行恢復,其中其他兄弟的后代節(jié)點的最近的后代節(jié)點將參與葉節(jié)點的恢復,直到那時葉節(jié)點才會參與恢復其祖先樹。
現(xiàn)在轉(zhuǎn)向圖7,圖7示出了根據(jù)一個實施方式的當節(jié)點經(jīng)歷半故障時針對虛擬樹狀結(jié)構(gòu)的節(jié)點的檢查點設(shè)置數(shù)據(jù)存儲節(jié)點。例如,節(jié)點610具有用于存儲檢查點數(shù)據(jù)的指定的一個或多個檢查點設(shè)置數(shù)據(jù)存儲節(jié)點702。同樣,節(jié)點704還具有被指定為節(jié)點610的檢查點設(shè)置數(shù)據(jù)存儲節(jié)點的一個或多個檢查點設(shè)置數(shù)據(jù)存儲節(jié)點702。在一些實施方式中,多個節(jié)點可以共享相同的檢查點設(shè)置數(shù)據(jù)存儲節(jié)點。在其它實施方式中,檢查點設(shè)置數(shù)據(jù)存儲節(jié)點702僅由一個節(jié)點或幾個節(jié)點(例如,在相同子網(wǎng)中、兄弟等)使用以擴展檢查點設(shè)置數(shù)據(jù)存儲節(jié)點的數(shù)量,使得一個或多個檢查點數(shù)據(jù)存儲節(jié)點的故障不會導致大量檢查點設(shè)置數(shù)據(jù)的丟失。如果節(jié)點故障,那么具有恢復該節(jié)點任務(wù)的節(jié)點可以訪問節(jié)點記錄信息表,以確定故障節(jié)點的默認指定恢復節(jié)點和檢查點設(shè)置數(shù)據(jù)存儲節(jié)點。
在典型實施方式中,每個過程僅維護一個永久性檢查點。這減少了總體存儲開銷,并消除了對垃圾收集活動以清理未使用/放棄的檢查點的需要。在一些實施方式中,每個節(jié)點的檢查點數(shù)據(jù)被保存在處于節(jié)點的相同等級(例如,兄弟)的節(jié)點中,因為那些節(jié)點同時故障的概率較低。在典型實施方式中,檢查點數(shù)據(jù)存儲節(jié)點用這種方式實現(xiàn),以使捕獲本地工作的安全狀態(tài)的風險最小化。檢查點數(shù)據(jù)存儲節(jié)點具有用于當前相關(guān)工作的信息,該執(zhí)行模式包括駐留在用于那些工作的存儲器中或在隊列中排隊的工作集數(shù)據(jù)。
現(xiàn)在轉(zhuǎn)到圖8,圖8示出了根據(jù)一個實施方式的參與應(yīng)用計算的節(jié)點。如前所述,將由節(jié)點的軟件代理發(fā)起檢查點請求,在所述節(jié)點的軟件代理中預測模型的程度或期望的可靠性需要檢查點。如果節(jié)點具有獨立的過程(例如,線程等)X,則其僅使用其自身在樹中的相應(yīng)檢查點存儲節(jié)點執(zhí)行檢查設(shè)置動作,而不將請求傳播到其它節(jié)點(由于沒有其他節(jié)點參與獨立過程X)。
然而,如果過程是從屬過程(例如,依賴于其他過程),則將應(yīng)用最小檢查點方法,其中檢查點發(fā)起者節(jié)點識別自上一次檢查點/正常通信以來與其通信的所有過程,并將向它們?nèi)總鞑フ埱?。在接收到請求時,每個過程進而識別已經(jīng)與其通信的所有過程,并向它們傳播請求等直到不能識別更多過程為止。
參照圖8,識別從屬過程節(jié)點802和獨立過程節(jié)點804二者。例如,對于示例從屬過程節(jié)點,節(jié)點806是用于特定過程的頂級節(jié)點。由相應(yīng)的箭頭指示執(zhí)行從屬于節(jié)點806的過程的過程的節(jié)點。對于從屬過程節(jié)點(例如,806),故障被(例如,父節(jié)點810)傳送給所有參與的過程節(jié)點(例如,812等),原因在于所有參與的過程節(jié)點一起工作,并且其他節(jié)點有必要保存它們過程的狀態(tài)直到恢復其他從屬過程節(jié)點(例如,806)為止,并且然后從屬過程可以在它們停止的地方繼續(xù)。然而,節(jié)點808正在執(zhí)行獨立的過程并且沒有從屬,所以恢復僅需要關(guān)注獨立節(jié)點本身。
參照圖9A和圖9B,圖9A和圖9B分別示出了根據(jù)一個實施方式的關(guān)于獨立過程900a和從屬過程900b的檢查點設(shè)置節(jié)點請求。圖9A示出了獨立過程。例如,如果獨立過程N3 902接收到檢查點請求,則執(zhí)行N3的檢查點而不考慮其他過程。在從屬過程N2 902b如圖9B所示的情況下,一旦接收到檢查點請求,過程N2 902b就將檢查點請求傳遞到直接從屬于它的過程(例如從屬過程N3 904b)。從屬過程904B然后將檢查點請求傳遞到直接從屬于它的過程(例如,從屬過程N41 906b和N46 908b)等。注意,由于通知檢查點/向從屬過程請求檢查點的時間,對于低級從屬過程(例如,從屬過程N41 906b和N46 908b)的檢查點可能稍微晚于上述“父”從屬過程(例如,從屬過程N3 904b)的檢查點。在一些實施方式中,每個從屬過程可以向請求從屬過程通知其檢查點設(shè)置操作何時完成。
轉(zhuǎn)向圖10,圖10是示出了根據(jù)一個實施方式的用于提供用于分布式計算的主動故障恢復模型的示例計算設(shè)備1000的框圖。在一些實施方式中,EDCS 1000包括計算機1002和網(wǎng)絡(luò)1030。在其他實施方式中,多個計算機和/或網(wǎng)絡(luò)可以一起工作以執(zhí)行上述方法。
示出的計算機1002旨在包括計算設(shè)備(例如計算機服務(wù)器),但是還可以包括臺式計算機、膝上型/筆記本計算機、無線數(shù)據(jù)端口、智能電話、個人數(shù)字助理(PDA)、平板計算設(shè)備、這些設(shè)備內(nèi)的一個或多個處理器、或任意其他合適的處理設(shè)備(包括計算設(shè)備的物理和/或虛擬實例)。計算機1002可以包括計算機,該計算機包括可以接受用戶信息的輸入設(shè)備(例如鍵區(qū)、鍵盤、觸摸屏或其他設(shè)備(未示出))以及輸出設(shè)備(未示出),該輸出設(shè)備傳達與計算機1002的操作相關(guān)聯(lián)的信息,包括數(shù)字數(shù)據(jù)、視覺和/或音頻信息或用戶界面。
在一些實施方式中,計算機1002可以用作客戶端和/或服務(wù)器。在典型的實施方式中,計算機1002充當并行處理節(jié)點,以及還充當根據(jù)本公開的軟件代理或其他應(yīng)用、過程、方法等(即使未示出)(例如,應(yīng)用1007)。示出的計算機1002可通信地與網(wǎng)絡(luò)1030耦接。在一些實施方式中,計算機1002的一個或多個組件可以被配置為在并行處理和/或基于云計算的環(huán)境中操作。計算機1002的實施方式也可以使用消息傳遞接口(MPI)或其他接口通過網(wǎng)絡(luò)1030進行通信。
在更高的層面,計算機1002是可操作為接收、發(fā)送、處理、存儲或管理與根據(jù)一個實施方式提供用于分布式計算的主動故障恢復模型相關(guān)聯(lián)的數(shù)據(jù)和信息的電子計算設(shè)備。根據(jù)一些實施方式,計算機1002還可以包括或通信地耦接到仿真服務(wù)器、應(yīng)用服務(wù)器、電子郵件服務(wù)器、網(wǎng)絡(luò)服務(wù)器、緩存服務(wù)器、流傳輸數(shù)據(jù)服務(wù)器、分析服務(wù)器和/或任何其他服務(wù)器。
計算機1002可以通過網(wǎng)絡(luò)1030從應(yīng)用1007(例如,在另一計算機1002上執(zhí)行的應(yīng)用)接收請求,并通過在適當?shù)能浖?yīng)用1007中處理所述請求來響應(yīng)于所接收的請求。另外,還可以從內(nèi)部用戶(例如,從命令控制臺或通過其他適當?shù)脑L問方法)、外部或第三方、其他自動化應(yīng)用以及任意其他適當?shù)膶嶓w、個人、系統(tǒng)或計算機向計算機1002發(fā)送請求。
計算機1002的每個組件可以使用系統(tǒng)總線1003進行通信。在一些實施方式中,計算機1002的任意和/或所有組件(不論硬件和/或軟件)可以使用應(yīng)用編程接口(API)1012和/或服務(wù)層1013通過系統(tǒng)總線1003與彼此和/或接口1004進行接口連接。API 1012可以包括針對例程、數(shù)據(jù)結(jié)構(gòu)和對象類的規(guī)范。API 1012可以是獨立于或依賴于計算機語言,并且指的是完整的接口、單個功能或甚至是一組API。服務(wù)層1013向計算機1002和/或計算機1002是其一部分的系統(tǒng)提供軟件服務(wù)。計算機1002的功能可以對于使用該服務(wù)層的所有服務(wù)消費者是可訪問的。軟件服務(wù)(例如由服務(wù)層1013提供的軟件服務(wù))通過定義的接口提供可重用的、定義的業(yè)務(wù)功能。例如,接口可以是以JAVA、C++或以可擴展標記語言(XML)格式或其它合適格式提供數(shù)據(jù)的其它合適語言所編寫的軟件。雖然被示為計算機1002的集成組件,但是備選實施方式可以將API 1012和/或服務(wù)層1013示為作為相對于計算機1002的其他組件獨立的組件。此外,在不脫離本公開的范圍的情況下,API 1012和/或服務(wù)層1013的任意或所有部分可以被實現(xiàn)為另一軟件模塊、企業(yè)應(yīng)用或硬件模塊的子模塊或副模塊。
計算機1002包括接口1004。雖然在圖10中被示為單個接口1004,但是可以根據(jù)計算機1002的特定需要、期望或特定實現(xiàn)而使用兩個或更多個接口1004。接口1004由計算機1002用于與連接到網(wǎng)絡(luò)1030的分布式環(huán)境(包括并行處理環(huán)境)(無論是否示出)中的其它系統(tǒng)通信。通常,接口1004包括以合適的組合以軟件和/或硬件編碼的邏輯,并且可操作為與網(wǎng)絡(luò)1030通信。更具體地,接口1004可以包括支持與通過網(wǎng)絡(luò)1030的通信相關(guān)聯(lián)的一個或多個通信協(xié)議的軟件。
計算機1002包括處理器1005。雖然在圖10中被示為單個處理器1005,但是可以根據(jù)計算機1002的特定需要、期望或特定實現(xiàn)而使用兩個或更多個處理器。通常,處理器1005執(zhí)行指令并操縱數(shù)據(jù)以執(zhí)行計算機1002的操作。具體地,處理器1005執(zhí)行提供用于分布式計算的主動故障恢復模型所需的功能。
計算機1002還包括保存計算機1002和/或計算機作為其一部分的系統(tǒng)的其他組件的數(shù)據(jù)的存儲器1006。雖然在圖10中被示為單個存儲器1006,但是可以根據(jù)計算機1002的特定需要、期望或特定實現(xiàn)而使用兩個或更多個存儲器。雖然存儲器1006被示為計算機1002的集成組件,但是在備選實施方式中,存儲器1006可以在計算機1002外部。在一些實施方式中,存儲器1006可以保存和/或引用相對于方法100描述的任何數(shù)據(jù)(例如,檢查點數(shù)據(jù)覆蓋得分、同一性得分、深度比等)和/或根據(jù)本公開的任意其他適當?shù)臄?shù)據(jù)中的一個或多個。
應(yīng)用1007是根據(jù)計算機1002和/或計算機1002是其一部分的系統(tǒng)的特定需要、期望或特定實現(xiàn)來提供功能(尤其是針對一些實施方式提供用于分布式計算的主動故障恢復模型所需的功能)的算法軟件引擎。例如,應(yīng)用1007可以用作軟件主機、科學處理應(yīng)用、檢查點設(shè)置應(yīng)用、恢復應(yīng)用和/或根據(jù)本公開的任意其他類型的應(yīng)用(無論是否示出)(或其一部分)。盡管被示為單個應(yīng)用1007,但是應(yīng)用1007可以被實現(xiàn)為計算機1002上的多個應(yīng)用1007。另外,雖然被示出為與計算機1002集成,但是在備選實施方式中,應(yīng)用1007可以在計算機1002外部并且與計算機802分開執(zhí)行。
可以存在與執(zhí)行根據(jù)本公開的功能的分布式計算機系統(tǒng)相關(guān)聯(lián)的任意數(shù)量的計算機1002。此外,在不脫離本公開的范圍的情況下,術(shù)語“客戶端”、“用戶”和其他適當?shù)男g(shù)語可以適當?shù)鼗Q使用。此外,本公開包含許多用戶/過程可以使用一個計算機1002,或者一個用戶/過程可以使用多個計算機1002。
在本說明書中描述的主題和功能操作的實施可以在數(shù)字電子電路中、在有形實施的計算機軟件或固件中、在計算機硬件中實現(xiàn),包括在本說明書中公開的結(jié)構(gòu)及其結(jié)構(gòu)等同物、或它們中的一個或多個的組合。在本說明書中描述的主題的實施可以被實現(xiàn)為在有形非瞬時計算機存儲介質(zhì)上編碼的一個或多個計算機程序,即計算機程序指令的一個或多個模塊,用于由數(shù)據(jù)-處理裝置執(zhí)行或者控制數(shù)據(jù)數(shù)據(jù)處理裝置的操作。備選地或另外地,程序指令可以在人工產(chǎn)生的傳播信號(例如,機器產(chǎn)-生的電、光或電磁信號)上編碼,所述信號被產(chǎn)生以對信息進行編碼以傳輸?shù)胶线m的接收機裝置,以由數(shù)據(jù)處理裝置執(zhí)行。計算機存儲介質(zhì)可以是機器可讀存儲設(shè)備、機器可讀存儲基板、隨機或串行存取存儲器設(shè)備、或它們中的一個或多個的組合。
術(shù)語“數(shù)據(jù)處理裝置”是指數(shù)據(jù)處理硬件,并且涵蓋用于處理數(shù)據(jù)的所有類型的裝置、設(shè)備和機器,例如包括可編程處理器、計算機、多處理器或計算機。該裝置還可以是或還包括專用邏輯電路,例如中央處理單元(CPU)、協(xié)處理器(例如,圖形/視覺處理單元(GPU/VPU))、FPGA(現(xiàn)場可編程門陣列)-或ASIC(專用集成電路)。在一些實施方式中,數(shù)據(jù)處理裝置和/或?qū)S眠壿嬰娐房梢允腔谟布?或基于軟件的。可選地,裝置可以包括為計算機程序創(chuàng)建運行環(huán)境的代碼,例如,構(gòu)成處理器固件、協(xié)議棧、數(shù)據(jù)庫管理系統(tǒng)、操作系統(tǒng)或者上述各項中的一項或多項的組合的代碼。本公開考慮具有或不具有常規(guī)操作系統(tǒng)(例如LINUX、UNIX、WINDOWS、MAC OS、ANDROID、IOS或任意其它合適的常規(guī)操作系統(tǒng))的數(shù)據(jù)處理裝置的使用。
可以以任何形式的編程語言(包括編譯或解釋語言、或聲明或程序語言)來寫計算機程序(也可以稱作或描述為程序、軟件、軟件應(yīng)用、模塊、軟件模塊、腳本或代碼),所述編程語言包括:編譯或解釋語言、或者聲明或程序語言,并且可以以任何形式來部署計算機程序,包括部-署為單獨的程序或者部署為適合于用于計算環(huán)境的模塊、組件、子例程、或者其它單元。計算機程序可以、但無需與文件系統(tǒng)中的文件相對應(yīng)。程序可以存儲在保存其他程序或數(shù)據(jù)(例如,存儲在標記語言文檔中的一個或多個腳本)的文件的一部分中、專用于所討論的程序的單個文件中、或者存儲在多個協(xié)同文件中(例如,存儲一個或多個模塊、子程序或代-碼部分的文件)。計算機程序可以被部署為在一個計算機上或者在位于一個站點或分布在多個站點并且通過通信網(wǎng)絡(luò)互連的多個計算機上執(zhí)行。盡管各圖中所示的程序的部分被示為通過各種對象、方法或其他過程實現(xiàn)各種特征和功能的單獨模塊,但是視情況程序可以替代地包括多個子模塊、第三方服務(wù)、組件、庫等。相反,各種組件的特征和功能可以視情況組合成單個組件。
本說明書中描述的過程和邏輯流可以由一個或多個可編程計算機來執(zhí)行,所述一個或多個可編程計算機執(zhí)行一個或多個計算機程序以通過操作輸入數(shù)據(jù)并且產(chǎn)生輸出來執(zhí)行功能。過程和邏輯流也可以由專用邏輯電路(例如CPU、FPGA或ASIC)來執(zhí)行,并且裝置也可以實現(xiàn)為專用邏輯電路(例如CPU、FPGA或ASIC)。
適合于執(zhí)行計算機程序的計算機可以基于通用或?qū)S梦⑻幚砥?、這兩者或任何其它類型的CPU。通常,CPU將從只讀存儲器(ROM)或隨機存取存儲器(RAM)或者這二者接收指令和-數(shù)據(jù)。計算機的必不可少的元件是用于執(zhí)行或運行指令的CPU和用于存儲指令和數(shù)據(jù)的一個或多個存儲器設(shè)備。通常,計算機還將包括用于存儲數(shù)據(jù)的一個或多個大容量存儲設(shè)備(例-如,磁盤、磁光盤或光盤),或可操作耦接以便從所述一個或多個大容量存儲設(shè)備接收或向其發(fā)送數(shù)據(jù)。然而,計算機不需要具有這些設(shè)備。此外,計算機可以嵌入在另一設(shè)備中,例如,移動電話、個人數(shù)字助理(PDA)、移動音頻或視頻播放器、游戲機、全球定位系統(tǒng)(GPS)接收機或者便攜式存儲設(shè)備(例如,通用串行總線(USB)閃存驅(qū)動器),僅舉幾個例子。
適合于存-儲計算機程序指令和數(shù)據(jù)的計算機可讀介質(zhì)(視情況,暫時或非暫時的)包括所有形式的非易失性存儲器、介質(zhì)和存儲器設(shè)備,其包括例如半導體存儲器設(shè)備、例如可擦除可編程只讀存儲器(EPROM)-、電可擦除可編程只讀存儲器(EEPROM)和閃存設(shè)備;磁盤(例如內(nèi)部硬盤或可移動盤);磁光盤-;以及CD-ROM、DVD+/-R、DVD-RAM和DVD-ROM盤。存儲器可以存儲各種對象或數(shù)據(jù),包括:高速緩存區(qū)、類(class)、框架、應(yīng)用、備份數(shù)據(jù)、工作、網(wǎng)頁、網(wǎng)頁模板、數(shù)據(jù)庫表格、存儲商業(yè)信息和/或動態(tài)信息的存儲庫、以及包括任意參數(shù)、變量、算法、指令、規(guī)則、約束、對其的引用在內(nèi)的任何其它適當?shù)男畔?。另外,存儲器可以包括任意其他適當?shù)臄?shù)據(jù),諸如日志、策略、安全或訪問數(shù)據(jù)、報告文件等。處理器和存儲器可以由專用邏輯電路來補充或者并入到專用邏輯電路中。
為了提供與用戶的交互,本說明書中描述的主題的實施可以實現(xiàn)在計算機上,該計算機具有用于向用戶顯示信息的顯示設(shè)備(例如,CRT(陰極射線管)、LCD(液晶顯示器)、LED(發(fā)光二極管)或等離子監(jiān)視器)和用戶可以向計算機提供輸入的鍵盤和指點設(shè)備(例如,鼠標、軌跡球或軌跡板)。還可以使用觸摸屏(諸如具有壓敏性的平板計算機表面、使用電容或電感測的多點觸摸屏或其它類型的觸摸屏)向計算機提供輸入。其它類型的設(shè)備也可以用于提供與用戶的交互;例如,提供給用戶的反饋可以是任何類型的傳感反饋,例如,視覺反饋、聽覺反饋或觸覺反饋;以及可以以任意形式(包括聲音、語音或觸覺輸入)來接收來自用戶的輸入。此外,計算機可以通過向用戶使用的設(shè)備發(fā)送文檔或者從該設(shè)備接收文檔,來與用戶交互;例如,通過響應(yīng)于從用戶客戶端設(shè)備上的網(wǎng)絡(luò)瀏覽器接收到的請求而向所述網(wǎng)絡(luò)瀏覽器發(fā)送網(wǎng)頁,來與用戶交互。
術(shù)語“圖形用戶界面”或GUI可以以單數(shù)或復數(shù)形式使用,以描述一個或多個圖形用戶界面以及特定圖形用戶界面的每一次顯示。因此,GUI可以表示任意圖形用戶界面,包括但不限于網(wǎng)絡(luò)瀏覽器、觸摸屏或處理信息并且有效地向用戶呈現(xiàn)信息結(jié)果的命令行界面(CLI)。通常,GUI可以包括多個UI元素,其中一些或全部與網(wǎng)絡(luò)瀏覽器相關(guān)聯(lián),諸如可由商業(yè)套件用戶操作的交互式字段、下拉列表和按鈕。這些和其他UI元素可以與網(wǎng)絡(luò)瀏覽器的功能相關(guān)或表示網(wǎng)絡(luò)瀏覽器的功能。
本說明書中描述的主題的實施可以實現(xiàn)在計算系統(tǒng)中,該計算系統(tǒng)包括后端-組件(例如,數(shù)據(jù)服務(wù)器)、或包括中間件組件(例如,應(yīng)用服務(wù)器)、或者包括前端組件(例如,具有用戶通過其可以與本說明書中描述的主題的實現(xiàn)進行交互的圖形用戶界面或者網(wǎng)絡(luò)瀏覽器的客戶端計算機)、或者一個或多個此類后端組件、中間件組件或前端--組件的任意組合??梢酝ㄟ^任意形式或方式的有線和/或無線數(shù)字數(shù)據(jù)通信(例如,通信網(wǎng)絡(luò))來互連系統(tǒng)的組件。通信網(wǎng)絡(luò)的示例包括局域網(wǎng)(LAN)、無線電接入網(wǎng)絡(luò)(RAN)、城域網(wǎng)(MAN)、廣域網(wǎng)(WAN)、全球微波接入互操作性(WIMAX)、使用例如802.11a/b/g/n和/或802.20的無線局域網(wǎng)(WLAN)、互聯(lián)網(wǎng)的全部或一部分、和/或一個或多個位置處的任意其它通信系統(tǒng)。網(wǎng)絡(luò)可以在網(wǎng)絡(luò)地址之間傳遞例如互聯(lián)網(wǎng)協(xié)議(IP)分組、幀中繼幀、異步傳輸模式(ATM)單元、語音、視頻、數(shù)據(jù)和/或其它適合信息。
計算系統(tǒng)可以包括客戶端和服務(wù)器??蛻舳撕头?wù)器一般相互遠離并且通常通過通信網(wǎng)絡(luò)進行交互??蛻舳撕头?wù)器的關(guān)系通過在相應(yīng)計算機上運行并且相互具有客戶端-服務(wù)器關(guān)系的計算機程序來產(chǎn)生。
在一些實施方式中,計算系統(tǒng)的任意或所有組件(硬件和/或軟件)可以使用應(yīng)用編程接口(API)和/或服務(wù)層彼此和/或與接口進行接口連接。API可以包括針對例程、數(shù)據(jù)結(jié)構(gòu)和對象類的規(guī)范。API可以是獨立于或依賴于計算機語言,并且指的是完整的接口、單個功能或甚至是一組API。服務(wù)層向計算系統(tǒng)提供軟件服務(wù)。計算系統(tǒng)的各種組件的功能可以經(jīng)由該服務(wù)層對于所有服務(wù)消費者是可訪問的。軟件服務(wù)通過定義的接口提供可重用的、定義的業(yè)務(wù)功能。例如,接口可以是以JAVA、C++或以可擴展標記語言(XML)格式或其它合適格式提供數(shù)據(jù)的其它合適語言所編寫的軟件。API和/或服務(wù)層可以是與計算系統(tǒng)的其他組件相關(guān)的集成組件和/或獨立組件。此外,在不脫離本公開的范圍的情況下,服務(wù)層的任意或所有部分可以被實現(xiàn)為另一軟件模塊、企業(yè)應(yīng)用或硬件模塊的子模塊或副模塊。
盡管本說明書包含許多具體實現(xiàn)細節(jié),然而這些細節(jié)不應(yīng)被解釋為對要求保護的范圍或任何發(fā)明的范圍構(gòu)成限制,而是用于說明特定于具體發(fā)明的具體實施例的特征。在單個實現(xiàn)中,還可以組合實現(xiàn)本說明書中在獨立實現(xiàn)的上下文中描述的特定特征。相反地,在單個實現(xiàn)的上下文中描述的各種特征也可在多個實現(xiàn)中單獨地實現(xiàn),或以適當?shù)淖咏M合來實現(xiàn)。此外,雖然特征可以在上面描述為在某些組合中起作用并且甚至最初如此要求保護,但是來自所要求保護的組合的一個或多個特征在一些情況下可以從組合中刪除,并且所要求保護的組合可以針對子組合或子組合的變體。
類似地,雖然在附圖中以特定順序描繪了操作,但是這不應(yīng)被理解為要求這些操作以示出的特定順序或以順序次序執(zhí)行,或者需要執(zhí)行所有示出的操作來實現(xiàn)期望的結(jié)果。在特定環(huán)境中,多任務(wù)處理和并行處理可能是有利的。此外,在上述的實施方式的各種系統(tǒng)模塊和組件的分離和/或集成不應(yīng)被理解為在所有實施方式中要求這樣的分離和/或集成,并且應(yīng)該理解的是,所描述的程序組件和系統(tǒng)一般可以一起集成在單個軟件產(chǎn)品或封裝為多個軟件產(chǎn)品。
描述了本主題的具體實施方式。對于本領(lǐng)域技術(shù)人員顯而易見的是,所描述的實施方式的其他實施方式、改變和置換在所附權(quán)利要求的范圍內(nèi)。例如,在權(quán)利要求書中記載的動作可以以不同順序來執(zhí)行,并且仍然實現(xiàn)期望結(jié)果。
因此,示例實施方式的上述描述不限定或限制本公開。在不脫離本公開的精神和范圍的情況下,還可以有其他改變、替換和變化。