本發(fā)明涉及云計(jì)算領(lǐng)域,特別是一種基于隊(duì)列的云平臺(tái)任務(wù)分配方法。
背景技術(shù):
云平臺(tái)中針對(duì)同一個(gè)資源的任務(wù)需要串行執(zhí)行,而針對(duì)不同資源的任務(wù)則可以并行執(zhí)行,云平臺(tái)中必須要處理好串行任務(wù)與并行任務(wù)才能正確地協(xié)調(diào)平臺(tái)中的各項(xiàng)資源。
目前,要處理好云平臺(tái)中的串行與并行任務(wù),必須采用內(nèi)部鎖或者采用第三方的分布式協(xié)調(diào)服務(wù)。但采用內(nèi)部鎖會(huì)造成系統(tǒng)資源的浪費(fèi)并可能有死鎖的風(fēng)險(xiǎn),并且不利于系統(tǒng)的業(yè)務(wù)規(guī)模的擴(kuò)展;而采用分布式協(xié)調(diào)服務(wù)會(huì)對(duì)云平臺(tái)的運(yùn)維管理要求更高。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問(wèn)題,本發(fā)明提供了一種基于隊(duì)列的云平臺(tái)任務(wù)分配方法,所述隊(duì)列包括用于存儲(chǔ)云平臺(tái)中所有任務(wù)的資源任務(wù)隊(duì)列和用于存儲(chǔ)節(jié)點(diǎn)的任務(wù)的節(jié)點(diǎn)任務(wù)隊(duì)列,其中,每一個(gè)所述節(jié)點(diǎn)均對(duì)應(yīng)一個(gè)所述節(jié)點(diǎn)任務(wù)隊(duì)列,所述方法包括:
任務(wù)接收線程接收用戶提交的請(qǐng)求并將所述請(qǐng)求以任務(wù)的形式放入資源任務(wù)隊(duì)列;
任務(wù)調(diào)度線程從所述資源任務(wù)隊(duì)列調(diào)取第一任務(wù),并根據(jù)所述第一任務(wù)的操作節(jié)點(diǎn)將所述第一任務(wù)放入對(duì)應(yīng)的節(jié)點(diǎn)任務(wù)隊(duì)列;
任務(wù)分發(fā)線程從所述節(jié)點(diǎn)任務(wù)隊(duì)列取出所述第一任務(wù)并將所述第一任務(wù)分發(fā)到所述第一任務(wù)的操作節(jié)點(diǎn)以執(zhí)行所述第一任務(wù)。
優(yōu)選地,當(dāng)所述任務(wù)調(diào)度線程從所述資源任務(wù)隊(duì)列調(diào)取所述第一任務(wù)時(shí),所述資源任務(wù)隊(duì)列可以繼續(xù)放入其他任務(wù),但不能被繼續(xù)調(diào)取任務(wù);當(dāng)被調(diào)取的所述第一任務(wù)完成后,所述資源任務(wù)隊(duì)列可以被繼續(xù)調(diào)取其他任務(wù)。
優(yōu)選地,所述節(jié)點(diǎn)任務(wù)隊(duì)列包含計(jì)數(shù)器,每當(dāng)所述任務(wù)分發(fā)線程從所述節(jié)點(diǎn)任務(wù)隊(duì)列取出一個(gè)任務(wù)后,所述計(jì)數(shù)器會(huì)自動(dòng)增加直至達(dá)到上限值。
優(yōu)選地,當(dāng)所述計(jì)數(shù)器達(dá)到上限值時(shí),所述節(jié)點(diǎn)任務(wù)隊(duì)列可以被繼續(xù)放入其他任務(wù),但不能被讀取任務(wù)。
進(jìn)一步,當(dāng)取出的任務(wù)被執(zhí)行完成后,所述計(jì)數(shù)器的值會(huì)減少,此時(shí)所述節(jié)點(diǎn)任務(wù)隊(duì)列可以繼續(xù)被讀取其他任務(wù)。
本發(fā)明還提供一種基于隊(duì)列的云平臺(tái)任務(wù)分配管理系統(tǒng),所述隊(duì)列包括資源任務(wù)隊(duì)列和節(jié)點(diǎn)任務(wù)隊(duì)列,所述資源任務(wù)隊(duì)列用于存儲(chǔ)云平臺(tái)中的所有任務(wù),所述節(jié)點(diǎn)任務(wù)隊(duì)列用于存儲(chǔ)該節(jié)點(diǎn)的所有任務(wù),其特征在于,
所述云平臺(tái)任務(wù)分配管理系統(tǒng)包括:
任務(wù)接收線程,用于接收用戶提交的請(qǐng)求并將所述請(qǐng)求以任務(wù)的形式放入所述資源任務(wù)隊(duì)列里;
任務(wù)調(diào)度線程,用于從所述資源任務(wù)隊(duì)列調(diào)取第一任務(wù),并根據(jù)所述第一任務(wù)的操作節(jié)點(diǎn)將所述第一任務(wù)放入對(duì)應(yīng)的所述節(jié)點(diǎn)任務(wù)隊(duì)列;
任務(wù)分發(fā)線程,用于從所述節(jié)點(diǎn)任務(wù)隊(duì)列取出所述第一任務(wù)并將所述第一任務(wù)分發(fā)到所述第一任務(wù)的操作節(jié)點(diǎn)以執(zhí)行所述第一任務(wù)。
通過(guò)本發(fā)明的云平臺(tái)任務(wù)分配方法和系統(tǒng),能夠?qū)崿F(xiàn)無(wú)鎖的任務(wù)機(jī)制,并能夠減少云平臺(tái)中的資源消耗,避免死鎖;同時(shí),能夠動(dòng)態(tài)分配任務(wù),對(duì)任務(wù)進(jìn)行統(tǒng)一管理,有效降低云平臺(tái)的業(yè)務(wù)邏輯的耦合性,有利于云平臺(tái)的部署和運(yùn)維。
附圖說(shuō)明
圖1為本發(fā)明流程圖。
具體實(shí)施方式
如圖1所示,本發(fā)明提供一種基于隊(duì)列的云平臺(tái)任務(wù)分配方法,所述隊(duì)列包括用于存儲(chǔ)云平臺(tái)中所有任務(wù)的資源任務(wù)隊(duì)列和用于存儲(chǔ)節(jié)點(diǎn)的所有任務(wù)的節(jié)點(diǎn)任務(wù)隊(duì)列,其中,每一個(gè)節(jié)點(diǎn)均對(duì)應(yīng)一個(gè)節(jié)點(diǎn)任務(wù)隊(duì)列,節(jié)點(diǎn)指任務(wù)的操作節(jié)點(diǎn)。
本發(fā)明的方法包括:
s101:任務(wù)接收線程接收用戶提交的請(qǐng)求并將所述請(qǐng)求以任務(wù)的形式放入資源任務(wù)隊(duì)列;
s102:任務(wù)調(diào)度線程從所述資源任務(wù)隊(duì)列調(diào)取第一任務(wù),并根據(jù)所述第一任務(wù)的操作節(jié)點(diǎn)將所述第一任務(wù)放入對(duì)應(yīng)的節(jié)點(diǎn)任務(wù)隊(duì)列;
s103:任務(wù)分發(fā)線程從所述節(jié)點(diǎn)任務(wù)隊(duì)列取出所述第一任務(wù)并將所述第一任務(wù)分發(fā)到所述第一任務(wù)的操作節(jié)點(diǎn)以執(zhí)行所述第一任務(wù)。
進(jìn)一步,資源任務(wù)隊(duì)列是一個(gè)串行隊(duì)列,當(dāng)任務(wù)調(diào)度線程從資源任務(wù)隊(duì)列調(diào)取一個(gè)任務(wù)時(shí),資源任務(wù)隊(duì)列會(huì)進(jìn)入半凍結(jié)狀態(tài)。半凍結(jié)狀態(tài)的資源任務(wù)隊(duì)列可以繼續(xù)放入其他任務(wù),但不能被繼續(xù)讀取任務(wù);當(dāng)被調(diào)取的第一任務(wù)完成后,資源任務(wù)隊(duì)列可以被繼續(xù)讀取其他任務(wù)。
進(jìn)一步,節(jié)點(diǎn)任務(wù)隊(duì)列包含計(jì)數(shù)器,當(dāng)任務(wù)分發(fā)線程從節(jié)點(diǎn)任務(wù)隊(duì)列取出一個(gè)任務(wù)后,所述計(jì)數(shù)器會(huì)自動(dòng)增加一個(gè)直至達(dá)到上限值。當(dāng)計(jì)數(shù)器達(dá)到上限值時(shí),節(jié)點(diǎn)任務(wù)隊(duì)列進(jìn)入半凍結(jié)狀態(tài),此時(shí),該節(jié)點(diǎn)任務(wù)隊(duì)列可以被繼續(xù)放入其他任務(wù),但不能被讀取下一任務(wù)。當(dāng)任務(wù)被執(zhí)行完成后,計(jì)數(shù)器的值會(huì)減少一個(gè),此時(shí)該節(jié)點(diǎn)任務(wù)隊(duì)列可以繼續(xù)被讀取其他任務(wù)。
此外,本發(fā)明還提供一種基于隊(duì)列的云平臺(tái)任務(wù)分配管理系統(tǒng),其中,
所述云平臺(tái)任務(wù)分配管理系統(tǒng)包括:
任務(wù)接收線程,用于接收用戶提交的請(qǐng)求并將所述請(qǐng)求以任務(wù)的形式放入所述資源任務(wù)隊(duì)列里;
任務(wù)調(diào)度線程,用于從所述資源任務(wù)隊(duì)列調(diào)取第一任務(wù),并根據(jù)所述第一任務(wù)的操作節(jié)點(diǎn)將所述第一任務(wù)放入對(duì)應(yīng)的所述節(jié)點(diǎn)任務(wù)隊(duì)列;
任務(wù)分發(fā)線程,用于從所述節(jié)點(diǎn)任務(wù)隊(duì)列取出所述第一任務(wù)并將所述第一任務(wù)分發(fā)到所述第一任務(wù)的操作節(jié)點(diǎn)以執(zhí)行所述第一任務(wù)。
通過(guò)本發(fā)明的云平臺(tái)任務(wù)分配方法和系統(tǒng),能夠?qū)崿F(xiàn)無(wú)鎖的任務(wù)機(jī)制,并能夠減少云平臺(tái)中的資源消耗,避免死鎖;同時(shí),能夠動(dòng)態(tài)分配任務(wù),對(duì)任務(wù)進(jìn)行統(tǒng)一管理,有效降低云平臺(tái)的業(yè)務(wù)邏輯的耦合性,有利于云平臺(tái)的部署和運(yùn)維。