
本發(fā)明涉及工作節(jié)點領取任務,尤其涉及主動領取任務的方法、工作節(jié)點、系統(tǒng)及存儲介質。
背景技術:
:為了保證服務的可擴展性和高可用性,將服務從單一服務實體擴展成集群協同工作的服務實體(工作節(jié)點)是非常有意義的。通過負載均衡算法,主工作節(jié)點選舉,廣播系統(tǒng)等方法管理集群中各個工作節(jié)點的地址信息(ip地址),可以實現某個任務能夠被分發(fā)到集群的某臺工作節(jié)點。為了能夠協同工作,集群中的各個工作節(jié)點需要定期發(fā)送一個心跳信息。在沒有客戶端的集群中,通常需要一個主工作節(jié)點負責任務的分配。主工作節(jié)點將所有任務分別分配給各個工作節(jié)點,也就是說,各個工作節(jié)點根據主工作節(jié)點的分配來被動地領取任務,然后對領取的任務進行處理。在這種情況下,主工作節(jié)點中除了具有與其他工作節(jié)點相同的處理邏輯之外,不可避免地增加有用于分配的計算邏輯,因此,主工作節(jié)點的工作方式與其他各個工作節(jié)點的工作方式不同。這就導致整個集群架構的差異性,從而增加了整個集群架構的異構程度性。另一方面,在某個任務錯誤地同時被兩個工作節(jié)點領取的情況下,還會導致任務領取沖突的問題。技術實現要素:本發(fā)明提供了一種主動領取任務的方法,多個工作節(jié)點中的每個工作節(jié)點周期地進行以下步驟,以從數據中心主動領取任務:s0)從所述數據中心中獲取多個任務以及多個當前工作節(jié)點信息,并根據所述多個任務以及所述多個當前工作節(jié)點信息,進行一致性哈希計算,得到多個實際工作節(jié)點信息;s1)根據所述多個當前工作節(jié)點信息,判斷所述多個任務中的當前任務是否被領取,如果否,則進入步驟s2),如果是,則進入步驟s3);s2)根據所述多個實際工作節(jié)點信息,將所述當前任務添加到所述數據中心中的所述多個當前工作節(jié)點信息中,并進入步驟s10);s3)根據所述多個當前工作節(jié)點信息,判斷所述當前任務是否被本地領取,如果是,則進入s4,否則進入s10;s4)判斷所述當前任務在多個當前工作節(jié)點信息中對應的當前工作節(jié)點是否與所述當前任務在所述多個實際工作節(jié)點信息中對應的實際工作節(jié)點相同,如果是,則進入s6,否則進入s5;s5)從本地任務列表中判斷所述當前任務的處理狀態(tài),如果是第一狀態(tài)或第二狀態(tài),則進入步驟s9,如果是第三狀態(tài)或第四狀態(tài),則進入s8;s6)判斷所述當前任務是否在所述本地任務列表中,如果是,則進入s10,否則進入s7;s7)將所述當前任務添加到所述本地任務列表中,并進入s10;s8)從所述本地任務列表中刪除所述當前任務,并根據所述多個實際工作節(jié)點信息,將所述當前任務更新到所述數據中心中的多個當前工作節(jié)點信息中,并且進入s10;s9)將所述當前任務的所述處理狀態(tài)設置為所述第二狀態(tài),并且進入s10;s10)判斷所述當前任務是否是所述多個任務中的最后一個任務,如果是,則返回s0,否則進入s11;s11)將所述多個任務中的下一個任務確定作為所述當前任務,并返回s1。所述第一狀態(tài)是指所述當前任務正在被本地處理,所述第二狀態(tài)是指所述當前任務正在被本地處理、且不能被本地再次處理,所述第三狀態(tài)是指所述當前任務已被本地處理結束,所述第四狀態(tài)是指所述當前任務已被本地處理結束、且不能被本地再次處理。所述每個工作節(jié)點周期地將所述本地任務列表傳送給所述數據中心,用于更新所述多個當前工作節(jié)點信息。所述多個當前工作節(jié)點信息中的每個當前工作節(jié)點信息包括當前工作節(jié)點、當前領取任務、以及當前更新時間,其中,所述每個工作節(jié)點將所述本地任務列表傳送給所述數據中心的時間作為所述當前更新時間。所述多個實際工作節(jié)點信息中的每個實際工作節(jié)點信息包括所述當前任務和實際工作節(jié)點,其中,在步驟s2)中,將所述當前任務對應的所述實際工作節(jié)點作為所述當前工作節(jié)點,并將所述當前任務添加作為與所述當前工作節(jié)點對應的所述當前領取任務。所述本地任務列表包含本地領取任務以及對應的處理狀態(tài),所述處理狀態(tài)包括所述第一狀態(tài)、所述第二狀態(tài)、所述第三狀態(tài)、所述第四狀態(tài),其中,當時是本地領取任務處于所述第二狀態(tài)、且已被本地工作節(jié)點處理結束時,將所述本地領取任務的所述處理狀態(tài)設置為所述第四狀態(tài)。步驟s8)中,將所述當前任務對應的所述實際工作節(jié)點作為所述當前工作節(jié)點,并將所述當前任務更新作為與所述當前工作節(jié)點對應的所述當前領取任務。所述數據中心周期地判斷所述當前工作節(jié)點信息中的所述當前更新時間與當前實際時間的差是否大于預定時間,如果是,則刪除所述當前更新時間所對應的當前工作節(jié)點信息。本發(fā)明還提供一種主動領取任務的工作節(jié)點,所述工作節(jié)點包括:獲取和計算單元,從數據中心中獲取多個任務以及多個當前工作節(jié)點信息,并根據所述多個任務以及所述多個當前工作節(jié)點信息,進行一致性哈希計算,得到多個實際工作節(jié)點信息;第一判斷單元,根據所述多個當前工作節(jié)點信息,判斷所述多個任務中的當前任務是否被領取,如果否,則進入第一添加單元,如果是,則進入第二判斷單元;第一添加單元,根據所述多個實際工作節(jié)點信息,將所述當前任務添加到所述數據中心中的所述多個當前工作節(jié)點信息中,并進入第五判斷單元;第二判斷單元,根據所述多個當前工作節(jié)點信息,判斷所述當前任務是否被本地工作節(jié)點領取,如果是,則進入第三判斷單元,否則進入第五判斷單元;第三判斷單元,判斷所述當前任務在多個當前工作節(jié)點信息中對應的當前工作節(jié)點是否與所述當前任務在所述多個實際工作節(jié)點信息中對應的實際工作節(jié)點相同,如果是,則進入第四判斷單元,否則進入狀態(tài)判斷單元;狀態(tài)判斷單元,從本地任務列表中判斷所述當前任務的處理狀態(tài),如果是第一狀態(tài)或第二狀態(tài),則進入狀態(tài)設置單元,如果是第三狀態(tài)或第四狀態(tài),則進入刪除和更新單元;第四判斷單元,判斷所述當前任務是否在所述本地任務列表中,如果是,則進入所述第五判斷單元,否則進入第二添加單元;第二添加單元,將所述當前任務添加到所述本地任務列表中,并進入所述第五判斷單元;刪除和更新單元,從所述本地任務列表中刪除所述當前任務,并根據所述多個實際工作節(jié)點信息,將所述當前任務更新到所述數據中心中的多個當前工作節(jié)點信息中,并且進入所述第五判斷單元;狀態(tài)設置單元,將所述當前任務的所述處理狀態(tài)設置為所述第二狀態(tài),并且進入所述第五判斷單元;第五判斷單元,判斷所述當前任務是否是所述多個任務中的最后一個任務,如果是,則返回所述獲取和計算單元,否則進入當前任務確定單元;當前任務確定單元,將所述多個任務中的下一個任務確定作為所述當前任務,并返回所述第一判斷單元。本發(fā)明提供一種主動領取任務的系統(tǒng),所述系統(tǒng)包括:數據中心,所述數據中心中存儲多個任務以及多個當前工作節(jié)點信息,多個如權利要求9-16中任一項所述的工作節(jié)點,每個工作節(jié)點周期地從所述數據中心領取任務。進一步,本發(fā)明提供一種非易失性存儲介質,在所述非易失性存儲介質上存儲有主動領取任務的程序,所述程序被計算機執(zhí)行以實施主動領取任務的方法,所述程序包括:獲取和計算指令,從數據中心中獲取多個任務以及多個當前工作節(jié)點信息,并根據所述多個任務以及所述多個當前工作節(jié)點信息,進行一致性哈希計算,得到多個實際工作節(jié)點信息;第一判斷指令,根據所述多個當前工作節(jié)點信息,判斷所述多個任務中的當前任務是否被領取,如果否,則進入第一添加指令,如果是,則進入第二判斷指令;第一添加指令,根據所述多個實際工作節(jié)點信息,將所述當前任務添加到所述數據中心中的所述多個當前工作節(jié)點信息中;第二判斷指令,根據所述多個當前工作節(jié)點信息,判斷所述當前任務是否被本地工作節(jié)點領取,如果是,則進入第三判斷指令,否則進入第五判斷指令;第三判斷指令,判斷所述當前任務在多個當前工作節(jié)點信息中對應的當前工作節(jié)點是否與所述當前任務在所述多個實際工作節(jié)點信息中對應的實際工作節(jié)點相同,如果是,則進入第四判斷指令,否則進入狀態(tài)判斷指令;狀態(tài)判斷指令,從本地任務列表中判斷所述當前任務的處理狀態(tài),如果是第一狀態(tài)或第二狀態(tài),則進入狀態(tài)設置指令,如果是第三狀態(tài)或第四狀態(tài),則進入刪除和更新指令;第四判斷指令,判斷所述當前任務是否在所述本地任務列表中,如果是,則進入所述第五判斷指令,否則進入第二添加指令;第二添加指令,將所述當前任務添加到所述本地任務列表中,并進入所述第五判斷指令;刪除和更新指令,從所述本地任務列表中刪除所述當前任務,并根據所述多個實際工作節(jié)點信息,將所述當前任務更新到所述數據中心中的多個當前工作節(jié)點信息中,并且進入所述第五判斷指令;狀態(tài)設置指令,將所述當前任務的所述處理狀態(tài)設置為所述第二狀態(tài),并且進入所述第五判斷指令;第五判斷指令,判斷所述當前任務是否是所述多個任務中的最后一個任務,如果是,則返回所述獲取和計算指令,否則進入當前任務確定指令;當前任務確定指令,將所述多個任務中的下一個任務確定作為所述當前任務,并返回所述第一判斷指令。通過本發(fā)明,每個工作節(jié)點能夠主動地領取屬于自己的任務,因此不產生遺漏和沖突。另外,每個工作節(jié)點都以相同的方式來主動地領取屬于自己的任務,因此,由多個工作節(jié)點組成的集群的架構的異構程度性被減少。附圖說明圖1是根據本發(fā)明實施例的主動領取任務的系統(tǒng)的示意圖;圖2是根據本發(fā)明實施例的工作節(jié)點的結構圖;圖3是根據本發(fā)明實施例的主動領取任務的方法的流程圖。具體實施方式下面結合附圖,對本發(fā)明的實施例進行詳細說明。圖1是根據本發(fā)明實施例的主動領取任務的系統(tǒng)10的示意圖。該系統(tǒng)10包括數據中心11,多個工作節(jié)點12a、12b、12c……(以下說明某個工作節(jié)點時,稱為工作節(jié)點12)。其中,數據中心11中存儲多個任務(所有任務)以及多個當前工作節(jié)點信息,每個工作節(jié)點周期地從數據中心11領取任務。數據中心11例如可以是數據庫。圖2是根據本發(fā)明實施例的某個工作節(jié)點12的結構圖,如圖2所示,工作節(jié)點12包括獲取和計算單元1200,第一判斷單元1201,第一添加單元1202,第二判斷單元1203,第三判斷單元1204,狀態(tài)判斷單元1205,第四判斷單元1206,第二添加單元1207,刪除和更新單元1208,狀態(tài)設置單元1209,第五判斷單元1210,當前任務確定單元1211。圖3是根據本發(fā)明實施例的主動領取任務的方法的流程圖,多個工作節(jié)點中的每個工作節(jié)點周期地進行圖3中的步驟,以從數據中心11主動領取任務。本實施例以工作節(jié)點12a為例,結合圖1、圖2、圖3,進行詳細說明。如圖3所示,在步驟s0,工作節(jié)點12a中的獲取和計算單元1200從數據中心11中獲取多個任務以及多個當前工作節(jié)點信息,并根據多個任務以及多個當前工作節(jié)點信息,進行一致性哈希計算,得到多個實際工作節(jié)點信息。本實施例中,多個任務例如是5個任務(t1,t2,t3,t4,t5),多個工作節(jié)點例如是3個工作節(jié)點12a、12b、12c,但是任務和工作節(jié)點的個數不限于此。多個當前工作節(jié)點信息中的每個當前工作節(jié)點信息包括當前工作節(jié)點、當前領取任務、以及當前更新時間。本例中,例如,多個當前工作節(jié)點信息如表1所示。表1當前工作節(jié)點當前領取任務當前更新時間12at1,t2t112bt3,t4t212c無t3如表1所示,本例中具有3個當前工作節(jié)點信息,每個當前工作節(jié)點具有對應的當前領取任務和當前更新時間。以下,3個當前工作節(jié)點信息也稱為表1。一致性哈希計算是現有技術中的一種特殊的哈希算法,該術語由davidronkarger首次提出,當時主要用于解決分布式緩存的問題。算法基于一個環(huán)狀的映射表,將任務和工作節(jié)點置于環(huán)上,順時針查找任務所屬的工作節(jié)點。當工作節(jié)點移出集群時,其所屬任務會被環(huán)中下一個工作節(jié)點接管,而當工作節(jié)點添加到集群中時,將會負責其下一個工作節(jié)點的部分任務。本例中,例如根據5個任務,3個當前工作節(jié)點,進行一致性哈希計算,得到多個實際工作節(jié)點信息,多個實際工作節(jié)點信息中的每個實際工作節(jié)點信息包括當前任務和實際工作節(jié)點,本例中,例如表2所示。表2當前任務實際工作節(jié)點t112at212bt312bt412bt512c如表2所示,本例中具有5個實際工作節(jié)點信息,每個實際工作節(jié)點具有對應的當前任務。以下,5個實際工作節(jié)點信息也稱為表2。下面以t1為當前任務,進行說明。在步驟s1,工作節(jié)點12a中的第一判斷單元1201根據表1,判斷5個任務中的當前任務t1是否被領取,如果否,則進入步驟s2,如果是,則進入步驟s3。這里,從表1可以判斷出t1是當前領取任務,即,判斷出t1被領取,則進入步驟s3。在步驟s3,工作節(jié)點12a中的第二判斷單元1203根據表1,判斷當前任務t1是否被本地領取,如果是,則進入步驟s4,否則進入步驟s10。這里,從表1可以判斷出當前任務t1是當前領取任務,且被工作節(jié)點12a所領取,因此判斷出當前任務t1被本地領取,并進入步驟s4。在步驟s4,工作節(jié)點12a中的第三判斷單元1204判斷當前任務t1在多個當前工作節(jié)點信息中對應的當前工作節(jié)點是否與當前任務t1在多個實際工作節(jié)點信息中對應的實際工作節(jié)點相同,如果是,則進入步驟s6,否則進入步驟s5。當前任務t1在表1中對應的當前工作節(jié)點是工作節(jié)點12a,t1在表2中對應的實際工作節(jié)點是工作節(jié)點12a,判斷出兩者相同,那么進入步驟s6。在步驟s6,工作節(jié)點12a中的第四判斷單元1206判斷當前任務t1是否在本地任務列表中,如果是,則進入步驟s10,否則進入步驟s7。本地任務列表包含本地領取任務以及對應的處理狀態(tài),處理狀態(tài)包括第一狀態(tài)、第二狀態(tài)、第三狀態(tài)和第四狀態(tài)。例如,當前在工作節(jié)點12a中的本地任務列表如表3所示。表3本地領取任務處理狀態(tài)t1第一狀態(tài)t2第三狀態(tài)如圖3所示,工作節(jié)點12a中的本地任務列表在當前具有t1,t2這兩個本地領取任務,且t1的處理狀態(tài)為第一狀態(tài),t2的處理狀態(tài)為第三狀態(tài)。關于處理狀態(tài),將在后面詳細說明。本發(fā)明中,本地任務列表是工作節(jié)點12a當前領取的任務列表,每個任務的處理狀態(tài)會隨著工作節(jié)點12a對任務進行的處理而變化。這里,從表3可以判斷出,當前任務t1在本地任務列表中,那么進行步驟s10。在步驟s10,工作節(jié)點12a中的第五判斷單元1210判斷當前任務t1是否是5個任務中的最后一個任務,如果是,則返回s0,否則進入s11。本例中,判斷出t1不是5個任務中的最后一個任務,因此進入步驟s11。在步驟s11,工作節(jié)點12a中的當前任務確定單元1211將5個任務中的下一個任務確定作為當前任務,并返回步驟s1。這里,下一個任務是t2,那么將t2作為當前任務,并返回步驟s1。接下來,以t2為當前任務,進行說明。在步驟s1,工作節(jié)點12a中的第一判斷單元1201從表1判斷出t2是當前領取任務,即,判斷出t2被領取,則進入步驟s3。在步驟s3,工作節(jié)點12a中的第二判斷單元1203從表1判斷出當前任務t2是當前領取任務,且被工作節(jié)點12a所領取,因此判斷出當前任務t2被本地領取,并進入步驟s4。在步驟s4,工作節(jié)點12a中的第三判斷單元1204判斷出當前任務t2在表1中對應的當前工作節(jié)點是工作節(jié)點12a,t2在表2中對應的實際工作節(jié)點是工作節(jié)點12b,即,判斷出兩者不同,那么進入步驟s5。在步驟s5,狀態(tài)判斷單元1205從本地任務列表中判斷當前任務t2的處理狀態(tài),如果是第一狀態(tài)或第二狀態(tài),則進入步驟s9,如果是第三狀態(tài)或第四狀態(tài),則進入s8。例如,從上述表3判斷出當前任務t2的處理狀態(tài)是第一狀態(tài),則進入步驟s9。這里,第一狀態(tài)是指當前任務正在被本地處理,第二狀態(tài)是指當前任務正在被本地處理、且不能被本地再次處理,第三狀態(tài)是指當前任務已被本地處理結束,第四狀態(tài)是指當前任務已被本地處理結束、且不能被本地再次處理。其中,當表3中的某個任務的工作狀態(tài)是第二狀態(tài)時,在該任務被本地的工作節(jié)點處理完成后,其工作狀態(tài)在表3中被修改為第四狀態(tài),且不會再改變。在步驟s9,狀態(tài)設置單元1209將當前任務t2的處理狀態(tài)設置為第二狀態(tài),并且進入步驟s10。這時,表3中t2對應的處理狀態(tài)被更新為第二狀態(tài)。另外,工作節(jié)點12a會周期地處理表3中的t1、t2,當處于第二狀態(tài)的任務t2被工作節(jié)點12a處理結束時,其工作狀態(tài)就被修改為第四狀態(tài),即,表3中t2對應的處理狀態(tài)被再次更新為第四狀態(tài),且不會再改變。在這種狀態(tài)下,當t2在下一個周期被工作節(jié)點12a作為當前任務時,在步驟s5,狀態(tài)判斷單元1205從本地任務列表(即,表3)中判斷出當前任務t2的處理狀態(tài)是第四狀態(tài),則進入s8。在步驟s8,工作節(jié)點12a的刪除和更新單元1208從本地任務列表中刪除當前任務t2,并根據表2,將當前任務t2更新到數據中心11中的表1中,并且進入s10。其中,刪除和更新單元1208從表3中刪除t2,另外,將當前任務t2對應的實際工作節(jié)點作為當前工作節(jié)點,并將當前任務更新作為與當前工作節(jié)點對應的當前領取任務。本例中,根據表2可以看出當前任務t2對應的實際工作節(jié)點是工作節(jié)點12b,即,確定與t2對應的當前工作節(jié)點是工作節(jié)點12b,然后將t2更新作為表1中工作節(jié)點12b對應的當前領取任務。此時,工作節(jié)點12a中的表3被更新為表3’本地領取任務處理狀態(tài)t1第一狀態(tài)接著,依序對后面的任務t3、t4執(zhí)行圖3中的流程。下面以t5作為當前任務,進行說明。當將t5作為當前任務時,在步驟s1,第一判斷單元1201根據表1,判斷出當前任務t5沒有被任何工作節(jié)點領取,即,表1中的當前任務中沒有t5,那么進入步驟s2。在步驟s2,工作節(jié)點12a中的第一添加單元1202根據多個實際工作節(jié)點信息(即,表2),將當前任務t5添加到數據中心11中的多個當前工作節(jié)點信息(即,表1)中,并進入步驟s10。其中,從表2可以看出當前任務t5對應的實際工作節(jié)點是工作節(jié)點c,并將其作為當前工作節(jié)點,將當前任務t5添加作為與t3對應的當前領取任務,然后進入步驟s10。在步驟s10,判斷出t5是所有5個任務中的最后一個任務,那么返回步驟s0。這里,在工作節(jié)點12a從數據中心11獲取表1時,t5并不在表1中,即t5是新增加的任務,尚未被任何工作節(jié)點領取。通過步驟s1和s2,可以將t5添加到數據中心11的表1中,如此,當其他工作節(jié)點讀取添加有t5的表1時,可以無需重復執(zhí)行步驟s2,從而提高整個集群的領取任務的效率。如上所述,在工作節(jié)點12a從數據中心11讀取表1,并依序對所有5個任務進行圖3中的處理流程之后,一個領取任務周期結束,并且,此時的表1被更新為表1’表1’工作節(jié)點12a周期地進行從數據中心11領取任務的領取任務周期。進一步,每個工作節(jié)點周期地將本地任務列表傳送給數據中心11,用于更新多個當前工作節(jié)點信息。每個工作節(jié)點將本地任務列表傳送給數據中心11的時間作為當前更新時間。這里,以工作節(jié)點12a為例,例如傳送時的本地任務列表是上述表3’,傳送的時間是t1’,那么此時數據中心11中的表1’被再次更新為表1”。表1”當前工作節(jié)點當前領取任務當前更新時間12at1t1’12bt3,t4,t2t212ct5t3本發(fā)明中,每個工作節(jié)點周期地向數據中心11傳送本地任務列表,并且每個工作節(jié)點周期地執(zhí)行從數據中心11領取任務的領取任務周期,兩者是并行的。本發(fā)明中,當第三判斷單元1204在步驟s4判斷出t2在表1中的當前工作節(jié)點與t2在表2中的實際工作節(jié)點不同時,可以判斷出t2在當前時刻已經不屬于工作節(jié)點12a處理的任務,應當將t2交還給應當領取它的工作節(jié)點12b。但是,如果t2正在被工作節(jié)點12a處理時將其交還給工作節(jié)點12b,那么就會出現t2同時被兩個工作節(jié)點領取和處理的情況,即產生了沖突,這是不允許的。因此,本發(fā)明包括步驟s5和s8,從而在t2被工作節(jié)點12a處理結束的情況下,將t2從本地任務列表中刪除,并立刻將t2修改為表1中的工作節(jié)點12b的當前領取任務,即,立刻將t2交還給工作節(jié)點12b。因此,可以避免產生領取沖突。同時,工作節(jié)點12a也可以領取到數據自己的任務t1(如表3’所示)。另外,如果工作節(jié)點12b從數據中心11獲取更新后的表1’,并且將t2作為當前任務,當按照上述圖3中的流程,在步驟s6判斷出t2不在工作節(jié)點12b的本地任務列表中時,則進入步驟s7。在步驟s7,第二添加單元1207將t2添加到工作節(jié)點12b的本地任務列表中,然后進行后續(xù)步驟。如此,工作節(jié)點12b可以主動地領取到屬于自己的任務t2。本發(fā)明中,當本地任務列表中的某個任務被新添加時,其工作狀態(tài)被默認設置為第二狀態(tài)。在該任務被本地工作節(jié)點進行周期性處理之后,其工作狀態(tài)會隨之改變。如上所述,當某個工作節(jié)點(例如工作節(jié)點12b)新增到集群時,在實際領取屬于其的某個任務(例如t2)之前,t2的當前負責工作節(jié)點(例如工作節(jié)點12a)能夠主動將任務交到新增的工作節(jié)點12b上,從而可防止出現任務領取沖突。如此,集群中的每個工作節(jié)點可以主動地領取到屬于自己的任務。進一步,數據中心11周期地判斷當前工作節(jié)點信息中的當前更新時間與當前實際時間的差是否大于預定時間,如果是,則刪除當前更新時間所對應的當前工作節(jié)點信息。例如,本例中的預定時間是30秒。如表1”所示,工作節(jié)點12a對應的當前更新時間是t1’,當前實際時間是ta,且ta與t1’的差例如是35秒,大于預定時間30秒,那么就刪除t1’對應的當前工作節(jié)點信息,即,刪除工作節(jié)點12a及其對應的信息。此時,數據中心中的表1”被再次更新為表1”’。表1”’當前工作節(jié)點當前領取任務當前更新時間12bt3,t4,t2t212ct5t3另外,如果ta與t1’的差例如是15秒,小于預定時間30秒,那么不做任何處理,即,表1”不變。當集群中的某個工作節(jié)點(例如,工作節(jié)點12a)從集群中移出時,就不會周期地向數據中心11傳送其本地任務列表,因此,數據中心11通過周期地進行上述判斷,就可以得知工作節(jié)點12a已從集群中移出,并將工作節(jié)點12a從表”中刪除。如此,當其他工作節(jié)點(例如工作節(jié)點12b、工作節(jié)點12c)從數據中心11獲取到更新的表1”’之后,就會根據例如5個任務,2個工作節(jié)點進行一致性哈希計算,得到相應的實際工作節(jié)點信息。因此,可以確保集群中的每個工作節(jié)點領取到屬于自己的任務。另外,本發(fā)明中,集群中的每個工作節(jié)點都進行如圖3所示的流程,并周期地將本地任務列表傳送給數據中心,即,每個工作節(jié)點的處理邏輯都是相同的。如此,整個集群架構的異構程度性被減少,同時有利于在集群中動態(tài)地增刪工作節(jié)點。此外,每個工作節(jié)點都具有各自的節(jié)點標識符,例如ip地址,用于區(qū)分每個工作節(jié)點,每個任務也具有各自的任務標識符,用于對每個任務進行區(qū)分。雖然經過對本發(fā)明結合具體實施例進行描述,對于本領域的技術技術人員而言,根據上文的敘述后作出的許多替代、修改與變化將是顯而易見。因此,當這樣的替代、修改和變化落入附后的權利要求的精神和范圍之內時,應該被包括在本發(fā)明中。當前第1頁12