針對可執(zhí)行程序的分布式云計算系統(tǒng)及針對可執(zhí)行程序的分布式云計算方法
【專利摘要】本發(fā)明公開了通用的分布式云計算系統(tǒng)及通用的分布式云計算方法,使用戶通過一個統(tǒng)一的界面在連網(wǎng)的任意一臺機器上都可以發(fā)布任務和監(jiān)控任務的執(zhí)行,而不必對著運行任務的機器操作,通過自動調(diào)度,在有任務時,使集群中每臺機器都能工作,充分利用硬件資源,任務處理采用多臺機器分布式并行計算,可通過擴展計算服務器的數(shù)量大大提高處理的速度,另外,由于采用每個任務單獨分配給單獨的計算服務器進行執(zhí)行,某臺計算服務器出現(xiàn)問題時,其他計算機也可以進行替代執(zhí)行該任務,該任務的出錯不會影響到工程中其他任務的執(zhí)行,當出現(xiàn)不可恢復的錯誤時,只需要對計算服務器進行調(diào)整,從而將該任務插入至列表從而得到執(zhí)行。
【專利說明】針對可執(zhí)行程序的分布式云計算系統(tǒng)及針對可執(zhí)行程序的分布式云計算方法
【技術領域】
[0001]本發(fā)明涉及分布式云計算領域,具體來說,涉及在分布式環(huán)境下,利用云存儲在各節(jié)點之間完成數(shù)據(jù)交換、對任務進行調(diào)度和自動調(diào)用可執(zhí)行程序來自動化處理任務的方法,尤其涉及針對可執(zhí)行程序的分布式云計算系統(tǒng)及針對可執(zhí)行程序的分布式云計算方法。
【背景技術】
[0002]傳統(tǒng)計算機程序的執(zhí)行需要用戶在程序所在的機器上輸入命令或通過圖形界面來完成,其中很多程序的任務都是處理文件系統(tǒng)中的文件。這種方式被廣泛地運用于企業(yè)和科研機構(gòu),他們出于自己的業(yè)務需求或研究需要,要經(jīng)常運行相同的程序。這些程序的處理流程基本都是相同的,即讀取文件、處理數(shù)據(jù)、最后以文件形式將結(jié)果輸出。然而,這種方式在擴展性上有很大的問題。當數(shù)據(jù)量增大,處理時間變長時,一臺機器將沒有足夠的性能來完成任務,那么勢必要增加新的機器來分攤?cè)蝿铡6敊C器變得很多的時候,在每臺機器上都要人工執(zhí)行及其相似的操作。這樣的工作繁瑣而機械,并且很不利于管理,將大大增加人力成本,另外容易出現(xiàn)某臺機器處于任務飽和狀態(tài),和其他機器處于空閑狀態(tài),其整體的計算機性能無法進行優(yōu)化。而通過分布式計算方式,將一個任務進行分配,然后讓多臺機器對同一個任務進行計算,最后由一臺計算機進行對任務處理結(jié)果的整合,優(yōu)先該處理方式需要解決任務處理的算法問題,另外,當任務處理中某臺機器出現(xiàn)無法響應亦或者某臺機器出現(xiàn)問題時,則后續(xù)的任務無法進行處理,即容易出現(xiàn)一個任務的執(zhí)行失敗,導致整個工程的執(zhí)行失敗,以及后續(xù)任務執(zhí)行的推延。
【發(fā)明內(nèi)容】
[0003]針對上述技術缺陷,本發(fā)明提出針對可執(zhí)行程序的分布式云計算系統(tǒng)及針對可執(zhí)行程序的分布式云計算方法。
[0004]為了解決上述技術問題,本發(fā)明的技術方案如下:
針對可執(zhí)行程序的分布式云計算系統(tǒng),包括調(diào)度服務器、計算服務器和云存儲服務
器;
所述調(diào)度服務器用于創(chuàng)建工程及該工程包含的任務,并將該任務分配至計算服務器;所述計算服務器用于接受調(diào)度服務器分配的任務,并自動調(diào)用事先配置的可執(zhí)行程序?qū)υ撊蝿者M行執(zhí)行處理;
所述云存儲服務器用于所述調(diào)度服務器創(chuàng)建工程及任務分配時資源文件的存儲、所述計算服務器獲取執(zhí)行任務需要的資源文件的存儲、所述計算服務器上傳執(zhí)行任務后的結(jié)果文件。
[0005]進一步的,所述調(diào)度服務器根據(jù)工程的優(yōu)先級以及工程中任務的優(yōu)先級進行分配,所述調(diào)度服務器實時監(jiān)控計算服務器,根據(jù)計算服務器的請求,將任務分配至空閑的計算機服務器中。
[0006]進一步的,當計算服務器出現(xiàn)執(zhí)行任務出錯時,如果出現(xiàn)的出錯是可恢復的,則調(diào)度服務器重置該任務,并分配該任務至其他空閑的計算服務器執(zhí)行該任務;如果出現(xiàn)的出錯是不可恢復的,則所述計算服務器停止執(zhí)行該任務,所述調(diào)度服務器則停止分配該任務;當計算服務器執(zhí)行任務的時間超過閾值,調(diào)度服務器將重置該任務,并分配該任務至其他空閑的計算服務器;如果調(diào)度服務器監(jiān)控得到計算服務器出現(xiàn)問題無法執(zhí)行分配的任務,則重置該任務,并分配該任務至其他空閑的計算服務器。對于一個任務,重置次數(shù)有限制,超過這個限制則所述調(diào)度服務器則停止重置和分配該任務
通用的分布式云計算方法,包括如下步驟:
41)調(diào)度服務器接受用戶創(chuàng)建工程的請求,創(chuàng)建出新的工程和與該工程關聯(lián)的若干個任務,并設定該工程以及任務的優(yōu)先級,從而得到任務及工程的排隊執(zhí)行列表;
42)調(diào)度服務器根據(jù)計算服務器的請求,根據(jù)優(yōu)先級從調(diào)度服務器領取任務,此時調(diào)度服務器將該被領取的任務標記為進行中;
43)計算服務器從云存儲服務器上獲取執(zhí)行此任務需要的資源文件;
44)計算服務器運行配置的可執(zhí)行程序,執(zhí)行此任務;
45)完成此任務后,計算服務器向調(diào)度服務器請求將任務狀態(tài)標為完成中,請求被調(diào)度服務器接受則上傳運行結(jié)果到云存儲服務器;
46)運行結(jié)果上傳完畢,任務狀態(tài)標為完成。
[0007]進一步的,所述步驟41)中的優(yōu)先級可進行干預,調(diào)度服務器可根據(jù)優(yōu)先級的高低,插入或者暫緩排隊執(zhí)行列表中的任務或者工程。
[0008]進一步的,在所述步驟45)中,為了防止同一個任務被多次提交,只有當任務的狀態(tài)不為完成或不為完成中時,調(diào)度服務器才接受把狀態(tài)標為完成中的請求。
[0009]進一步的,當計算服務器執(zhí)行任務時發(fā)生不可恢復的錯誤,調(diào)度服務器將任務的狀態(tài)會被直接標為失敗,此任務將不再被執(zhí)行;而當計算服務器執(zhí)行任務時發(fā)生可恢復錯誤,則調(diào)度服務器將任務重置為開始,此任務將分配給其他的計算服務器執(zhí)行。
[0010]進一步的,如果計算服務器執(zhí)行任務時,一個任務長時間處于進行中的狀態(tài)且處理該任務的計算服務器沒有向調(diào)度服務器報告,則該任務被重置成開始,調(diào)度服務器重新根據(jù)優(yōu)先級的高低進行排隊執(zhí)行列表的排列,并讓其他計算服務器去執(zhí)行此任務。
[0011]進一步的,當計算服務器執(zhí)行任務,調(diào)度服務器將該工程的狀態(tài)改變?yōu)檫M行中,當工程在進行中狀態(tài)時,可以人工停止工程,則該工程中的任務將不再被調(diào)度服務器安排分配執(zhí)行;也可以恢復已停止的項目,讓時調(diào)度服務器根據(jù)優(yōu)先級重新安排排隊執(zhí)行列表,此項目中的任務繼續(xù)執(zhí)行;當工程內(nèi)部所有任務都執(zhí)行完畢后,如果全部成功,則工程的狀態(tài)會被設為完成;如果有失敗的任務,那么這個工程的狀態(tài)就會被設置為出錯。
[0012]本發(fā)明的有益效果在于:使用戶通過一個統(tǒng)一的界面在連網(wǎng)的任意一臺機器上都可以發(fā)布任務和監(jiān)控任務的執(zhí)行,而不必對著運行任務的機器操作。通過自動調(diào)度,在有任務時,使集群中每臺機器都能工作,充分利用硬件資源。任務處理采用多臺機器分布式并行計算,可通過擴展計算服務器的數(shù)量大大提高處理的速度,另外,由于采用每個任務單獨分配給單獨的計算服務器進行執(zhí)行,某臺計算服務器出現(xiàn)問題時,其他計算機也可以進行替代執(zhí)行該任務,該任務的出錯不會影響到工程中其他任務的執(zhí)行,當出現(xiàn)不可恢復的錯誤時,只需要對計算服務器進行調(diào)整,調(diào)度服務器自動會根據(jù)優(yōu)先級重新安排排隊執(zhí)行列表,從而將該任務插入至列表從而得到執(zhí)行。
【專利附圖】
【附圖說明】
[0013]圖1是本發(fā)明針對可執(zhí)行程序的分布式云計算系統(tǒng)的結(jié)構(gòu)組成圖;
圖2是本發(fā)明針對可執(zhí)行程序的分布式云計算系統(tǒng)中工程的狀態(tài)圖;
圖3是本發(fā)明針對可執(zhí)行程序的分布式云計算系統(tǒng)中任務的狀態(tài)圖。
【具體實施方式】
[0014]下面將結(jié)合附圖和具體實施例對本發(fā)明做進一步的說明。
[0015]當多臺電腦需要運行相同的程序來處理大量的數(shù)據(jù)時,為了使人員不必進行大量重復而機械的操作,本發(fā)明提供了一種將任務分配到不同機器進行自動化處理的方法。本系統(tǒng)分為兩個部分:一是在調(diào)度服務器上的調(diào)度系統(tǒng);一是在每臺計算服務器上的自動化處理系統(tǒng)。整個系統(tǒng)將包括一個調(diào)度服務器及若干個計算服務器,調(diào)度服務器負責維護整個任務執(zhí)行隊列,計算服務器負責對分配領取的任務的執(zhí)行。
[0016]調(diào)度服務器是整個系統(tǒng)的中樞,其維護的任務隊列有兩級的概念:工程和任務,一個工程可以包括一個或多個任務,每個工程和任務都有優(yōu)先級和狀態(tài)來用于調(diào)度。優(yōu)先級例如可以由無符號整數(shù)標記,以較小的數(shù)字表示較高的優(yōu)先級,也可以采用其他計算機可識別的方式進行。
[0017]工程的狀態(tài)有五個,分別是:
1.開始:表示工程被新建,還未開始執(zhí)行任務;
2.進行中:表示工程中的任務正在被執(zhí)行;
3.停止:表示工程被人工停止;
4.完成:表示工程中的任務以全部被成功得執(zhí)行;
5.出錯:表示工程中有出錯的任務;
任務的狀態(tài)有五個,分別是:
1.開始:表示任務被新建,等待被領取;
2.進行中:表示任務正在被執(zhí)行;
3.失敗:表示任務失敗;
4.完成中:表不正在上傳任務結(jié)果;
5.完成:表不任務被成功執(zhí)行;
調(diào)度服務器通過對工程及任務的優(yōu)先級與狀態(tài)的改變,來實現(xiàn)整個調(diào)度過程。
[0018]在自動處理任務時,需要用到特定的可執(zhí)行程序,其可靠性是無法由本系統(tǒng)控制的,在運行多次之后難免會出現(xiàn)錯誤,如異常退出、死鎖、輸入文件錯誤等。這些情況繁多而復雜,但從表現(xiàn)看,就分為兩種:一是程序不正常退出,一是程序長時間不響應。同時考慮到有的錯誤是可以通過重試來解決的,而有的錯誤則不行,于是將錯誤的類型分為可恢復的和不可恢復的,如輸入文件錯誤是不可恢復的,而程序長時間不響應通常是可恢復的。于是,當出現(xiàn)不可恢復的錯誤時,將此任務標為失??;當出現(xiàn)可恢復錯誤時則調(diào)度服務器將任務重置,分配由其他計算服務器重試此任務。當重試次數(shù)達到一定限度時,也將此任務標為失敗以防止無謂的嘗試而浪費性能。
[0019]本發(fā)明還開放遵循HTTP協(xié)議的接口的方式來允許用戶查詢?nèi)蝿者\行的狀態(tài)和控制任務的調(diào)度。查詢功能將給出工程的狀態(tài)及工程中不同狀態(tài)任務的數(shù)目,通過已完成和未完成的任務的比例可以估算出這個任務的執(zhí)行進度。而開放的控制接口有以下幾個:
1.新建工程:提供必要的數(shù)據(jù),在任務隊列中添加一個工程。
[0020]2.調(diào)整優(yōu)先級:更改工程的優(yōu)先級,優(yōu)先級較高的工程的任務會被先優(yōu)先領取執(zhí)行。
[0021]3.中斷工程:將當前狀態(tài)為開始或進行中的工程標為停止,使工程中的任務不再被領取執(zhí)行。
[0022]4.恢復工程:將當前狀態(tài)為停止的工程重新標為開始,使工程繼續(xù)進行。
[0023]如圖1所示,說明了本實施例的結(jié)構(gòu)組成,本例中包括一臺調(diào)度服務器和三臺計算服務器。同時,所有機器都連接上了同一個云存儲。圖2和圖3說明了本發(fā)明中工程和任務的狀態(tài)變化。
[0024]首先,調(diào)度服務器接受到用戶的創(chuàng)建工程請求,創(chuàng)建出一個新的工程和若干個任務。這時,工程和任務的狀態(tài)都為開始。
[0025]在理想情況下,一個工程中的任務接下來將經(jīng)過以下幾個步驟:
a.每臺計算服務器根據(jù)優(yōu)先級從調(diào)度服務器領取一個任務。此時,任務的狀態(tài)將會從開始改變?yōu)檫M行中;
b.計算服務器從云存儲上獲取執(zhí)行此任務需要的資源文件;
c.計算服務器運行配置的程序,執(zhí)行此任務;
d.計算服務器請求將任務狀態(tài)標為完成中,請求被接受則上傳運行結(jié)果到云存儲;
e.運行結(jié)果上傳完畢,任務狀態(tài)標為完成。
[0026]步驟a根據(jù)優(yōu)先級來領取任務,調(diào)度服務器會挑選出擁有最高優(yōu)先級的工程中擁有最高優(yōu)先級的任務,優(yōu)先級可由調(diào)度服務器提供的API來改變。這樣,后添加進來的緊急任務可以被優(yōu)先執(zhí)行即將后來的優(yōu)先級高的任務插入至調(diào)度服務器的任務執(zhí)行序列中。
[0027]在步驟d中,為了防止同一個任務被多次提交,只有當任務的狀態(tài)不為完成和完成中時,調(diào)度服務器才接受把狀態(tài)標為完成中的請求。
[0028]上述過程發(fā)生在大多數(shù)情況下,即沒有任何錯誤發(fā)生的情況下,當發(fā)生錯誤時,流程將有所不同。
[0029]當發(fā)生不可恢復的錯誤時,任務的狀態(tài)會被直接標為失敗,此任務將不再被執(zhí)行。而當發(fā)生可恢復錯誤時,則將任務重置為開始,這樣此任務就可以被再次執(zhí)行。同時,在調(diào)度服務器有超時檢查的機制:如果一個任務長時間處于進行中的狀態(tài)且處理改任務的計算服務器沒有向調(diào)度服務器報告,那么很可能在計算服務器出了問題而不能完成此任務,任務也會被重置成開始以讓其他計算服務器去執(zhí)行此任務,從而避免一個任務的失敗影響整個工程的執(zhí)行進展。
[0030]發(fā)生可恢復錯誤的概率本來就很低,重復出現(xiàn)的概率則更低。因此,任務被重置的次數(shù)是有限的。當超過了這個限制,任務的狀態(tài)就會被設置為失敗。
[0031]工程的狀態(tài)變化和其任務的執(zhí)行情況有關,同時還受人操作的影響。當有任務開始執(zhí)行時,其狀態(tài)就會改變?yōu)檫M行中。當工程在進行中狀態(tài)時,可以人工停止工程,那么這個工程中的任務將不再被領取執(zhí)行;也可以恢復已停止的項目,讓此工程中的任務繼續(xù)執(zhí)行。當其內(nèi)部所有任務都執(zhí)行完畢后,如果全部成功,則工程的狀態(tài)會被設為完成;如果有失敗的任務,那么這個工程的狀態(tài)就會被設置為出錯。這樣,整個工程的生命周期就結(jié)束了,然而,當對該失敗任務進行處理后,該任務將繼續(xù)進行執(zhí)行,從而該任務完成后,整個工程也可以標記完成,不影響其他已經(jīng)處理好的任務,節(jié)省了重復計算的時間。
[0032]以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本【技術領域】的普通技術人員,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明保護范圍內(nèi)。
【權(quán)利要求】
1.針對可執(zhí)行程序的分布式云計算系統(tǒng),其特征在于,包括調(diào)度服務器、計算服務器和云存儲服務器; 所述調(diào)度服務器用于創(chuàng)建工程及該工程包含的任務,并將該任務分配至計算服務器; 所述計算服務器用于接受調(diào)度服務器分配的任務,通過自動調(diào)用事先配置的可執(zhí)行程序?qū)υ撊蝿者M行執(zhí)行處理; 所述云存儲服務器用于所述調(diào)度服務器創(chuàng)建工程及任務分配時資源文件的存儲,所述計算服務器獲取執(zhí)行任務需要的資源文件的存儲、所述計算服務器上傳執(zhí)行任務后的結(jié)果文件。
2.根據(jù)權(quán)利要求1所述的針對可執(zhí)行程序的分布式云計算系統(tǒng),其特征在于,所述調(diào)度服務器根據(jù)工程的優(yōu)先級以及工程中任務的優(yōu)先級進行分配,所述調(diào)度服務器實時監(jiān)控計算服務器,根據(jù)計算服務器的請求,將任務分配至空閑的計算機服務器中。
3.根據(jù)權(quán)利要求2所述的針對可執(zhí)行程序的分布式云計算系統(tǒng),其特征在于,當計算服務器出現(xiàn)執(zhí)行任務出錯時,如果出現(xiàn)的出錯是可恢復的,則調(diào)度服務器重置該任務,并分配該任務至其他空閑的計算服務器執(zhí)行該任務;如果出現(xiàn)的出錯是不可恢復的,則所述計算服務器停止執(zhí)行該任務,所述調(diào)度服務器則停止分配該任務;當計算服務器執(zhí)行任務的時間超過閾值,調(diào)度服務器將重置該任務,并分配該任務至其他空閑的計算服務器;如果調(diào)度服務器監(jiān)控得到計算服務器出現(xiàn)問題無法執(zhí)行分配的任務,則重置該任務,并分配該任務至其他空閑的計算服務器。
4.針對可執(zhí)行程序的分布式云計算方法,其特征在于,包括如下步驟: 41)調(diào)度服務器接受用戶創(chuàng)建工程的請求,創(chuàng)建出新的工程和與該工程關聯(lián)的若干個任務,并設定該工程以及任務的優(yōu)先級,從而得到任務及工程的排隊執(zhí)行列表; 42)調(diào)度服務器根據(jù)計算服務器的請求,根據(jù)優(yōu)先級從調(diào)度服務器領取任務,此時調(diào)度服務器將該被領取的任務標記為進行中; 43)計算服務器從云存儲服務器上獲取執(zhí)行此任務需要的資源文件; 44)計算服務器運行配置的可執(zhí)行程序,執(zhí)行此任務; 45)完成此任務后,計算服務器向調(diào)度服務器請求將任務狀態(tài)標為完成中,請求被調(diào)度服務器接受則上傳運行結(jié)果到云存儲服務器; 46)運行結(jié)果上傳完畢,任務狀態(tài)標為完成。
5.根據(jù)權(quán)利要求4所述的針對可執(zhí)行程序的分布式云計算方法,其特征在于,所述步驟41)中的優(yōu)先級可進行干預,調(diào)度服務器可根據(jù)優(yōu)先級的高低,插入或者暫緩排隊執(zhí)行列表中的任務或者工程。
6.根據(jù)權(quán)利要求5所述的針對可執(zhí)行程序的分布式云計算方法,其特征在于,在所述步驟45)中,為了防止同一個任務被多次提交,只有當任務的狀態(tài)不為完成或不為完成中時,調(diào)度服務器才接受把狀態(tài)標為完成中的請求。
7.根據(jù)權(quán)利要求6所述的針對可執(zhí)行程序的分布式云計算方法,其特征在于,當計算服務器執(zhí)行任務時發(fā)生不可恢復的錯誤,調(diào)度服務器將任務的狀態(tài)會被直接標為失敗,此任務將不再被執(zhí)行;而當計算服務器執(zhí)行任務時發(fā)生可恢復錯誤,則調(diào)度服務器將任務重置為開始,此任務將分配給其他的計算服務器執(zhí)行。
8.根據(jù)權(quán)利要求7所述的針對可執(zhí)行程序 的分布式云計算方法,其特征在于,如果計算服務器執(zhí)行任務時,一個任務長時間處于進行中的狀態(tài)且處理該任務的計算服務器沒有向調(diào)度服務器報告,則該任務被重置成開始,調(diào)度服務器重新根據(jù)優(yōu)先級的高低進行排隊執(zhí)行列表的排列,并讓其他計算服務器去執(zhí)行此任務。
9.根據(jù)權(quán)利要求8所述的針對可執(zhí)行程序的分布式云計算方法,其特征在于,當計算服務器執(zhí)行任務,調(diào)度服務器將該工程的狀態(tài)改變?yōu)檫M行中,當工程在進行中狀態(tài)時,可以人工停止工程,則該工程中的任務將不再被調(diào)度服務器安排分配執(zhí)行;也可以恢復已停止的項目,讓時調(diào)度服務器根據(jù)優(yōu)先級重新安排排隊執(zhí)行列表,此項目中的任務繼續(xù)執(zhí)行;當工程內(nèi)部所有任務都執(zhí)行完畢后,如果全部成功,則工程的狀態(tài)會被設為完成;如果有失敗的任務,那么這個工程的狀態(tài)就會被設`置為出錯。
【文檔編號】H04L29/08GK103823719SQ201410068059
【公開日】2014年5月28日 申請日期:2014年2月26日 優(yōu)先權(quán)日:2014年2月26日
【發(fā)明者】陸兵斌, 劉嘉睿, 陳蓉艷, 蔣啟翔 申請人:杭州群核信息技術有限公司