本發(fā)明涉及任務(wù)調(diào)度技術(shù),尤其涉及一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制及系統(tǒng)。
背景技術(shù):
在某些需要周期執(zhí)行固定任務(wù)的場(chǎng)景下,當(dāng)任務(wù)錄入完成后,任務(wù)會(huì)被定期喚醒執(zhí)行,部分場(chǎng)景還對(duì)任務(wù)的執(zhí)行次數(shù)有所要求(比如撥測(cè)程序需執(zhí)行多次保證采樣的可靠性和統(tǒng)計(jì)準(zhǔn)確度),傳統(tǒng)的任務(wù)隊(duì)列在此場(chǎng)景無(wú)法勝任,一些簡(jiǎn)單的分布式算法無(wú)法實(shí)現(xiàn)任務(wù)的隨機(jī)分配。
如公開(kāi)號(hào)為CN 104915259A的中國(guó)專(zhuān)利提供了一種應(yīng)用于分布式采集系統(tǒng)的任務(wù)調(diào)度方法,在控制臺(tái)上設(shè)置任務(wù)調(diào)度策略,即確定任務(wù)名稱(chēng)、最大線程數(shù)、執(zhí)行任務(wù)的所有采集程序服務(wù)器地址信息;再將采集任務(wù)動(dòng)態(tài)分配到集群的若干服務(wù)器中,每臺(tái)服務(wù)器都配備采集程序且執(zhí)行不同的采集任務(wù),從而完成動(dòng)態(tài)采集監(jiān)控。然而,該方法無(wú)法對(duì)任務(wù)進(jìn)行隨機(jī)分配,也無(wú)法對(duì)同一個(gè)任務(wù)執(zhí)行多次。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是:提供一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制及系統(tǒng),能夠?qū)τ袌?zhí)行次數(shù)要求的任務(wù)進(jìn)行隨機(jī)分配。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,包括:
獲取可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值;
將所述執(zhí)行單元的哈希值和所述任務(wù)的哈希值分配至一致性哈希環(huán)上;
獲取所述任務(wù)的執(zhí)行次數(shù);
確定在所述一致性哈希環(huán)上的查找方向;
按照所述查找方向在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;所述n的數(shù)值與所述執(zhí)行次數(shù)的數(shù)值相同;
獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
本發(fā)明提供的另一個(gè)技術(shù)方案為:
一種基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng),包括:
第一獲取模塊,用于獲取可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值;
分配模塊,用于將所述哈希值和所述任務(wù)的哈希值分配至一致性哈希環(huán)上;
第二獲取模塊,用于獲取所述任務(wù)的執(zhí)行次數(shù);
查找模塊,用于按照預(yù)設(shè)的查找方向在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;所述n的數(shù)值與所述執(zhí)行次數(shù)的數(shù)值相同;
第三獲取模塊,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
映射模塊,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
列表建立模塊,用于依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
本發(fā)明的有益效果在于:通過(guò)將執(zhí)行單元的哈希值和任務(wù)的哈希值分配在一致性哈希環(huán)上,執(zhí)行單元和任務(wù)的哈希值在一致性哈希環(huán)上的位置是確定的,從而將任務(wù)和執(zhí)行單元相關(guān)聯(lián)時(shí),在一致性哈希環(huán)上按照預(yù)設(shè)的順時(shí)針?lè)较蚧蚰鏁r(shí)針?lè)较蛘业脚c該任務(wù)位置最接近的對(duì)應(yīng)執(zhí)行單元的哈希值,該哈希值所對(duì)應(yīng)的執(zhí)行單元即與該任務(wù)對(duì)應(yīng),實(shí)現(xiàn)任務(wù)的隨機(jī)分配;同時(shí),如果任務(wù)的執(zhí)行次數(shù)為多次,則按照順時(shí)針?lè)较蚧蚰鏁r(shí)針?lè)较蛘业脚c該任務(wù)位置最接近的多個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值,即找到多個(gè)執(zhí)行單元,為該任務(wù)和執(zhí)行單元建立映射關(guān)系;然后再依據(jù)該映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表,從而執(zhí)行單元能夠依據(jù)該映射表執(zhí)行相應(yīng)的任務(wù)。本發(fā)明將一致性哈希算法應(yīng)用于調(diào)度機(jī)制中,相比傳統(tǒng)的一個(gè)執(zhí)行單元只能執(zhí)行一個(gè)固定的任務(wù)的方法,具有執(zhí)行單元與任務(wù)之間能夠靈活匹配的優(yōu)點(diǎn)。
附圖說(shuō)明
圖1為本發(fā)明一實(shí)施例的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的流程圖;
圖2為本發(fā)明一實(shí)施例的基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例一的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的映射示意圖一;
圖4為本發(fā)明實(shí)施例一的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的映射示意圖二;
圖5為本發(fā)明實(shí)施例二的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的映射示意圖;
圖6為本發(fā)明實(shí)施例三的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的映射示意圖;
圖7為本發(fā)明實(shí)施例四的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的映射示意圖;
圖8為本發(fā)明實(shí)施例六的基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖;
圖9為本發(fā)明實(shí)施例七的基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖;
圖10為本發(fā)明實(shí)施例八的基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng)的結(jié)構(gòu)示意圖。
標(biāo)號(hào)說(shuō)明:
1、第一獲取模塊;2、分配模塊;3、第二獲取模塊;4、第一查找模塊;5、第三獲取模塊;6、第一映射模塊;7、列表建立模塊;8、第一刪除模塊;9、第一更新模塊;10、第二刪除模塊;11、第四獲取模塊;12、第二查找模塊;13、第五獲取模塊;14、第二映射模塊;15、第二更新模塊;16、新增模塊;17、第三查找模塊;18、第六獲取模塊;19、第三映射模塊;20、第三更新模塊。
具體實(shí)施方式
為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖予以說(shuō)明。
本發(fā)明最關(guān)鍵的構(gòu)思在于:將執(zhí)行單元和任務(wù)的哈希值分配至一致性哈希環(huán)上,在一致性哈希環(huán)上尋找與任務(wù)的哈希值位置最近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值,n的數(shù)值與任務(wù)的執(zhí)行次數(shù)的數(shù)值相同。
請(qǐng)參照?qǐng)D1,本發(fā)明提供一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,包括:
獲取可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值;
將所述執(zhí)行單元的哈希值和所述任務(wù)的哈希值分配至一致性哈希環(huán)上;
獲取所述任務(wù)的執(zhí)行次數(shù);
按照預(yù)設(shè)的查找方向在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;所述n的數(shù)值與所述執(zhí)行次數(shù)的數(shù)值相同;
獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,本發(fā)明基于一致性哈希算法的任務(wù)調(diào)度機(jī)制的有益效果在于:將一致性哈希算法運(yùn)用到任務(wù)調(diào)度技術(shù),使得任務(wù)和執(zhí)行單元之間能夠靈活匹配。
進(jìn)一步的,所述任務(wù)的數(shù)量為兩個(gè)以上,建立一任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系后,依次建立其他各任務(wù)與各任務(wù)對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系,并依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,如果任務(wù)有多個(gè),則對(duì)于每個(gè)任務(wù),都按照上述方法建立任務(wù)與執(zhí)行單元的映射關(guān)系,各任務(wù)之間不會(huì)相互影響。如果需要增加新任務(wù),也只需將新任務(wù)的哈希值分配至上述一致性哈希環(huán)上,按照相同的方法,建立新任務(wù)與一致性哈希環(huán)上的執(zhí)行單元之間的映射關(guān)系即可,已有的映射關(guān)系保持不變。
進(jìn)一步的,建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系之后,進(jìn)一步包括:
若任務(wù)被刪除,則清除所述任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系;依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表;在所述一致性哈希環(huán)上刪除所述任務(wù)的哈希值。
從上述描述可知,當(dāng)任務(wù)被刪除、無(wú)需再執(zhí)行時(shí),將該任務(wù)與執(zhí)行單元的映射關(guān)系刪除,同時(shí)在一致性哈希環(huán)上刪除該任務(wù)的哈希值,便不會(huì)為該任務(wù)分配執(zhí)行單元了。
進(jìn)一步的,建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系之后,進(jìn)一步包括:
若執(zhí)行單元被刪除,則在所述一致性哈希環(huán)上刪除所述執(zhí)行單元的哈希值;
獲取與所述執(zhí)行單元對(duì)應(yīng)的任務(wù)以及所述任務(wù)的執(zhí)行次數(shù)n;
按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,如果執(zhí)行單元被刪除,則只會(huì)影響分配在該執(zhí)行單元上的任務(wù),因此現(xiàn)將該執(zhí)行單元的哈希值從一致性哈希環(huán)上刪除,再對(duì)原來(lái)分配在該執(zhí)行單元的任務(wù)在一致性哈希環(huán)上從新查找對(duì)應(yīng)執(zhí)行單元的哈希值,重新建立該任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系即可。
進(jìn)一步的,建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系之后,進(jìn)一步包括:
若新增了執(zhí)行單元,將新增的執(zhí)行單元的哈希值分配至一致性哈希環(huán)上;
按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,當(dāng)新增加執(zhí)行單元之后,任務(wù)與執(zhí)行單元在哈希環(huán)中的相對(duì)位置發(fā)生變化,部分任務(wù)與執(zhí)行單元的關(guān)系因新執(zhí)行單元的插入發(fā)生變化,因此需要重新根據(jù)一致性哈希算法去建立受影響任務(wù)與執(zhí)行單元的映射關(guān)系。
請(qǐng)參照?qǐng)D2,本發(fā)明的另一個(gè)技術(shù)方案為:
一種基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng),包括:
第一獲取模塊1,用于獲取可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值;
分配模塊2,用于將所述哈希值和所述任務(wù)的哈希值分配至一致性哈希環(huán)上;
第二獲取模塊3,用于獲取所述任務(wù)的執(zhí)行次數(shù);
第一查找模塊4,用于按照預(yù)設(shè)的查找方向在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;所述n的數(shù)值與所述執(zhí)行次數(shù)的數(shù)值相同;
第三獲取模塊5,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第一映射模塊6,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
列表建立模塊7,用于依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,本發(fā)明基于一致性哈希算法的分布式任務(wù)調(diào)度系統(tǒng)的有益效果在于:第一獲取模塊獲取了執(zhí)行單元和任務(wù)的哈希值后,分配模塊將獲取到的哈希值分配到一致性哈希環(huán)上,確定了執(zhí)行單元和任務(wù)之間的哈希值在一致性哈希環(huán)上的位置;第二獲取模塊獲取任務(wù)的執(zhí)行次數(shù),從而第一查找模塊能夠在一致性哈希環(huán)上查找與任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值,第三獲取模塊再獲取與n個(gè)哈希值對(duì)應(yīng)的執(zhí)行單元,最后通過(guò)第一映射模塊建立該任務(wù)與執(zhí)行單元的映射關(guān)系;由于n的數(shù)值和執(zhí)行次數(shù)的數(shù)值相同,即每一次執(zhí)行該任務(wù)都分配了一個(gè)執(zhí)行單元,滿(mǎn)足了任務(wù)需要執(zhí)行多次的調(diào)度需求,再通過(guò)列表建立模塊建立執(zhí)行單元到任務(wù)的映射表,從而執(zhí)行單元能夠依據(jù)該映射表執(zhí)行相應(yīng)的任務(wù)。
進(jìn)一步的,所述任務(wù)的數(shù)量為兩個(gè)以上,第一映射模塊6還用于:在建立一任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系后,依次建立其他各任務(wù)與各任務(wù)對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系,列表建立模塊7依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
進(jìn)一步的,還包括:
第一刪除模塊8,用于若任務(wù)被刪除,則清除所述任務(wù)與對(duì)應(yīng)執(zhí)行單元的映射關(guān)系;第一更新模塊9,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表;在所述一致性哈希環(huán)上刪除所述任務(wù)的哈希值。
從上述描述可知,通過(guò)第一刪除模塊刪除被刪除的任務(wù)的映射關(guān)系以及該任務(wù)在一致性哈希環(huán)上的哈希值,從而不會(huì)再為該任務(wù)分配執(zhí)行單元,減少了數(shù)據(jù)緩存。
進(jìn)一步的,還包括:
第二刪除模塊10,用于若執(zhí)行單元被刪除,則在所述一致性哈希環(huán)上刪除所述執(zhí)行單元的哈希值;
第四獲取模塊11,用于獲取與所述執(zhí)行單元對(duì)應(yīng)的任務(wù)以及所述任務(wù)的執(zhí)行次數(shù)n;
第二查找模塊12,用于按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
第五獲取模塊13,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第二映射模塊14,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
第二更新模塊15,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,通過(guò)第二刪除模塊刪除被刪除執(zhí)行單元在一致性哈希環(huán)上的哈希值,分配在該執(zhí)行單元上的任務(wù)需要新的執(zhí)行單元,從而通過(guò)第四獲取模塊、第二查找模塊、第五獲取模塊和第二映射模塊根據(jù)新的一致性哈希環(huán)對(duì)該任務(wù)重新建立與執(zhí)行單元的映射關(guān)系。
進(jìn)一步的,還包括:
新增模塊16,用于若新增了執(zhí)行單元,將新增的執(zhí)行單元的哈希值分配至一致性哈希環(huán)上;
第三查找模塊17,用于按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
第六獲取模塊18,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第三映射模塊19,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
第三更新模塊20,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
從上述描述可知,由于新增了執(zhí)行單元,之前的任務(wù)需要重新分配執(zhí)行單元,因此,首先通過(guò)新增模塊將新增的執(zhí)行單元的哈希值分配至一致性哈希環(huán)上,然后通過(guò)第三查找模塊、第六獲取模塊和第三映射模塊根據(jù)新的一致性哈希環(huán)對(duì)所有任務(wù)建立與執(zhí)行單元的映射關(guān)系。
請(qǐng)參照?qǐng)D3以及圖4,本發(fā)明的實(shí)施例一為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,包括
執(zhí)行單元首次啟動(dòng)時(shí),會(huì)生成唯一的ID碼,將所述ID碼作為所述執(zhí)行單元的哈希值;錄入任務(wù)時(shí),依據(jù)任務(wù)的信息(如,任務(wù)信息里面有ID)得到任務(wù)的哈希值;
將已經(jīng)注冊(cè)的執(zhí)行單元,即可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值分配至一致性哈希環(huán)上;其中可用的執(zhí)行單包括執(zhí)行單元1、執(zhí)行單元2和執(zhí)行單元3;待執(zhí)行的任務(wù)包括任務(wù)1和任務(wù)2,如圖3所示;
獲取待執(zhí)行的任務(wù)1的執(zhí)行次數(shù)n,任務(wù)1只需要執(zhí)行一次,即n為1;
選取逆時(shí)針?lè)较?,查找與任務(wù)1的哈希值位置最近的1個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;從圖3可以看出,與任務(wù)1的哈希值位置最近的是執(zhí)行單元2的哈希值;
獲取與所述與任務(wù)1的哈希值位置最近的1個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的1個(gè)執(zhí)行單元;即執(zhí)行單元1;
建立任務(wù)1與執(zhí)行單元1的映射關(guān)系;
同理,獲取任務(wù)2的執(zhí)行次數(shù)2,在上述一致性哈希環(huán)上按逆時(shí)針?lè)较虿檎遗c任務(wù)2的哈希值位置最接近的2個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值,即執(zhí)行單元1和執(zhí)行單元3的哈希值,因此建立任務(wù)2與執(zhí)行單元1、執(zhí)行單元3的映射關(guān)系;
依據(jù)上述映射關(guān)系建立各執(zhí)行單元到任務(wù)的映射表,例如,執(zhí)行單元1——任務(wù)2,執(zhí)行單元2——任務(wù)1,執(zhí)行單元3——任務(wù)2。執(zhí)行單元要執(zhí)行任務(wù)時(shí),即可請(qǐng)求對(duì)應(yīng)的映射表,執(zhí)行映射表中相應(yīng)的任務(wù)。
如果要增加任務(wù)3,則將任務(wù)3的哈希值增加到一致性哈希環(huán)上,如圖4所示。任務(wù)3需要執(zhí)行2次,按照上述方法在圖4的一致性哈希環(huán)上找到與任務(wù)3的哈希值位置最接近的執(zhí)行單元3和執(zhí)行單元2所對(duì)應(yīng)的哈希值,建立任務(wù)3與執(zhí)行單元3、執(zhí)行單元2的映射關(guān)系,然后將執(zhí)行單元3到任務(wù)3、執(zhí)行單元2到任務(wù)3的映射表,任務(wù)1和任務(wù)2不受影響。
請(qǐng)參照?qǐng)D5,本發(fā)明的實(shí)施例二為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,與上述實(shí)施例一的區(qū)別在于:
上述映射關(guān)系建立之后,若任務(wù)2被刪除,則清除所述任務(wù)與對(duì)應(yīng)執(zhí)行單元的映射關(guān)系;依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表,即刪除執(zhí)行單元1到任務(wù)2、執(zhí)行單元3——任務(wù)2的映射表;在一致性哈希環(huán)上也清除所述任務(wù)在一致性哈希環(huán)上的哈希值,任務(wù)1與執(zhí)行單元2、任務(wù)3與執(zhí)行單元3和執(zhí)行單元2的映射關(guān)系不變。如圖5所示。
請(qǐng)參照?qǐng)D6,本發(fā)明的實(shí)施例三為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,與上述實(shí)施例二的區(qū)別在于:
上述映射關(guān)系建立之后,若執(zhí)行單元2掉線,即執(zhí)行單元2不可用,被刪除,則在一致性哈希環(huán)上刪除執(zhí)行單元2的哈希值,如圖6所示;由于在實(shí)施例一中執(zhí)行單元2與任務(wù)1和任務(wù)3之間均建立了映射關(guān)系,因此對(duì)任務(wù)1和任務(wù)3,按照按上述方法,依據(jù)圖5中的一致性哈希環(huán),建立任務(wù)1與執(zhí)行單元、任務(wù)3與執(zhí)行單元3和執(zhí)行單元1的映射關(guān)系,并依據(jù)該映射關(guān)系更新執(zhí)行單元到任務(wù)的映射表。
請(qǐng)參照?qǐng)D7,本發(fā)明的實(shí)施例四為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,與上述實(shí)施例三的區(qū)別在于:
上述映射關(guān)系建立之后,若新增了執(zhí)行單元4,則在一致性哈希環(huán)上增加執(zhí)行單元4的哈希值,如圖7所示;按照上述方法依據(jù)圖7中的一致性哈希環(huán),建立任務(wù)1與執(zhí)行單元1、任務(wù)3與執(zhí)行單元4和執(zhí)行單元3的映射關(guān)系,并依據(jù)該映射關(guān)系更新執(zhí)行單元到任務(wù)的映射關(guān)系。
請(qǐng)參照?qǐng)D2,本發(fā)明的實(shí)施例五為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制系統(tǒng),包括:
執(zhí)行單元、任務(wù)緩存單元和調(diào)度中心,執(zhí)行單元注冊(cè)至調(diào)度中心,任務(wù)緩存至任務(wù)緩存單元后,任務(wù)緩存單元將任務(wù)信息發(fā)送至調(diào)度中心,其中,調(diào)度中心包括:
第一獲取模塊1,用于獲取可用的執(zhí)行單元的哈希值和待執(zhí)行的任務(wù)的哈希值;
分配模塊2,用于將所述哈希值和所述任務(wù)的哈希值分配至一致性哈希環(huán)上;
第二獲取模塊3,用于獲取所述任務(wù)的執(zhí)行次數(shù);
第一查找模塊4,用于按照所述查找方向在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;所述n的數(shù)值與所述執(zhí)行次數(shù)的數(shù)值相同;
第三獲取模塊5,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第一映射模塊6,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
所述任務(wù)的數(shù)量為兩個(gè),建立一任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系后,依次建立另一任務(wù)與對(duì)應(yīng)的執(zhí)行單元的映射關(guān)系,列表建立模塊7,用于依據(jù)所述映射關(guān)系建立執(zhí)行單元到任務(wù)的映射表。
請(qǐng)參照?qǐng)D8,本發(fā)明的實(shí)施例六為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,與上述實(shí)施例五的區(qū)別在于,還包括:
第一刪除模塊8,用于若任務(wù)被刪除,則清除所述任務(wù)與對(duì)應(yīng)執(zhí)行單元的映射關(guān)系;第一更新模塊9,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表;在所述一致性哈希環(huán)上刪除所述任務(wù)的哈希值。
請(qǐng)參照?qǐng)D9,本發(fā)明的實(shí)施例七為:
一種基于一致性哈希算法的任務(wù)調(diào)度機(jī)制,與上述實(shí)施例五的區(qū)別在于,還包括:
第二刪除模塊10,用于若執(zhí)行單元被刪除,則在所述一致性哈希環(huán)上刪除所述執(zhí)行單元的哈希值;
第四獲取模塊11,用于獲取與所述執(zhí)行單元對(duì)應(yīng)的任務(wù)以及所述任務(wù)的執(zhí)行次數(shù)n;
第二查找模塊12,用于按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
第五獲取模塊13,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第二映射模塊14,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
第二更新模塊15,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
請(qǐng)參照?qǐng)D10,本發(fā)明的實(shí)施例八為:
一種基于一致性哈希算法的任務(wù)調(diào)度系統(tǒng),與上述實(shí)施例五的區(qū)別在于,還包括:
新增模塊16,用于若新增了執(zhí)行單元,將新增的執(zhí)行單元的哈希值分配至一致性哈希環(huán)上;
第三查找模塊17,用于按照所述查找方向,在所述一致性哈希環(huán)上查找與所述任務(wù)的哈希值位置最接近的n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值;
第六獲取模塊18,用于獲取與所述n個(gè)對(duì)應(yīng)執(zhí)行單元的哈希值對(duì)應(yīng)的n個(gè)執(zhí)行單元;
第三映射模塊19,用于建立所述任務(wù)與所述n個(gè)執(zhí)行單元的映射關(guān)系;
第三更新模塊20,用于依據(jù)所述映射關(guān)系更新所述執(zhí)行單元到任務(wù)的映射表。
綜上所述,本發(fā)明提供的基于一致性哈希算法的任務(wù)調(diào)度機(jī)制及系統(tǒng),任務(wù)和執(zhí)行單元之間可以隨機(jī)匹配,并且,同一個(gè)任務(wù)可以分配到不同的執(zhí)行單元,能夠滿(mǎn)足一個(gè)任務(wù)執(zhí)行多次的要求。本發(fā)明最終建立執(zhí)行單元到任務(wù)的映射表,從而執(zhí)行單元能夠依據(jù)該映射表執(zhí)行相應(yīng)的任務(wù)。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。