本申請涉及計(jì)算機(jī)計(jì)算領(lǐng)域,具體涉及一種分布式任務(wù)調(diào)度系統(tǒng)及方法。
背景技術(shù):
云計(jì)算技術(shù)經(jīng)過多年的發(fā)展已經(jīng)日漸成熟,虛擬化、云網(wǎng)絡(luò)以及云安全等技術(shù)在不斷發(fā)展。云計(jì)算給社會(huì)帶來的IT(Internet Technology,互聯(lián)網(wǎng)技術(shù))服務(wù)按需使用、IT資源高效利用、綠色節(jié)能等巨大的經(jīng)濟(jì)效益和社會(huì)效益,不僅使美國、歐盟、日本等發(fā)達(dá)國家的政府將其列入國家發(fā)展戰(zhàn)略,甚至亞非拉等廣大發(fā)展中國家也已經(jīng)非常重視,各國國家級(jí)數(shù)據(jù)中心已經(jīng)在雨后春筍般地建設(shè)。云計(jì)算大規(guī)模應(yīng)用的技術(shù)條件和環(huán)境已經(jīng)具備,云數(shù)據(jù)中心的建設(shè)已經(jīng)成為業(yè)界不可扭轉(zhuǎn)的趨勢。
在現(xiàn)有技術(shù)中,單點(diǎn)的數(shù)據(jù)中心對提交的任務(wù)進(jìn)行調(diào)度執(zhí)行時(shí)會(huì)面臨大任務(wù)、高并發(fā)的挑戰(zhàn),隨著業(yè)務(wù)的擴(kuò)張和功能的累積,對任務(wù)處理的要求越來越高,既要保證高效性,又要保證安全性、準(zhǔn)確性的需求下,現(xiàn)有的數(shù)據(jù)中心任務(wù)調(diào)度方式無法高效處理任務(wù)的調(diào)度執(zhí)行,很難適應(yīng)快速變更的需求。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环N分布式任務(wù)調(diào)度系統(tǒng)及方法,以解決現(xiàn)有技術(shù)中存在的無法高效處理任務(wù)調(diào)度執(zhí)行的技術(shù)問題。
為解決上述問題,本申請?zhí)峁┑募夹g(shù)方案如下:
一種分布式任務(wù)調(diào)度系統(tǒng),所述系統(tǒng)包括:
任務(wù)提交集群、任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群;所述任務(wù)提交集群包括多個(gè)任務(wù)客戶端節(jié)點(diǎn),所述任務(wù)調(diào)度集群包括多個(gè)任務(wù)調(diào)度節(jié)點(diǎn),所述任務(wù)執(zhí)行集群包括多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);
所述任務(wù)提交集群中的所述任務(wù)客戶端節(jié)點(diǎn)用于向所述任務(wù)調(diào)度集群提交任務(wù);
所述任務(wù)調(diào)度集群中的所述任務(wù)調(diào)度節(jié)點(diǎn)用于接收所述任務(wù),生成所述任務(wù)的任務(wù)分配信息,按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群;
所述任務(wù)執(zhí)行集群中的所述任務(wù)執(zhí)行節(jié)點(diǎn)用于執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
相應(yīng)的,所述任務(wù)調(diào)度節(jié)點(diǎn)包括主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn),所述任務(wù)執(zhí)行節(jié)點(diǎn)包括主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn);
所述主任務(wù)調(diào)度節(jié)點(diǎn)用于從所述任務(wù)客戶端節(jié)點(diǎn)接收所述任務(wù),并將所述任務(wù)分配給任意一個(gè)從任務(wù)調(diào)度節(jié)點(diǎn);
所述從任務(wù)調(diào)度節(jié)點(diǎn)用于在接收到所述任務(wù)后生成所述任務(wù)的任務(wù)分配信息,按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群;
所述主任務(wù)執(zhí)行節(jié)點(diǎn)用于接收所述任務(wù),并將所述任務(wù)分配給從一個(gè)或多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);
所述從任務(wù)執(zhí)行節(jié)點(diǎn)用于在接收到所述任務(wù)后執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
相應(yīng)的,所述系統(tǒng)還包括:
分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)zookeeper節(jié)點(diǎn),所述zookeeper節(jié)點(diǎn)分別與所述任務(wù)提交集群、所述任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群相連;
所述zookeeper節(jié)點(diǎn)用于保持與各個(gè)所述任務(wù)客戶端節(jié)點(diǎn)、各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)的連接,保存各個(gè)所述任務(wù)客戶端節(jié)點(diǎn)、各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息;根據(jù)各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)的連接信息在所述任務(wù)調(diào)度節(jié)點(diǎn)中確定所述主任務(wù)調(diào)度節(jié)點(diǎn)以及所述從任務(wù)調(diào)度節(jié)點(diǎn);根據(jù)各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息在所述任務(wù)執(zhí)行節(jié)點(diǎn)中確定所述主任務(wù)執(zhí)行節(jié)點(diǎn)以及所述從任務(wù)執(zhí)行節(jié)點(diǎn)。
相應(yīng)的,所述系統(tǒng)還包括:
公共服務(wù)模塊,所述任務(wù)提交集群通過所述公共服務(wù)模塊與所述任務(wù)調(diào)度集群相連,所述任務(wù)調(diào)度集群通過所述公共服務(wù)模塊與所述任務(wù)執(zhí)行集群相連,所述任務(wù)執(zhí)行集群通過所述公共服務(wù)模塊與所述任務(wù)提交集群相連。
相應(yīng)的,所述公共服務(wù)模塊包括:
消息中間件、分布式數(shù)據(jù)庫以及分布式緩存;
所述分布式數(shù)據(jù)庫用于保存所述任務(wù)的任務(wù)分配信息、所述任務(wù)的執(zhí)行日志以及所述執(zhí)行結(jié)果;
所述消息中間件用于接收所述任務(wù)客戶端節(jié)點(diǎn)向所述任務(wù)調(diào)度集群提交的任務(wù),將所述任務(wù)發(fā)送到所述任務(wù)調(diào)度集群;接收所述任務(wù)調(diào)度節(jié)點(diǎn)向所述任務(wù)執(zhí)行集群發(fā)送的所述任務(wù),將所述任務(wù)發(fā)送到所述任務(wù)調(diào)度集群;接收所述任務(wù)執(zhí)行節(jié)點(diǎn)向所述提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)發(fā)送的執(zhí)行結(jié)果,將所述執(zhí)行結(jié)果發(fā)送到所述提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn);
所述分布式緩存用于當(dāng)所述執(zhí)行結(jié)果需要緩存時(shí)緩存所述執(zhí)行結(jié)果。
一種分布式任務(wù)調(diào)度方法,所述方法應(yīng)用于分布式任務(wù)調(diào)度系統(tǒng),所述系統(tǒng)包括:任務(wù)提交集群、任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群;所述任務(wù)提交集群包括多個(gè)任務(wù)客戶端節(jié)點(diǎn),所述任務(wù)調(diào)度集群包括多個(gè)任務(wù)調(diào)度節(jié)點(diǎn),所述任務(wù)執(zhí)行集群包括多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);所述方法包括:
所述任務(wù)提交集群中的所述任務(wù)客戶端節(jié)點(diǎn)向所述任務(wù)調(diào)度集群提交任務(wù);
所述任務(wù)調(diào)度集群中的所述任務(wù)調(diào)度節(jié)點(diǎn)接收所述任務(wù),生成所述任務(wù)的任務(wù)分配信息,按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群;
所述任務(wù)執(zhí)行集群中的所述任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
相應(yīng)的,所述任務(wù)調(diào)度節(jié)點(diǎn)包括主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn),所述任務(wù)執(zhí)行節(jié)點(diǎn)包括主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn);
所述任務(wù)調(diào)度集群中的所述任務(wù)調(diào)度節(jié)點(diǎn)接收所述任務(wù),生成所述任務(wù)的任務(wù)分配信息,按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群,包括:
所述主任務(wù)調(diào)度節(jié)點(diǎn)從所述任務(wù)客戶端節(jié)點(diǎn)接收所述任務(wù),并將所述任務(wù)分配給任意一個(gè)從任務(wù)調(diào)度節(jié)點(diǎn);
所述從任務(wù)調(diào)度節(jié)點(diǎn)在接收到所述任務(wù)后生成所述任務(wù)的任務(wù)分配信息,按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群;
所述任務(wù)執(zhí)行集群中的所述任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn),包括:
所述主任務(wù)執(zhí)行節(jié)點(diǎn)接收所述任務(wù),并將所述任務(wù)分配給從一個(gè)或多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);
所述從任務(wù)執(zhí)行節(jié)點(diǎn)在接收到所述任務(wù)后執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
相應(yīng)的,分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)zookeeper節(jié)點(diǎn),所述zookeeper節(jié)點(diǎn)分別與所述任務(wù)提交集群、所述任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群相連;所述方法還包括:
各個(gè)所述任務(wù)客戶端節(jié)點(diǎn)、各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)與所述zookeeper節(jié)點(diǎn)保持連接;
所述zookeeper節(jié)點(diǎn)保存各個(gè)所述任務(wù)客戶端節(jié)點(diǎn)、各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息;
所述zookeeper節(jié)點(diǎn)根據(jù)各個(gè)所述任務(wù)調(diào)度節(jié)點(diǎn)的連接信息在所述任務(wù)調(diào)度節(jié)點(diǎn)中確定所述主任務(wù)調(diào)度節(jié)點(diǎn)以及所述從任務(wù)調(diào)度節(jié)點(diǎn);根據(jù)各個(gè)所述任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息在所述任務(wù)執(zhí)行節(jié)點(diǎn)中確定所述主任務(wù)執(zhí)行節(jié)點(diǎn)以及所述從任務(wù)執(zhí)行節(jié)點(diǎn)。
相應(yīng)的,公共服務(wù)模塊,所述任務(wù)提交集群通過所述公共服務(wù)模塊與所述任務(wù)調(diào)度集群相連,所述任務(wù)調(diào)度集群通過所述公共服務(wù)模塊與所述任務(wù)執(zhí)行集群相連,所述任務(wù)執(zhí)行集群通過所述公共服務(wù)模塊與所述任務(wù)提交集群相連。
相應(yīng)的,所述公共服務(wù)模塊包括:消息中間件、分布式數(shù)據(jù)庫以及分布式緩存;所述方法還包括:
將所述任務(wù)的任務(wù)分配信息、所述任務(wù)的執(zhí)行日志以及所述執(zhí)行結(jié)果保存到所述分布式數(shù)據(jù)庫;
當(dāng)所述執(zhí)行結(jié)果需要緩存時(shí)將所述執(zhí)行結(jié)果緩存到所述分布式緩存;
所述任務(wù)提交集群中的所述任務(wù)客戶端節(jié)點(diǎn)向所述任務(wù)調(diào)度集群提交任務(wù),包括:所述任務(wù)提交集群中的所述任務(wù)客戶端節(jié)點(diǎn)通過所述消息中間件向所述任務(wù)調(diào)度集群提交任務(wù);
所述任務(wù)調(diào)度集群中的所述任務(wù)調(diào)度節(jié)點(diǎn)接收所述任務(wù),包括:所述任務(wù)調(diào)度集群中的所述任務(wù)調(diào)度節(jié)點(diǎn)通過所述消息中間件接收所述任務(wù);
所述按照所述任務(wù)分配信息將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群,包括:按照所述任務(wù)分配信息通過所述消息中間件將所述任務(wù)發(fā)送給所述任務(wù)執(zhí)行集群;
所述任務(wù)執(zhí)行集群中的所述任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn),包括:所述任務(wù)執(zhí)行集群中的所述任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行所述任務(wù)并將執(zhí)行結(jié)果通過所述消息中間件返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
由此可見,本申請實(shí)施例具有如下有益效果:
本發(fā)明實(shí)施例通過任務(wù)調(diào)度集群中的多個(gè)任務(wù)調(diào)度節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行調(diào)度,且任務(wù)執(zhí)行集群中的多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行執(zhí)行,實(shí)現(xiàn)負(fù)載均衡,當(dāng)有更大的任務(wù)負(fù)載量時(shí),可以高效地對任務(wù)進(jìn)行調(diào)度及執(zhí)行,從而提高任務(wù)調(diào)度執(zhí)行的效率,滿足快速變更的需求。
附圖說明
圖1為本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例一的示意圖;
圖2為本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例二的示意圖;
圖3為本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例三的示意圖;
圖4為本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例的原理流程圖;
圖5為本申請實(shí)施例中提供的分布式任務(wù)調(diào)度方法實(shí)施例的流程圖。
具體實(shí)施方式
為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對本申請實(shí)施例作進(jìn)一步詳細(xì)的說明。
參見圖1所示,示出了本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例一的示意圖,可以包括:
任務(wù)提交集群101、任務(wù)調(diào)度集群102以及任務(wù)執(zhí)行集群103。
其中,任務(wù)提交集群包括多個(gè)任務(wù)客戶端節(jié)點(diǎn),任務(wù)調(diào)度集群包括多個(gè)任務(wù)調(diào)度節(jié)點(diǎn),任務(wù)執(zhí)行集群包括多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);。
在本實(shí)施例中,任務(wù)客戶端節(jié)點(diǎn)可以為使用數(shù)據(jù)中心服務(wù)的租戶的客戶端,也可以為數(shù)據(jù)中心中安裝的客戶端,任務(wù)調(diào)度節(jié)點(diǎn)可以為同一數(shù)據(jù)中心的不同服務(wù)器,也可以為不同數(shù)據(jù)中心中的不同服務(wù)器,任務(wù)執(zhí)行節(jié)點(diǎn)可以為同一數(shù)據(jù)中心的不同服務(wù)器,也可以為不同數(shù)據(jù)中心中的不同服務(wù)器。本實(shí)施例充分考慮系統(tǒng)的健壯性、擴(kuò)擴(kuò)展性、持續(xù)交付性,所以使用分布式架構(gòu)實(shí)現(xiàn),其優(yōu)勢在于使用該系統(tǒng)架構(gòu)具有很強(qiáng)的健壯性和容錯(cuò)性。
在本實(shí)施例中,任務(wù)提交集群中的任務(wù)客戶端節(jié)點(diǎn)可以用于向任務(wù)調(diào)度集群提交任務(wù);
任務(wù)調(diào)度集群中的任務(wù)調(diào)度節(jié)點(diǎn)可以用于接收任務(wù),生成任務(wù)的任務(wù)分配信息,按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群;
任務(wù)執(zhí)行集群中的任務(wù)執(zhí)行節(jié)點(diǎn)可以用于執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
參見圖2所示,示出了本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例二的示意圖,在本申請一些可能的實(shí)現(xiàn)方式中,任務(wù)調(diào)度節(jié)點(diǎn)可以包括主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn),任務(wù)執(zhí)行節(jié)點(diǎn)可以包括主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn)。
主任務(wù)調(diào)度節(jié)點(diǎn)可以用于從任務(wù)客戶端節(jié)點(diǎn)接收任務(wù),并將任務(wù)分配給任意一個(gè)從任務(wù)調(diào)度節(jié)點(diǎn);從任務(wù)調(diào)度節(jié)點(diǎn)可以用于在接收到任務(wù)后生成任務(wù)的任務(wù)分配信息,按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群;主任務(wù)執(zhí)行節(jié)點(diǎn)可以用于接收任務(wù),并將任務(wù)分配給從一個(gè)或多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);從任務(wù)執(zhí)行節(jié)點(diǎn)可以用于在接收到任務(wù)后執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
在實(shí)際應(yīng)用中,任務(wù)調(diào)度集群具有一網(wǎng)絡(luò)地址,任務(wù)客戶端節(jié)點(diǎn)可以根據(jù)該網(wǎng)絡(luò)地址將任務(wù)提交給任務(wù)調(diào)度集群;任務(wù)調(diào)度集群內(nèi)部首先由主任務(wù)調(diào)度節(jié)點(diǎn)接收任務(wù)客戶端節(jié)點(diǎn)提交的任務(wù),主任務(wù)調(diào)度節(jié)點(diǎn)再根據(jù)任務(wù)調(diào)度集群中各個(gè)從任務(wù)調(diào)度節(jié)點(diǎn)的負(fù)載情況將該任務(wù)分配給某一個(gè)從任務(wù)調(diào)度節(jié)點(diǎn),從任務(wù)調(diào)度節(jié)點(diǎn)在接收到任務(wù)后,生成任務(wù)分配信息,任務(wù)分配信息可以包括提交時(shí)間、執(zhí)行優(yōu)先級(jí)等信息,從任務(wù)調(diào)度節(jié)點(diǎn)可以按照優(yōu)先級(jí)順序、提交時(shí)間順序?qū)⑷蝿?wù)分發(fā)給任務(wù)執(zhí)行集群。
類似的,任務(wù)調(diào)度集群具有一網(wǎng)絡(luò)地址,從任務(wù)調(diào)度節(jié)點(diǎn)可以根據(jù)該網(wǎng)絡(luò)地址在需要對任務(wù)進(jìn)行分配時(shí)將任務(wù)發(fā)送給任務(wù)執(zhí)行集群;任務(wù)執(zhí)行集群內(nèi)部首先由主任務(wù)執(zhí)行節(jié)點(diǎn)接收該任務(wù),主任務(wù)執(zhí)行節(jié)點(diǎn)再根據(jù)任務(wù)執(zhí)行集群中各個(gè)從任務(wù)執(zhí)行節(jié)點(diǎn)的負(fù)載情況將該任務(wù)分配給一個(gè)或多個(gè)從任務(wù)調(diào)度節(jié)點(diǎn)進(jìn)行執(zhí)行,可以理解的是,如果該任務(wù)為一個(gè)并發(fā)任務(wù)則需要多個(gè)從任務(wù)調(diào)度節(jié)點(diǎn)共同執(zhí)行;這里主任務(wù)執(zhí)行節(jié)點(diǎn)會(huì)優(yōu)先將任務(wù)分配給比較空閑的從任務(wù)調(diào)度節(jié)點(diǎn),達(dá)到負(fù)載均衡。從任務(wù)調(diào)度節(jié)點(diǎn)在執(zhí)行完畢后產(chǎn)生執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
參見圖3所示,示出了本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例三的示意圖,在上述實(shí)施例的基礎(chǔ)上,在本申請一些可能的實(shí)現(xiàn)方式中,本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)還可以包括:zookeeper(分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng))節(jié)點(diǎn)301,zookeeper節(jié)點(diǎn)分別與任務(wù)提交集群、任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群相連。
zookeeper節(jié)點(diǎn)可以用于保持與各個(gè)任務(wù)客戶端節(jié)點(diǎn)、各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接,保存各個(gè)任務(wù)客戶端節(jié)點(diǎn)、各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息;根據(jù)各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)的連接信息在任務(wù)調(diào)度節(jié)點(diǎn)中確定主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn);根據(jù)各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息在任務(wù)執(zhí)行節(jié)點(diǎn)中確定主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn)。
在本實(shí)施例中,zookeeper節(jié)點(diǎn)保存有任務(wù)策略,可以進(jìn)行主任務(wù)調(diào)度節(jié)點(diǎn)以及主任務(wù)執(zhí)行節(jié)點(diǎn)的選舉,如果主任務(wù)調(diào)度節(jié)點(diǎn)或者主任務(wù)執(zhí)行節(jié)點(diǎn)故障,zookeeper節(jié)點(diǎn)可以自動(dòng)選取一個(gè)新的主任務(wù)調(diào)度節(jié)點(diǎn)或者主任務(wù)執(zhí)行節(jié)點(diǎn),這樣保證整個(gè)系統(tǒng)的高可靠性和可擴(kuò)展性。同時(shí),zookeeper存儲(chǔ)各個(gè)任務(wù)客戶端節(jié)點(diǎn)、各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息,例如心跳信息數(shù)據(jù)等,隨著業(yè)務(wù)量數(shù)據(jù)量的增多,當(dāng)前集群可能不能滿足目前的處理需求,那么就需要增加服務(wù)器數(shù)量,一個(gè)新的服務(wù)器(即一個(gè)節(jié)點(diǎn))上線后會(huì)在zookeeper中創(chuàng)建一個(gè)代表當(dāng)前服務(wù)器的唯一性路徑(臨時(shí)節(jié)點(diǎn)),并且新上線的服務(wù)器會(huì)和zookeeper保持長連接,當(dāng)通信斷開后,節(jié)點(diǎn)會(huì)自動(dòng)摘除。
另外,在本申請一些可能的實(shí)現(xiàn)方式中,本申請實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)還可以包括:公共服務(wù)模塊302,任務(wù)提交集群通過公共服務(wù)模塊與任務(wù)調(diào)度集群相連,任務(wù)調(diào)度集群通過公共服務(wù)模塊與任務(wù)執(zhí)行集群相連,任務(wù)執(zhí)行集群通過公共服務(wù)模塊與任務(wù)提交集群相連。公共服務(wù)模塊可以包括:消息中間件、分布式數(shù)據(jù)庫以及分布式緩存。
其中,分布式數(shù)據(jù)庫可以用于保存任務(wù)的任務(wù)分配信息、任務(wù)的執(zhí)行日志以及執(zhí)行結(jié)果;
消息中間件可以用于接收任務(wù)客戶端節(jié)點(diǎn)向任務(wù)調(diào)度集群提交的任務(wù),將任務(wù)發(fā)送到任務(wù)調(diào)度集群;接收任務(wù)調(diào)度節(jié)點(diǎn)向任務(wù)執(zhí)行集群發(fā)送的任務(wù),將任務(wù)發(fā)送到任務(wù)調(diào)度集群;接收任務(wù)執(zhí)行節(jié)點(diǎn)向提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)發(fā)送的執(zhí)行結(jié)果,將執(zhí)行結(jié)果發(fā)送到提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn);
分布式緩存可以用于當(dāng)執(zhí)行結(jié)果需要緩存時(shí)緩存執(zhí)行結(jié)果。
也即消息中間件用于各個(gè)集群之間進(jìn)行消息通信,分布式數(shù)據(jù)庫可以存儲(chǔ)任務(wù)隊(duì)列和任務(wù)執(zhí)行日志,分布式緩存記錄各個(gè)集群之間的共享數(shù)據(jù)以及需要緩存的執(zhí)行結(jié)果。
參見圖4所示,示出了本發(fā)明實(shí)施例中提供的分布式任務(wù)調(diào)度系統(tǒng)實(shí)施例的原理流程圖,本發(fā)明實(shí)施例的分布式任務(wù)調(diào)度系統(tǒng)的工作原理可以包括:
任務(wù)提交集群中的某個(gè)任務(wù)客戶端節(jié)點(diǎn)生成一個(gè)新的任務(wù),并且通過消息中間件提交到任務(wù)調(diào)度集群;任務(wù)客戶端節(jié)點(diǎn)判斷是否提交成功,如果沒有提交成功則重新再次提交,否則繼續(xù)執(zhí)行;任務(wù)調(diào)度集群接收到任務(wù)后,由主任務(wù)調(diào)度節(jié)點(diǎn)生成一個(gè)新的任務(wù)標(biāo)識(shí),由從任務(wù)調(diào)度節(jié)點(diǎn)對該任務(wù)進(jìn)行分配,發(fā)現(xiàn)有可用的任務(wù)執(zhí)行集群節(jié)點(diǎn)(組)之后,將優(yōu)先級(jí)最大、最先提交的任務(wù)通過消息中間件分發(fā)給任務(wù)執(zhí)行集群;可選的,可以將該任務(wù)標(biāo)識(shí)對應(yīng)的任務(wù)分配信息保存到分布式數(shù)據(jù)庫中;任務(wù)執(zhí)行集群收到任務(wù)后,由主任務(wù)執(zhí)行節(jié)點(diǎn)進(jìn)行分配,有從任務(wù)執(zhí)行節(jié)點(diǎn)進(jìn)行執(zhí)行;可選的,如果由執(zhí)行結(jié)果需要寫入分布式緩存則寫入分布式緩存,例如需要定時(shí)發(fā)送的執(zhí)行結(jié)果等等;另外,還可以將任務(wù)的執(zhí)行日志以及執(zhí)行結(jié)果寫入分布式數(shù)據(jù)庫,最后如果需要將執(zhí)行結(jié)果反饋給任務(wù)客戶端節(jié)點(diǎn)則通過消息中間件將執(zhí)行結(jié)果發(fā)送給任務(wù)客戶端節(jié)點(diǎn)。
這樣,本發(fā)明實(shí)施例通過任務(wù)調(diào)度集群中的多個(gè)任務(wù)調(diào)度節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行調(diào)度,且任務(wù)執(zhí)行集群中的多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行執(zhí)行,實(shí)現(xiàn)負(fù)載均衡,當(dāng)有更大的任務(wù)負(fù)載量時(shí),可以高效地對任務(wù)進(jìn)行調(diào)度及執(zhí)行,從而提高任務(wù)調(diào)度執(zhí)行的效率,滿足快速變更的需求。
參見圖5所示,示出了一種分布式任務(wù)調(diào)度方法實(shí)施例的流程圖,該方法可以應(yīng)用于分布式任務(wù)調(diào)度系統(tǒng),該系統(tǒng)的相關(guān)說明可以參見上述實(shí)施例,該系統(tǒng)可以包括:任務(wù)提交集群、任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群;任務(wù)提交集群包括多個(gè)任務(wù)客戶端節(jié)點(diǎn),任務(wù)調(diào)度集群包括多個(gè)任務(wù)調(diào)度節(jié)點(diǎn),任務(wù)執(zhí)行集群包括多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);該方法實(shí)施例可以包括以下步驟:
步驟501:任務(wù)提交集群中的任務(wù)客戶端節(jié)點(diǎn)向任務(wù)調(diào)度集群提交任務(wù)。
步驟502:任務(wù)調(diào)度集群中的任務(wù)調(diào)度節(jié)點(diǎn)接收任務(wù),生成任務(wù)的任務(wù)分配信息,按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群。
步驟503:任務(wù)執(zhí)行集群中的任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
在本申請一些可能的實(shí)現(xiàn)方式中,任務(wù)調(diào)度節(jié)點(diǎn)可以包括主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn),任務(wù)執(zhí)行節(jié)點(diǎn)包括主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn);
任務(wù)調(diào)度集群中的任務(wù)調(diào)度節(jié)點(diǎn)接收任務(wù),生成任務(wù)的任務(wù)分配信息,按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群的具體實(shí)現(xiàn)可以包括:
主任務(wù)調(diào)度節(jié)點(diǎn)從任務(wù)客戶端節(jié)點(diǎn)接收任務(wù),并將任務(wù)分配給任意一個(gè)從任務(wù)調(diào)度節(jié)點(diǎn);
從任務(wù)調(diào)度節(jié)點(diǎn)在接收到任務(wù)后生成任務(wù)的任務(wù)分配信息,按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群;
任務(wù)執(zhí)行集群中的任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)的具體實(shí)現(xiàn)可以包括:
主任務(wù)執(zhí)行節(jié)點(diǎn)接收任務(wù),并將任務(wù)分配給從一個(gè)或多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn);
從任務(wù)執(zhí)行節(jié)點(diǎn)在接收到任務(wù)后執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
在本申請一些可能的實(shí)現(xiàn)方式中,該系統(tǒng)還可以包括:分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng)zookeeper節(jié)點(diǎn),zookeeper節(jié)點(diǎn)分別與任務(wù)提交集群、任務(wù)調(diào)度集群以及任務(wù)執(zhí)行集群相連;該方法實(shí)施例還可以包括:
各個(gè)任務(wù)客戶端節(jié)點(diǎn)、各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)與zookeeper節(jié)點(diǎn)保持連接;
zookeeper節(jié)點(diǎn)保存各個(gè)任務(wù)客戶端節(jié)點(diǎn)、各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)以及各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息;
zookeeper節(jié)點(diǎn)根據(jù)各個(gè)任務(wù)調(diào)度節(jié)點(diǎn)的連接信息在任務(wù)調(diào)度節(jié)點(diǎn)中確定主任務(wù)調(diào)度節(jié)點(diǎn)以及從任務(wù)調(diào)度節(jié)點(diǎn);根據(jù)各個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)的連接信息在任務(wù)執(zhí)行節(jié)點(diǎn)中確定主任務(wù)執(zhí)行節(jié)點(diǎn)以及從任務(wù)執(zhí)行節(jié)點(diǎn)。
在本申請一些可能的實(shí)現(xiàn)方式中,該系統(tǒng)還可以包括:公共服務(wù)模塊,任務(wù)提交集群通過公共服務(wù)模塊與任務(wù)調(diào)度集群相連,任務(wù)調(diào)度集群通過公共服務(wù)模塊與任務(wù)執(zhí)行集群相連,任務(wù)執(zhí)行集群通過公共服務(wù)模塊與任務(wù)提交集群相連。
在本申請一些可能的實(shí)現(xiàn)方式中,公共服務(wù)模塊可以包括:消息中間件、分布式數(shù)據(jù)庫以及分布式緩存;該方法實(shí)施例還可以包括:
將任務(wù)的任務(wù)分配信息、任務(wù)的執(zhí)行日志以及執(zhí)行結(jié)果保存到分布式數(shù)據(jù)庫;
當(dāng)執(zhí)行結(jié)果需要緩存時(shí)將執(zhí)行結(jié)果緩存到分布式緩存;
任務(wù)提交集群中的任務(wù)客戶端節(jié)點(diǎn)向任務(wù)調(diào)度集群提交任務(wù),包括:任務(wù)提交集群中的任務(wù)客戶端節(jié)點(diǎn)通過消息中間件向任務(wù)調(diào)度集群提交任務(wù);
任務(wù)調(diào)度集群中的任務(wù)調(diào)度節(jié)點(diǎn)接收任務(wù),包括:任務(wù)調(diào)度集群中的任務(wù)調(diào)度節(jié)點(diǎn)通過消息中間件接收任務(wù);
按照任務(wù)分配信息將任務(wù)發(fā)送給任務(wù)執(zhí)行集群,包括:按照任務(wù)分配信息通過消息中間件將任務(wù)發(fā)送給任務(wù)執(zhí)行集群;
任務(wù)執(zhí)行集群中的任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行任務(wù)并將執(zhí)行結(jié)果返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn),包括:任務(wù)執(zhí)行集群中的任務(wù)執(zhí)行節(jié)點(diǎn)執(zhí)行任務(wù)并將執(zhí)行結(jié)果通過消息中間件返回給提交任務(wù)的任務(wù)客戶端節(jié)點(diǎn)。
這樣,本發(fā)明實(shí)施例通過任務(wù)調(diào)度集群中的多個(gè)任務(wù)調(diào)度節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行調(diào)度,且任務(wù)執(zhí)行集群中的多個(gè)任務(wù)執(zhí)行節(jié)點(diǎn)可以對接收到的任務(wù)并行進(jìn)行執(zhí)行,實(shí)現(xiàn)負(fù)載均衡,當(dāng)有更大的任務(wù)負(fù)載量時(shí),可以高效地對任務(wù)進(jìn)行調(diào)度及執(zhí)行,從而提高任務(wù)調(diào)度執(zhí)行的效率,滿足快速變更的需求。
需要說明的是,本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分互相參見即可。對于實(shí)施例公開的系統(tǒng)或裝置而言,由于其與實(shí)施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本申請。對這些實(shí)施例的多種修改對本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本申請的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本申請將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。