本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,尤其涉及一種分布式系統(tǒng)的任務(wù)管理系統(tǒng)及方法。
背景技術(shù):由于單系統(tǒng)能力有限,分布式系統(tǒng)的使用越來越普及。對于分布式系統(tǒng)來說,一個任務(wù)從派發(fā)到執(zhí)行再到執(zhí)行結(jié)果匯總的整個生命周期,可能分布于系統(tǒng)中不同的計算節(jié)點上。并且對于大型的作業(yè)系統(tǒng)來說,系統(tǒng)中可能包含有成千上萬的計算資源,參與任務(wù)處理的計算節(jié)點數(shù)量極大。如何合理的協(xié)調(diào)計算資源,如何追蹤任務(wù)執(zhí)行情況是目前迫切需要解決的問題。而目前的分布式系統(tǒng)仍然存在以下問題:(1)任務(wù)的派發(fā)節(jié)點和執(zhí)行節(jié)點的數(shù)量和運算能力不一定對等,可能出現(xiàn)派發(fā)任務(wù)過多導(dǎo)致飽和,此時如果繼續(xù)派發(fā)任務(wù)則有可能使系統(tǒng)負載過重,導(dǎo)致宕機或者系統(tǒng)停擺。(2)分布式系統(tǒng)涉及的計算資源眾多,由于功能升級或者運維等原因可能需要對某些功能節(jié)點進行停機維護,但是并不希望整個系統(tǒng)停止運行,從而減少升級或者運維的成本。(3)由于參與任務(wù)執(zhí)行的節(jié)點是分布式的,一個任務(wù)具體被哪個節(jié)點執(zhí)行不能確定,當任務(wù)執(zhí)行出錯時不能盡快定位出錯的具體節(jié)點,并進行后續(xù)的處理流程。
技術(shù)實現(xiàn)要素:針對上述技術(shù)問題,本發(fā)明提供了一種分布式系統(tǒng)的任務(wù)管理系統(tǒng)及方法,利用單邊操作模塊來完善分布式系統(tǒng)的任務(wù)管理,提高系統(tǒng)資源的利用率和任務(wù)管理的健壯性和靈活性。本發(fā)明采用如下方法來實現(xiàn):一種分布式系統(tǒng)的任務(wù)管理系統(tǒng),包括:派發(fā)節(jié)點,用于將任務(wù)派發(fā)至緩沖池中;緩沖池,用于存儲待執(zhí)行的任務(wù);執(zhí)行節(jié)點,用于從緩沖池中獲取任務(wù)進行處理;單邊操作模塊,用于接收用戶指令,選擇單邊消費模式或者單邊生產(chǎn)模式,所述單邊消費模式為停止派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,允許執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;所述單邊生產(chǎn)模式為允許派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,停止執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;任務(wù)跟蹤模塊,用于跟蹤任務(wù)的任務(wù)狀態(tài)以及任務(wù)所在執(zhí)行節(jié)點的信息。進一步,任務(wù)跟蹤模塊中所述任務(wù)狀態(tài)可以包括:任務(wù)已派發(fā)、任務(wù)被領(lǐng)取、任務(wù)開始執(zhí)行、任務(wù)執(zhí)行中、任務(wù)已超時、任務(wù)執(zhí)行異常、任務(wù)已完成或者任務(wù)執(zhí)行失敗。其中,任務(wù)狀態(tài)中所述的任務(wù)已超時包括從任務(wù)已派發(fā)到任務(wù)被領(lǐng)取的全局超時,或者從任務(wù)被領(lǐng)取到任務(wù)開始執(zhí)行的執(zhí)行超時。其中,任務(wù)跟蹤模塊中對所述任務(wù)狀態(tài)進行更新的同時更新時間戳。進一步,任務(wù)跟蹤模塊中,所述任務(wù)所在執(zhí)行節(jié)點的信息可以通過MAC地址或者IP地址來標識。優(yōu)選地,該任務(wù)管理系統(tǒng)還可以包括:預(yù)警模塊,用于監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量達到預(yù)設(shè)閾值時觸發(fā)預(yù)警;進一步,預(yù)警模塊具體完成:監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量等于或高于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù);或者當緩沖池中的任務(wù)數(shù)量等于或低于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并關(guān)閉部分執(zhí)行節(jié)點。其中,當暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù)時,允許執(zhí)行節(jié)點獲取緩沖池中的任務(wù)進行處理;當關(guān)閉部分執(zhí)行節(jié)點時,允許派發(fā)節(jié)點繼續(xù)向緩沖池中派發(fā)任務(wù)。優(yōu)選地,該任務(wù)管理系統(tǒng)還包括:任務(wù)管理嵌套模塊,利用擴展接口完成任務(wù)管理的嵌套;即在一個大的任務(wù)管理器中嵌套一些小的任務(wù)管理器,從而更好地完成對于子任務(wù)的處理控制,達到對于分布式系統(tǒng)中任務(wù)的細粒度控制。更為優(yōu)選地,該任務(wù)管理系統(tǒng)還包括:自定義處理模塊,針對所述任務(wù)狀態(tài),利用擴展接口自定義后續(xù)處理流程。進一步,自定義處理模塊可以利用回調(diào)函數(shù)定義所述任務(wù)狀態(tài)的后續(xù)處理流程。一種分布式系統(tǒng)的任務(wù)管理方法,在派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理的過程中,如果接收到用戶指令或者緩沖池中的任務(wù)數(shù)量接近某一閾值時,則進入單邊模式,選擇單邊消費模式或者單邊生產(chǎn)模式,所述單邊消費模式為停止派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,允許執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;所述單邊生產(chǎn)模式為允許派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,停止執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;所述方法還包括跟蹤任務(wù)的任務(wù)狀態(tài)以及任務(wù)所在執(zhí)行節(jié)點的信息。進一步,所述任務(wù)狀態(tài)可以包括:任務(wù)已派發(fā)、任務(wù)被領(lǐng)取、任務(wù)開始執(zhí)行、任務(wù)執(zhí)行中、任務(wù)已超時、任務(wù)執(zhí)行異常、任務(wù)已完成或者任務(wù)執(zhí)行失敗。其中,所述任務(wù)已超時包括從任務(wù)已派發(fā)到任務(wù)被領(lǐng)取的全局超時,或者從任務(wù)被領(lǐng)取到任務(wù)開始執(zhí)行的執(zhí)行超時。進一步,對所述任務(wù)狀態(tài)進行更新的同時更新時間戳。進一步,所述任務(wù)所在執(zhí)行節(jié)點的信息通過MAC地址或者IP地址來標識。執(zhí)行節(jié)點獲取任務(wù)時的反饋信息中包括該任務(wù)的信息,其中包括任務(wù)所在執(zhí)行節(jié)點的位置或者任務(wù)狀態(tài)的標識,其中,任務(wù)所在執(zhí)行節(jié)點的位置可以由MAC地址或者IP地址或者進程號來唯一標識,而任務(wù)狀態(tài)的更新可通過以下方法來完成,例如,當執(zhí)行節(jié)點獲取到任務(wù)后,將任務(wù)狀態(tài)置為任務(wù)被領(lǐng)取,當任務(wù)執(zhí)行完成后將任務(wù)狀態(tài)置為任務(wù)已完成。優(yōu)選地,該任務(wù)管理方法還包括:預(yù)警機制,監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量達到預(yù)設(shè)閾值時觸發(fā)預(yù)警;進一步,所述預(yù)警機制包括:監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量等于或高于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù);或者當緩沖池中的任務(wù)數(shù)量等于或低于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并關(guān)閉部分執(zhí)行節(jié)點。其中,當暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù)時,允許執(zhí)行節(jié)點獲取緩沖池中的任務(wù)進行處理;當關(guān)閉部分執(zhí)行節(jié)點時,允許派發(fā)節(jié)點繼續(xù)向緩沖池中派發(fā)任務(wù)。優(yōu)選地,該任務(wù)管理方法還包括:任務(wù)管理嵌套,利用擴展接口完成任務(wù)管理的嵌套;一個任務(wù)可能衍生出n個子任務(wù),那么此時可以利用任務(wù)管理嵌套對該任務(wù)和所述子任務(wù)進行同時管理,該子任務(wù)的管理和原任務(wù)的管理可以使用同一個任務(wù)管理框架,屬于任務(wù)管理嵌套任務(wù)管理的做法。更為優(yōu)選地,該任務(wù)管理方法還包括:后續(xù)處理流程的自定義,針對所述任務(wù)狀態(tài),利用擴展接口自定義后續(xù)處理流程。進一步,利用回調(diào)函數(shù)定義所述任務(wù)狀態(tài)的后續(xù)處理流程。綜上所述,本發(fā)明提供了一種分布式系統(tǒng)的任務(wù)管理系統(tǒng)及方法,首先派發(fā)節(jié)點負責(zé)將任務(wù)派發(fā)至緩沖池中,執(zhí)行節(jié)點從緩沖池中獲取任務(wù)并進行處理,此時可以根據(jù)用戶指令來選擇進入單邊消費模式或者單邊生產(chǎn)模式,這樣有利于在進行系統(tǒng)升級和維護時,提高系統(tǒng)資源的利用率;并且對于任務(wù)的任務(wù)狀態(tài)及任務(wù)所在執(zhí)行節(jié)點的信息進行跟蹤,利用如上所述方案,使得分布式系統(tǒng)中的各計算節(jié)點有序執(zhí)行任務(wù),增強了系統(tǒng)的健壯性,降低資源消耗,任務(wù)管理的嵌套使得用戶可以根據(jù)應(yīng)用模型對系統(tǒng)進一步劃分,完成分布式系統(tǒng)的細粒度控制;擴展接口可以使得任務(wù)管理更靈活。附圖說明為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明提供的分布式系統(tǒng)的任務(wù)管理方法中單邊模式實施例的流程圖;圖2為本發(fā)明提供的分布式系統(tǒng)的任務(wù)管理方法中預(yù)警機制實施例1的流程圖;圖3為本發(fā)明提供的分布式系統(tǒng)的任務(wù)管理方法中預(yù)警機制實施例2的流程圖;圖4為本發(fā)明提供的分布式系統(tǒng)的任務(wù)管理方法中預(yù)警機制實施例3的流程圖。具體實施方式本發(fā)明給出了一種分布式系統(tǒng)的任務(wù)管理系統(tǒng)及方法,為了使本領(lǐng)域的技術(shù)人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對本發(fā)明中技術(shù)方案作進一步詳細的說明:本發(fā)明提供了一種分布式系統(tǒng)的任務(wù)管理系統(tǒng),包括:派發(fā)節(jié)點,用于將任務(wù)派發(fā)至緩沖池中;緩沖池,用于存儲待執(zhí)行的任務(wù);執(zhí)行節(jié)點,用于從緩沖池中獲取任務(wù)進行處理;單邊操作模塊,用于接收用戶指令,選擇單邊消費模式或者單邊生產(chǎn)模式,所述單邊消費模式為停止派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,允許執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;所述單邊生產(chǎn)模式為允許派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,停止執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;任務(wù)跟蹤模塊,用于跟蹤任務(wù)的任務(wù)狀態(tài)以及任務(wù)所在執(zhí)行節(jié)點的信息。優(yōu)選地,該任務(wù)管理系統(tǒng)還可以包括:預(yù)警模塊,用于監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量達到預(yù)設(shè)閾值時觸發(fā)預(yù)警;進一步,預(yù)警模塊具體完成:監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量等于或高于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù);或者當緩沖池中的任務(wù)數(shù)量等于或低于預(yù)設(shè)閾值時觸發(fā)預(yù)警,并關(guān)閉部分執(zhí)行節(jié)點。其中,當暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù)時,允許執(zhí)行節(jié)點獲取緩沖池中的任務(wù)進行處理;當關(guān)閉部分執(zhí)行節(jié)點時,允許派發(fā)節(jié)點繼續(xù)向緩沖池中派發(fā)任務(wù)。優(yōu)選地,任務(wù)跟蹤模塊中所述任務(wù)狀態(tài)可以包括:任務(wù)已派發(fā)、任務(wù)被領(lǐng)取、任務(wù)開始執(zhí)行、任務(wù)執(zhí)行中、任務(wù)已超時、任務(wù)執(zhí)行異常、任務(wù)已完成或者任務(wù)執(zhí)行失敗。其中,任務(wù)狀態(tài)中所述的任務(wù)已超時包括從任務(wù)已派發(fā)到任務(wù)被領(lǐng)取的全局超時,或者從任務(wù)被領(lǐng)取到任務(wù)開始執(zhí)行的執(zhí)行超時。其中,任務(wù)跟蹤模塊中對所述任務(wù)狀態(tài)進行更新的同時更新時間戳。進一步,任務(wù)跟蹤模塊中,所述任務(wù)所在執(zhí)行節(jié)點的信息可以通過MAC地址或者IP地址來標識。優(yōu)選地,該任務(wù)管理系統(tǒng)還包括:任務(wù)管理嵌套模塊,利用擴展接口完成任務(wù)管理的嵌套;例如,有兩個任務(wù)管理系統(tǒng)M1和M2,就可以再M1的task_success()回調(diào)函數(shù)中向M2派發(fā)任務(wù),同時也能在M2的task_success()回調(diào)函數(shù)中向M1系統(tǒng)發(fā)起操作,完成系統(tǒng)任務(wù)的細粒度管理。更為優(yōu)選地,該任務(wù)管理系統(tǒng)還包括:自定義處理模塊,針對所述任務(wù)狀態(tài),利用擴展接口自定義后續(xù)處理流程。進一步,自定義處理模塊可以利用回調(diào)函數(shù)定義所述任務(wù)狀態(tài)的后續(xù)處理流程。例如,對于任務(wù)開始執(zhí)行、任務(wù)執(zhí)行異常、任務(wù)執(zhí)行超時、任務(wù)執(zhí)行失敗或者任務(wù)已完成等任務(wù)狀態(tài)可以分別使用task_started()、exception_occured()、timeout()、task_failed()、task_success()等回調(diào)函數(shù)完成用戶的自定義后續(xù)處理流程。本發(fā)明還提供了一種分布式系統(tǒng)的任務(wù)管理方法:在派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理的過程中,此時,可以通過開關(guān)來決定是否允許向緩沖池中派發(fā)任務(wù)以及是否允許從緩沖池中獲取任務(wù);如果接收到用戶指令,則進入單邊模式,選擇單邊消費模式或者單邊生產(chǎn)模式,所述單邊消費模式為停止派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,允許執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;所述單邊生產(chǎn)模式為允許派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,停止執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理;單邊模式的實施例為,如圖1所示:S101接收用戶指令;S102判定是否進入單邊消費模式,若是,則執(zhí)行S104,否則,執(zhí)行S103;S103繼續(xù)判定是否進入單邊生產(chǎn)模式,若是,則執(zhí)行S105,否則,執(zhí)行S106;S104進入單邊消費模式,繼續(xù)執(zhí)行S106;S105進入單邊生產(chǎn)模式,繼續(xù)執(zhí)行S106;S106判定是否暫停服務(wù),若是,則結(jié)束,否則,返回執(zhí)行S101;通常情況下,是既允許向緩沖池中派發(fā)任務(wù),同時可以從緩沖池中獲取任務(wù)進行處理。當系統(tǒng)的部分功能節(jié)點進行升級和維護時,單邊消費模式和單邊生產(chǎn)模式可以有效地利用資源,避免計算資源的浪費。所述任務(wù)管理方法還包括跟蹤任務(wù)的任務(wù)狀態(tài)以及任務(wù)所在執(zhí)行節(jié)點的信息;優(yōu)選地,所述任務(wù)狀態(tài)可以包括:任務(wù)已派發(fā)、任務(wù)被領(lǐng)取、任務(wù)開始執(zhí)行、任務(wù)執(zhí)行中、任務(wù)已超時、任務(wù)執(zhí)行異常、任務(wù)已完成或者任務(wù)執(zhí)行失?。豢梢酝ㄟ^MAC地址或者IP地址來唯一標識當前任務(wù)所在的處理節(jié)點,以便于任務(wù)的跟蹤回溯。進一步,更新任務(wù)狀態(tài)的同時要更新時間戳。該任務(wù)管理方法還可以包括:預(yù)警機制,監(jiān)控緩沖池中的任務(wù)數(shù)量,當緩沖池中的任務(wù)數(shù)量達到預(yù)設(shè)閾值時觸發(fā)預(yù)警;所述閾值可以由用戶根據(jù)實際需要設(shè)置;優(yōu)選地,如圖2所示,所述預(yù)警機制為:S201監(jiān)控緩沖池中的任務(wù)數(shù)量;S202判定緩沖池中的任務(wù)數(shù)量是否等于或者高于預(yù)設(shè)閾值;若是,則執(zhí)行S203,否則,執(zhí)行S204;S203暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù);S204是否暫停服務(wù),若是,則結(jié)束,否則,繼續(xù)執(zhí)行S201??商鎿Q地,如圖3所示,預(yù)警機制為:S301監(jiān)控緩沖池中的任務(wù)數(shù)量;S302判定緩沖池中的任務(wù)數(shù)量是否等于或者低于預(yù)設(shè)閾值,若是,則執(zhí)行S303,否則,則執(zhí)行S304;S303關(guān)閉部分執(zhí)行節(jié)點;S304是否暫停服務(wù),若是,則結(jié)束,否則,繼續(xù)執(zhí)行S301??商鎿Q地,如圖4所示,預(yù)警機制為:這里用戶根據(jù)需要設(shè)置最大閾值與最小閾值;S401監(jiān)控緩沖池中的任務(wù)數(shù)量;S402判定緩沖池中任務(wù)數(shù)量是否等于或高于最大閾值,若是,則執(zhí)行S405,否則,則執(zhí)行S403;S403判定緩沖池中的任務(wù)數(shù)量是否等于或低于最小閾值,若是,則執(zhí)行S406,否則,則執(zhí)行S404;S404是否暫停服務(wù),若是,則結(jié)束,否則,則繼續(xù)執(zhí)行S401;S405暫停派發(fā)節(jié)點向緩沖池中派發(fā)新任務(wù);繼續(xù)執(zhí)行S404;S406關(guān)閉部分執(zhí)行節(jié)點;繼續(xù)執(zhí)行S404。該任務(wù)管理方法還可以包括:任務(wù)管理嵌套,利用擴展接口完成任務(wù)管理的嵌套;例如,有兩個任務(wù)管理系統(tǒng)M1和M2,就可以在M1的task_success()回調(diào)函數(shù)中向M2派發(fā)任務(wù),同時也能在M2的task_success()回調(diào)函數(shù)中向M1系統(tǒng)發(fā)起操作,完成系統(tǒng)任務(wù)的細粒度管理。該任務(wù)管理方法還可以包括:后續(xù)處理流程的自定義,針對所述任務(wù)狀態(tài),利用擴展接口自定義后續(xù)處理流程。例如,對于任務(wù)開始執(zhí)行、任務(wù)執(zhí)行異常、任務(wù)執(zhí)行超時、任務(wù)執(zhí)行失敗或者任務(wù)已完成等任務(wù)狀態(tài)可以分別使用task_started()、exception_occured()、timeout()、task_failed()、task_success()等回調(diào)函數(shù)完成用戶的自定義后續(xù)處理流程。如上所述,本發(fā)明給出了一種分布式系統(tǒng)的任務(wù)管理系統(tǒng)及方法,與現(xiàn)有的分布式系統(tǒng)的任務(wù)管理方法的區(qū)別在于,在派發(fā)節(jié)點將任務(wù)派發(fā)至緩沖池中,和執(zhí)行節(jié)點從緩沖池中獲取任務(wù)進行處理時,可以根據(jù)用戶的指令,選擇單邊消費模式或者單邊生產(chǎn)模式,從而當部分功能節(jié)點需要升級或者維護時,只需要暫停部分功能節(jié)點的工作,不至于導(dǎo)致整個分布式系統(tǒng)停止運行,從而保證系統(tǒng)的正常運轉(zhuǎn),降低資源浪費,使得系統(tǒng)的任務(wù)管理更具靈活性,并且對于任務(wù)狀態(tài)和任務(wù)所在執(zhí)行節(jié)點信息的跟蹤,使得分布式系統(tǒng)的任務(wù)管理更加準確和及時。以上實施例用以說明而非限制本發(fā)明的技術(shù)方案。不脫離本發(fā)明精神和范圍的任何修改或局部替換,均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當中。