亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

分布式任務處理方法和裝置與流程

文檔序號:11233919閱讀:1119來源:國知局
分布式任務處理方法和裝置與流程
本申請涉及計算機應用
技術領域
,特別涉及分布式任務處理的方法和裝置。
背景技術
:在分布式環(huán)境下,一個待處理的分布式任務通常會被拆分成多個子任務,并將拆分后得到的各個子任務分發(fā)到若干計算節(jié)點進行處理。現(xiàn)有技術中,在分布式環(huán)境中進行的子任務處理方法一般通過控制節(jié)點和計算節(jié)點來實現(xiàn),具體可以包括下述過程:控制節(jié)點與各個計算節(jié)點建立心跳連接,以獲取各個計算節(jié)點的健康狀態(tài)信息(例如:數(shù)據(jù)庫連接數(shù)、cpu占用率及內(nèi)存使用率等)。控制節(jié)點根據(jù)獲取的各個計算節(jié)點的健康狀態(tài)信息,將任務池中預先存儲的各子任務分發(fā)到相應的計算節(jié)點進行處理。其中,任務池中的各子任務是通過將待處理的分布式任務進行拆分得到的??梢?,在現(xiàn)有技術中,必須通過控制節(jié)點來將任務池的各子任務分發(fā)到各個計算節(jié)點進行處理。其中,由于每個計算節(jié)點需與控制節(jié)點建立心跳連接,這就導致計算節(jié)點群的規(guī)模受限于上述控制節(jié)點的運算能力。技術實現(xiàn)要素:本申請實施例的目的是提供一種分布式任務處理方法及裝置,用以解決現(xiàn)有技術存在的計算節(jié)點群的規(guī)模受限于上述控制節(jié)點的運算能力的問題。為解決上述技術問題,本申請實施例提供的分布式任務處理方法及裝置是這樣實現(xiàn)的:一種分布式任務處理方法,包括:計算節(jié)點通過守護進程監(jiān)測該計算節(jié)點的至少一個健康指標值;計算節(jié)點根據(jù)所述健康指標值及與該健康指標值對應的預設閾值,判斷該計算節(jié)點是否具有從預先存儲有若干子任務的任務池中領取子任務的權限;其中,所述子任務是通過將待處理的分布式任務進行拆分得到的;若該計算節(jié)點具有領取子任務的權限,計算節(jié)點從所述任務池中領取至少一個子任務;計算節(jié)點生成與領取到的子任務對應的任務線程并利用該任務線程執(zhí)行該子任務。一種分布式任務處理裝置,包括:獲取單元,用于通過守護進程監(jiān)測該計算節(jié)點的至少一個健康指標值;判斷單元,用于根據(jù)所述健康指標值及與該健康指標值對應的預設閾值,判斷該計算節(jié)點是否具有從預先存儲有若干子任務的任務池中領取子任務的權限;其中,所述子任務是通過將待處理的分布式任務進行拆分得到的;領取單元,用于在計算節(jié)點具有領取子任務的權限時,從所述任務池中領取至少一個子任務;生成單元,用于生成與領取到的子任務對應的任務線程并利用該任務線程執(zhí)行該子任務。由以上本申請實施例提供的技術方案可見,本申請實施例通過計算節(jié)點根據(jù)自身健康指標值來確定是否可以從任務池中領取子任務,在滿足領取子任務的條件時進行領取動作并隨后對領取到的子任務進行處理。與現(xiàn)有技術相比,本申請實施例通過計算節(jié)點主動地進行任務領取動作,無需額外設置用以與各計算節(jié)點進行心跳連接并進行任務分發(fā)的控制節(jié)點,從而避免控制節(jié)點對計算節(jié)點群的規(guī)模的限制,使得計算節(jié)點群的規(guī)模更加靈活。附圖說明為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領域普通技術人員來講, 在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請實施例中的包含若干計算節(jié)點的任務處理裝置的框架圖;圖2為本申請實施例中的包含若干計算節(jié)點的任務處理裝置的示意圖;圖3為本申請一實施例中提供的分布式任務處理的方法的流程圖;圖4為本申請一實施例中提供的分布式任務處理的裝置的模塊示意圖。具體實施方式為了使本
技術領域
的人員更好地理解本申請中的技術方案,下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應當屬于本申請保護的范圍。圖1為本申請實施例中的包含若干計算節(jié)點的任務處理裝置的框架圖,如圖1所示,該任務處理系統(tǒng)包括一個或多個計算節(jié)點101、一個或多個任務池102,及用以連接上述計算節(jié)點101和上述任務池102的網(wǎng)絡103。所述計算節(jié)點101可以通過網(wǎng)絡103向任務池102領取待處理的子任務。所述計算節(jié)點101可以是一個具有計算或處理任務能力的處理裝置,也可以是由多個具有處理任務能力的處理裝置組成的集群。處理裝置可以包括各類型的用來執(zhí)行指令、處理進程或線程的處理器或微處理器。所述任務池102可以是一個具有存儲能力的存儲裝置(例如數(shù)據(jù)庫),也可以是由多個存儲裝置組成的集群。任務池102中可以存儲的數(shù)據(jù)可以包括例如待處理分布式任務的數(shù)據(jù)、待處理分布式任務拆分后的子任務的數(shù)據(jù)等。任務池102中的應用可以與由開發(fā)者提供的應用程序?qū)?。應用可以包括例如移動應用、超文本標記語言5(html5)應用、桌面應用和/或其它應用。上述網(wǎng)絡103可以包括例如局域網(wǎng)(lan)、廣域網(wǎng)(wan)、內(nèi)部網(wǎng)、互聯(lián)網(wǎng)、移動電話網(wǎng)絡、虛擬專用網(wǎng)(vpn)、蜂窩式或其它移動通信網(wǎng)絡、藍牙、nfc或其任何組合。本申請實施例的網(wǎng)絡化環(huán)境下,若干計算節(jié)點101可以通過網(wǎng)絡103向任務池102獲取子任務。所述子任務預先由分布式任務拆分并存儲于該任務池102中。待所述若干計算節(jié)點101將領取的子任務處理完成后,通過網(wǎng)絡103提交至所述任務池102。圖2為本申請實施例中的包含若干計算節(jié)點的任務處理裝置的示意圖。該示意圖中包括一個或若干計算機點101、任務池102。該示意圖能更清楚的示意出所述任務池102中包括由分布式任務拆分而得的若干子任務,所述計算節(jié)點101分別向所述任務池102獲取子任務。如圖3所示,為本申請一實施例中提供的一種分布式任務處理的方法的流程圖。本實施例中,所述分布式任務處理的方法包括如下步驟:s210:計算節(jié)點通過守護進程監(jiān)測該計算節(jié)點的至少一個健康指標值。所述守護進程,可以是與計算節(jié)點的用以處理子任務的程序或代碼對應的實體。若用以處理子任務的計算節(jié)點包括不止一個時,每個計算節(jié)點分別運行一個守護進程。所述子任務是通過將待處理的分布式任務進行拆分得到的,并預先存儲于所述任務池中。本申請實施例中,所述守護進程可以用于監(jiān)測其所在計算節(jié)點的可用資源的健康指標值,可以用于對比所述監(jiān)測的健康指標值與其對應的閾值,并根據(jù)對比結果,確定該計算節(jié)點是否可以向任務池領取子任務。本申請實施例中,所述計算節(jié)點向任務池領取子任務之前,首先開啟守護進程。若有不止一個計算節(jié)點,來共同完成任務池中的子任務,則所述不止一個計算節(jié)點,在向所述任務池獲取子任務之前,分別開啟各自的守護進程。所述計算節(jié)點的健康指標值可以包括該計算節(jié)點的數(shù)據(jù)庫連接數(shù)、cpu占用率及內(nèi)存使用率該計算節(jié)點連接下述任務池的網(wǎng)絡帶寬、計算節(jié)點正在處理的子任務數(shù)、該計算節(jié)點的剩余內(nèi)存等。s220:根據(jù)所述健康指標值及與該健康指標值對應的預設閾值,判斷該計 算節(jié)點是否具有領取子任務的權限。所述與健康指標值對應的預設閾值,由計算節(jié)點預先設置。具體的,計算節(jié)點根據(jù)任務池中存儲的子任務需消耗計算節(jié)點的資源量,確定與健康指標值對應的預設閾值。若所述健康指標值用以表征所述計算節(jié)點的資源耗用情況(如當前計算節(jié)點的cpu占用率),通過判斷所述健康指標值是否小于與該健康指標值對應的預設閾值(例如,計算節(jié)點的cpu占用率的閾值),若是,確定該計算節(jié)點具有領取子任務的權限,則該計算節(jié)點可以向任務池領取子任務,反之該計算節(jié)點不能領取子任務。若所述健康指標值用以表征所述計算節(jié)點的可用資源量(如當前計算節(jié)點的內(nèi)存),通過判斷所述健康指標值是否大于與該健康指標值對應的預設閾值,確定該計算節(jié)點具有領取子任務的權限,則該計算節(jié)點可以向任務池領取,反之該計算節(jié)點不能領取子任務。所述健康指標值對應的預設閾值,可以是單個健康指標值的閾值,也可以是多個健康指標值的綜合閾值。具體的,計算機點根據(jù)子任務涉及或主要涉及的消耗計算節(jié)點的資源量而決定。下面結合例子對所述健康指標值用以表征所述計算節(jié)點的資源耗用情況加以說明。例如,任務池中的待處理的子任務對計算節(jié)點的要求為:計算節(jié)點的cpu占用率為70%及以上,就不可以領取并處理該任務池中的子任務。那么計算節(jié)點在設置閾值時,便可以設置cpu占用率的閾值為70%(或0.7)。本實施例中,上述步驟s210中所述計算節(jié)點的守護進程需要監(jiān)測的健康指標值,監(jiān)測該計算節(jié)點的cpu占用率的健康指標值即可。若守護進程監(jiān)測到其所在計算節(jié)點a的cpu占用率為50%,那么該計算節(jié)點根據(jù)監(jiān)測到的該計算節(jié)點a的cpu占用率的健康指標值(即cpu占用率50%)及與預設的cpu占用率的閾值(即70%),判斷該計算節(jié)點是否具有領取子任務的權限,具體的通過判斷監(jiān)測到的該計算節(jié)點a的cpu占用率健康指標值是否小于預設的cpu占用率的閾值。再例如,根據(jù)某種規(guī)則,確定某計算節(jié)點在同一時間最多可以處理的子任 務個數(shù)10個,即可以預設該計算節(jié)點正在處理子任務數(shù)的閾值為10,該計算節(jié)點的守護進程對該計算節(jié)點進行監(jiān)測時,監(jiān)測該計算節(jié)點正在處理的子任務的個數(shù)的健康指標值即可。若該計算節(jié)點的守護進程監(jiān)測到該計算節(jié)點正在處理的子任務的個數(shù)為6(即該計算節(jié)點正在處理的子任務的健康指標值為6),則該計算節(jié)點根據(jù)監(jiān)測到的該計算節(jié)點正在處理的子任務的健康指標值6與該計算節(jié)點可同時處理子任務個數(shù)的閾值10,判斷該計算節(jié)點是否具有領取子任務的權限,具體的通過判斷該計算節(jié)點正在處理的子任務的健康指標值是否小于可同時處理子任務個數(shù)的閾值。所述正在處理子任務數(shù)的閾值,可以通過計算節(jié)點的至少一個用以表征該計算節(jié)點的最大資源量的第一資源值(比如該計算節(jié)點的內(nèi)存),及任務池中的子任務至少需要消耗計算節(jié)點的資源量的第二資源值(比如每個子任務至少需要消耗的內(nèi)存)確定與該計算節(jié)點對應的正在處理子任務數(shù)的閾值。比如,若某一計算節(jié)點的內(nèi)存為100gb,任務池中的子任務至少需要消耗計算節(jié)點的內(nèi)存為10gb,那么所述該計算節(jié)點對應的正在處理子任務數(shù)的閾值可以通過該計算節(jié)點的內(nèi)存100gb除以任務池中的子任務至少需要消耗計算節(jié)點的內(nèi)存為10gb,從而確定該計算節(jié)點對應的正在處理子任務數(shù)的閾值為10。那么該計算節(jié)點最多可以同時領取并處理10個子任務。同樣,任務池中的子任務至少需要消耗計算節(jié)點的內(nèi)存為3gb,那么該內(nèi)存為100gb計算節(jié)點對應的正在處理子任務數(shù)的閾值為33。下面結合例子對所述健康指標值用以表征所述計算節(jié)點的可用資源量的情況加以說明。例如,任務池中的待處理的子任務對計算節(jié)點的要求為:只要達到內(nèi)存為20mb以上,就可以領取并處理該任務池中的子任務。那么計算節(jié)點在設置閾值時,便可以設置閾值為20mb。本實施例中,上述步驟s210中所述計算節(jié)點的守護進程需要監(jiān)測的健康指標值時,監(jiān)測當前該計算節(jié)點的內(nèi)存的健康指標值即可。若計算節(jié)點的守護進程監(jiān)測到,該計算節(jié)點的當前內(nèi)存為50mb。那么該計算節(jié)點根據(jù)監(jiān)測到的該計算節(jié)點的內(nèi)存的健康指標值 50mb,及與預設的內(nèi)存的閾值(即20mb),判斷該計算節(jié)點是否具有領取子任務的權限,具體的通過判斷監(jiān)測到的該計算節(jié)點內(nèi)存的健康指標值是否大于預設的內(nèi)存的閾值。同樣,若任務池中待處理的子任務對計算節(jié)點的要求中,同時包括計算節(jié)點的內(nèi)存和cpu。則計算節(jié)點預設的閾值可以為,通過一定的算法計算而得的內(nèi)存和cpu的綜合閾值,也可以直接設置這兩個健康指標值的兩個閾值。相應的,上述步驟s210中所述計算節(jié)點的守護進程需要監(jiān)測的健康指標值,需要監(jiān)測該計算節(jié)點的內(nèi)存和cpu的兩個健康指標值,并進行相應的判斷。s230:若是,該計算節(jié)點從所述任務池中領取至少一個子任務。參照上述步驟s220中預設的閾值為cpu占用率70%,守護進程監(jiān)測到其所在計算節(jié)點的cpu占用率為50%的例子,計算節(jié)點通過判斷所述計算節(jié)點的cpu占用率為50%小于預設的閾值cpu占用率70%,那么該計算節(jié)點可以向任務池領取子任務。此處需要說明的是,若另一計算節(jié)點b,其守護進程監(jiān)測到計算節(jié)點b的cpu占用率為70%,那么該計算節(jié)點不可以向任務池領取子任務。參照上述步驟s220中預設的閾值為內(nèi)存為20mb,守護進程監(jiān)測到其所在計算節(jié)點的內(nèi)存為50mb的例子,計算節(jié)點通過判斷所述計算節(jié)點的內(nèi)存50mb大于預設的閾值20mb,那么該計算節(jié)點可以向任務池領取子任務。通過守護進程監(jiān)測到的其所在計算節(jié)點的健康指標值,與所述健康指標值對應的閾值對比,可以判斷出計算節(jié)點是否可以向任務池領取子任務。在判斷出計算節(jié)點可以向任務池領取子任務之后,還可以通過對比該計算節(jié)點正在處理的子任務數(shù)與該計算節(jié)點的正在處理子任務數(shù)的閾值,確定該計算節(jié)點最多還可以同時領取多少子任務。具體的,該計算節(jié)點可以最多同時領取的子任務數(shù),可以通過該計算節(jié)點的正在處理子任務數(shù)的閾值減去監(jiān)測到的該計算節(jié)點正在執(zhí)行的子任務數(shù)得到。同樣結合步驟s220中,某計算節(jié)點預設的可領取的正在處理子任務數(shù)的閾值為10,該計算節(jié)點的守護進程監(jiān)測到的該計算節(jié)點 正在處理的子任務數(shù)為6,則該計算節(jié)點可以繼續(xù)領取子任務,且該計算節(jié)點最多還可以同時領取4個子任務。需要說明的是,若所述守護進程判斷出其所在計算節(jié)點不可以向任務池領取子任務時(例如該計算節(jié)點的cpu占用率大于或等于預設的cpu占用率對應的閾值),則該計算節(jié)點的守護進程會根據(jù)預先配置的等待時長,進行等待。之后,該守護進程可以繼續(xù)對其所在計算節(jié)點的健康指標值進行檢測。任務池中通過拆分分布式任務生成若干個子任務時,相應的生成與每個子任務對應的若干個子任務的狀態(tài)信息。所述子任務的狀態(tài)信息包括可以被計算節(jié)點的子任務鎖鎖定的狀態(tài)信息。所述計算節(jié)點向任務池領取子任務時,該計算節(jié)點可以通過樂觀鎖定的方式領取子任務。具體的,計算節(jié)點的守護進程生成與領取到的子任務對應的子任務鎖信息。所述子任務鎖信息包含領取該子任務的計算節(jié)點的標識id(例如當前計算節(jié)點的主機名或ip地址)及鎖定該子任務的時間戳。計算節(jié)點利用所述子任務鎖信息對領取到的子任務的狀態(tài)信息進行更新。子任務的狀態(tài)信息可以包括:最新子任務鎖、最近鎖定時間、被鎖定次數(shù)、當前任務狀態(tài)。所述最新子任務鎖的信息即為當前鎖定該子任務的子任務鎖信息。若最新子任務鎖對應的信息不為空,則其對應的信息為當前領取該子任務的計算節(jié)點的子任務鎖信息,若最新子任務鎖對應的信息為空,則表示當前時刻沒有任何計算節(jié)點鎖定該子任務。所述最近鎖定時間為計算節(jié)點鎖定該子任務后更新的最新時間。被鎖定次數(shù),表示該子任務被計算節(jié)點領取和鎖定幾次;若被鎖定次數(shù)為零時,表示該子任務還未被任何計算節(jié)點領取過,若被鎖定次數(shù)為若被鎖定次數(shù)不為零,其對應的數(shù)據(jù)為幾,則表示該子任務被鎖定幾次。當前任務狀態(tài),表示子任務當前處于的狀態(tài)信息,可用包括可用、執(zhí)行、成功等狀態(tài)。若某子任務的當前任務狀態(tài)為可用,則表示該子任務可以別計算節(jié)點領取和鎖定;若當前任務狀態(tài)為執(zhí)行,則表示該子任務當前已被計算節(jié)點領取和鎖定,當前不可被其他計算節(jié)點領??;若當前任務狀態(tài)為成功,則該子任務 被處理完成,該子任務將從任務池中結束,不會再被任何計算節(jié)點領取。所述子任務的狀態(tài)信息的更新可以用以表征該子任務被某計算節(jié)點鎖定的過程。例如,某計算節(jié)點的守護進程生成的子任務鎖在鎖定某子任務之前,該子任務的狀態(tài)信息可以如表1所示:表1:子任務被鎖定之前的狀態(tài)信息最新子任務鎖最近鎖定時間被鎖定次數(shù)當前任務狀態(tài)nullnull0可用如表1中所示的該子任務的當前任務狀態(tài)為“可用”,表示該子任務可以被任意計算節(jié)點領取。表1中被鎖定的次數(shù)為“0”,表示該子任務沒有被任何一個計算節(jié)點領取并鎖定過,其對應的最近鎖定時間為空,其對應的最新子任務鎖的信息也為空。表1中最新子任務鎖的信息為空,表示當前時刻該子任務沒有被任何計算節(jié)點領取和鎖定。當子任務鎖定成功后,所述子任務的狀態(tài)信息可以如表2所示:表2:子任務被鎖定成功的狀態(tài)信息最新子任務鎖最近鎖定時間被鎖定次數(shù)當前任務狀態(tài)xx.com:145334565898914533456589891執(zhí)行表2所示的第一列中“xx.com:1453345658989”為鎖定該子任務的子任務鎖信息。其中“xx.com”為當前鎖定該子任務的計算節(jié)點的標識id,“1453345658989”為當前鎖定該子任務時的時間戳。最近鎖定時間“1453345658989”為該子任務被鎖定時更新。相應的,當前該子任務被鎖定的次數(shù)為1。該子任務狀態(tài)信息中的當前任務狀態(tài)為“執(zhí)行”,表示該子任務已被領取和鎖定,并且當前任務狀態(tài)下,該子任務不能被其他計算節(jié)點所領取。所述超時時長為預先配置的用于表征計算節(jié)點領取子任務后該計算節(jié)點正常工作的有效時間。計算機點通過心跳更新最近鎖定的時間。若計算節(jié)點領取子任務后在所述的超時時長內(nèi)計算節(jié)點沒有更新最近鎖定時間,則可以表征該計算節(jié)點在超時時長內(nèi)沒能正常工作,該計算節(jié)點已不可用。那么被該計算 節(jié)點領取的子任務可以重新被領取。若所述計算節(jié)點在領取該子任務后,在所述超時時長內(nèi)有更新最近鎖定時間,則表征該計算節(jié)點仍處于正常工作狀態(tài),該計算節(jié)點可以正常領取和處理子任務。需要說明的是,通過子任務鎖來鎖定和領取子任務,保證了每個子任務在同一時間內(nèi),只能被一個計算節(jié)點領取和處理,這樣避免了子任務被重復領取和重復處理的情況,提高了子任務的領取效率和處理效率。需要說明的是,可以將計算節(jié)點設置為同一時間內(nèi)只能向任務池領取一個任務,也可以將計算節(jié)點設置為同一時間內(nèi)可以向任務池領取多個任務。若計算節(jié)點同時向任務池領取多個任務時,該計算節(jié)點的守護進程,可用生成多個子任務鎖信息。所述多個子任務鎖,分別向任務池鎖定子任務。s240:計算節(jié)點生成與領取到的子任務對應的任務線程并利用該任務線程執(zhí)行該子任務。計算節(jié)點在領取子任務后,生成與該子任務對應的任務線程,并利用該任務線程對該子任務進行處理。通過這種異步線程的方式實現(xiàn)對子任務的獲取和處理。計算節(jié)點內(nèi)部可以設置一個更新時長,用于更新最近鎖定時間。該更新時長一般不大于上述預設的超時時長。計算節(jié)點領取子任務后,每隔一個更新時長,該計算節(jié)點會判斷領取到的子任務是否在所述子任務鎖信息中的鎖定該子任務的時間戳之后的預設的更新時長內(nèi)執(zhí)行完畢;若否,計算節(jié)點判斷該子任務是否在執(zhí)行中;若該子任務在執(zhí)行中,計算節(jié)點將領取到的子任務的狀態(tài)信息中的最近鎖定時間的時間戳更新為當前時間戳。若由于子任務在被計算節(jié)點領取超過超時時長而未被執(zhí)行,或子任務在執(zhí)行過程中出現(xiàn)異常等情況而導致子任務執(zhí)行失敗的,計算節(jié)點將該子任務的狀態(tài)信息中的子任務鎖信息(即表2中最新子任務鎖)和最近鎖定時間進行清空,并將該子任務的當前任務狀態(tài)置于可用,其被鎖定次數(shù)不做調(diào)整。子任務在執(zhí)行失敗后至重新設置為可用的狀態(tài)的階段,為子任務的重置階 段。具體的,在子任務的重置階段,計算節(jié)點可以通過任務線程的操作,實現(xiàn)子任務的重置。具體的,子任務執(zhí)行失敗所在的任務線程預設一個重試時間間隔,接著該任務線程在等待重試時間間隔后,將該子任務的子任務鎖信息和最近鎖定時間進行清空,并將該子任務的當前任務狀態(tài)重置為可用。在該子任務被重置為可用后,符合領取該子任務條件的計算節(jié)點均可領取該子任務。本申請實施例中,設置重試時間隔,可以使得領取失敗或執(zhí)行失敗的子任務有一個調(diào)整和修復的時間,可以提高該子任務再次被領取和處理的成功率。所述重試時間間隔,可以根據(jù)子任務的狀態(tài)靈活設置。若子任務不需要做相應的調(diào)整,也可以將重試時間間隔設置為零。這樣,領取失敗或執(zhí)行失敗的子任務,可以立刻被重置為可領取的子任務。如表3所述為重置后的子任務狀態(tài)信息:表3:子任務被重置后的狀態(tài)信息最新子任務鎖最近鎖定時間被鎖定次數(shù)當前任務狀態(tài)nullnull1可用表3中可以看出,重置后的子任務的狀態(tài)信息中的最新子任務鎖信息為空,表示該子任務被重置時之前鎖定該子任務的計算節(jié)點的子任務鎖信息被清空,待下一次被計算節(jié)點鎖定時,更新為鎖定該子任務的計算節(jié)點的子任務鎖信息。最近鎖定時間也被清空,待下一次被計算節(jié)點鎖定時更新最近鎖定時間。被鎖定次數(shù)沒有被重置。當前任務狀態(tài)重置為可用,表示重置后的子任務,當前時刻為可以被計算節(jié)點領取和鎖定。本申請實施例中,計算節(jié)點在領取到的子任務被執(zhí)行完畢后,將與該子任務對應的狀態(tài)信息中的當前任務狀態(tài)更新為成功;計算節(jié)點可以逐一檢查所述任務池中包含的每個子任務對應的狀態(tài)信息中的當前任務狀態(tài)是否為成功;若是,計算節(jié)點確定所述待處理的分布式任務執(zhí)行完畢。需要說明的是,每一個被執(zhí)行完畢后的子任務,其在任務池中生命周期也隨即結束,該子任務不會再被其他計算節(jié)點領取和處理。所述計算節(jié)點檢查所述任務池中的每個子任務是否執(zhí)行完畢,還可以是在該計算節(jié)點判斷領取到的子任務均執(zhí)行完畢后,向任務池提交已完成的子任務,并進行下一輪子任務的領取,而領取子任務失敗的情況下進行的。本申請實施例,計算節(jié)點通過守護進程對自身健康指標值監(jiān)測,并根據(jù)健康指標值對應的預設閾值,判斷該計算節(jié)點是否可以獲取子任務。在滿足領取子任務的條件下,計算節(jié)點向任務池獲取子任務并進行處理。與現(xiàn)有技術相比,本申請實施例中這種計算節(jié)點主動地進行任務領取動作,無需額外設置用以與各計算節(jié)點進行心跳連接并進行任務分發(fā)的控制節(jié)點,從而避免控制節(jié)點對計算節(jié)點群的規(guī)模的限制,使得計算節(jié)點群的規(guī)模更加靈活。且本申請實施例中,計算節(jié)點通過守護進程生成的子任務鎖信息,向任務池獲取子任務。計算節(jié)點的這種通過鎖機制領取子任務,并采用異步線程的方式實現(xiàn)對子任務的獲取和處理的方法,可以大大提高分布式任務處理效率。本申請實施例還提供一種分布式任務處理的裝置,可以實現(xiàn)上述的方法步驟,且該裝置可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為邏輯意義上的裝置,是通過服務器的cpu(centralprocessunit,中央處理器)將對應的計算機程序指令讀取到內(nèi)存中運行形成的。圖4為本申請一實施例中的分布式任務處理裝置的模塊示意圖。其中,該裝置中的各個單元實現(xiàn)的功能與上述方法中包含的各個步驟實現(xiàn)的功能類似,故該裝置中的各個單元可以參照上述方法中的各個步驟的具體內(nèi)容。本實施例中,與上述方法對應的,所述裝置包括:獲取單元301,用于通過守護進程監(jiān)測該計算節(jié)點的至少一個健康指標值;判斷單元302,用于根據(jù)所述健康指標值及與該健康指標值對應的預設閾值,判斷該計算節(jié)點是否具有從預先存儲有若干子任務的任務池中領取子任務的權限;其中,所述子任務是通過將待處理的分布式任務進行拆分得到的;領取單元303,用于在計算節(jié)點具有領取子任務的權限時,從所述任務池中領取至少一個子任務;生成單元304,用于生成與領取到的子任務對應的任務線程并利用該任務線程執(zhí)行該子任務。如圖4所示的分布式任務處理裝置,所述裝置還包括:子任務鎖生成單元,用于通過守護進程生成與領取到的子任務對應的子任務鎖信息;其中,所述子任務鎖信息包含領取該子任務的計算節(jié)點的標識id及鎖定該子任務的時間戳;子任務狀態(tài)更新單元,用于利用所述子任務鎖信息對領取到的子任務的狀態(tài)信息進行更新。如圖4所示的分布式任務處理裝置,所述裝置還包括:任務執(zhí)行狀態(tài)判斷單元,用于判斷領取到的子任務是否在所述子任務鎖信息中的鎖定該子任務的時間戳之后的預設更新時長內(nèi)執(zhí)行完畢。如圖4所示的分布式任務處理裝置,所述裝置還包括:閾值確定單元,用于根據(jù)任務池中存儲的子任務需消耗計算節(jié)點的資源量,確定與健康指標值對應的預設閾值。如圖4所示的分布式任務處理裝置,所述裝置還包括:更新單元,用于在領取到的子任務執(zhí)行完畢后,將與該子任務對應的狀態(tài)信息中的當前任務狀態(tài)更新為成功;任務檢查單元,用于逐一檢查所述任務池中包含的每個子任務對應的狀態(tài)信息中的當前任務狀態(tài)是否為成功。本申請實施例,計算節(jié)點通過獲取單元對自身健康指標值監(jiān)測,判斷單元根據(jù)健康指標值對應的預設閾值,判斷該計算節(jié)點是否可以獲取子任務。在滿足領取子任務的條件下,計算節(jié)點的領取單元向任務池獲取子任務,并通過處理單元生成任務線程對所述子任務進行處理。與現(xiàn)有技術相比,本申請實施例中這種計算節(jié)點的領取單元主動地進行任務領取動作,無需額外設置用以與各計算節(jié)點進行心跳連接并進行任務分發(fā)的控制節(jié)點,從而避免控制節(jié)點對計算節(jié)點群的規(guī)模的限制,使得計算節(jié)點群的規(guī)模更加靈活。且本申請實施例中, 計算節(jié)點通過子任務鎖生成單元生成的子任務鎖信息,向任務池獲取子任務。計算節(jié)點的這種通過鎖機制領取子任務,避免不同計算節(jié)點之間重復領取同一個子任務,從而大大提高分布式任務處理效率。上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。為了描述的方便,描述以上裝置時以功能分為各種單元分別描述。當然,在實施本申請時可以把各單元的功能在同一個或多個軟件和/或硬件中實現(xiàn)。本領域內(nèi)的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個 流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設備中還存在另外的相同要素。本領域技術人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、 光學存儲器等)上實施的計算機程序產(chǎn)品的形式。本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求范圍之內(nèi)。當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1