本申請(qǐng)實(shí)施例涉及通信技術(shù)領(lǐng)域,特別涉及一種確定關(guān)鍵節(jié)點(diǎn)方法和設(shè)備。
背景技術(shù):
大型任務(wù)調(diào)度系統(tǒng)中往往包含上萬(wàn)個(gè)工作節(jié)點(diǎn),節(jié)點(diǎn)之間互相依賴(lài)形成一顆龐大的任務(wù)樹(shù),系統(tǒng)運(yùn)行時(shí)需要從根節(jié)點(diǎn)層層判斷哪些任務(wù)的父任務(wù)全部完成,并把滿(mǎn)足條件的任務(wù)啟動(dòng)運(yùn)行。在數(shù)據(jù)倉(cāng)庫(kù)中任務(wù)調(diào)度系統(tǒng)中,任務(wù)經(jīng)常以天為周期進(jìn)行調(diào)度執(zhí)行,但當(dāng)節(jié)點(diǎn)的依賴(lài)關(guān)系日益復(fù)雜同時(shí)絕對(duì)數(shù)量也在增加的時(shí)候,某些下游任務(wù)已經(jīng)被延遲到了非常嚴(yán)重的狀態(tài),甚至?xí)兂傻谌觳胚M(jìn)行任務(wù)運(yùn)算,同時(shí)阻塞的第二天的任務(wù)。
關(guān)鍵節(jié)點(diǎn)是指任務(wù)調(diào)度系統(tǒng)中的某一個(gè)節(jié)點(diǎn),優(yōu)化該節(jié)點(diǎn)則可以顯著提升調(diào)度系統(tǒng)的性能,現(xiàn)有技術(shù)中,對(duì)任務(wù)調(diào)度系統(tǒng)的優(yōu)化工作通常是直接優(yōu)化所有節(jié)點(diǎn)中運(yùn)行時(shí)長(zhǎng)最長(zhǎng)的節(jié)點(diǎn),但是由于大型任務(wù)調(diào)度系統(tǒng)中依賴(lài)關(guān)系錯(cuò)綜復(fù)雜,所有節(jié)點(diǎn)中運(yùn)行時(shí)長(zhǎng)最長(zhǎng)的節(jié)點(diǎn)并不一定與嚴(yán)重延遲的任務(wù)有關(guān),且運(yùn)行時(shí)長(zhǎng)最長(zhǎng)的節(jié)點(diǎn)不一定就是可優(yōu)化程度最高的節(jié)點(diǎn),因此僅優(yōu)化所有節(jié)點(diǎn)中運(yùn)行時(shí)長(zhǎng)最長(zhǎng)的節(jié)點(diǎn),缺少針對(duì)性且不能保證優(yōu)化工作的效率,也就不能保證整個(gè)任務(wù)調(diào)度系統(tǒng)效率的提高,而調(diào)度系統(tǒng)的效率低下會(huì)導(dǎo)致任務(wù)的不斷延后,最終會(huì)出現(xiàn)嚴(yán)重的數(shù)據(jù)滯后問(wèn)題。
本申請(qǐng)可以在一個(gè)大型任務(wù)調(diào)度系統(tǒng)中,對(duì)指定的目標(biāo)節(jié)點(diǎn),尋找導(dǎo)致其延遲的“關(guān)鍵節(jié)點(diǎn)”,進(jìn)而指導(dǎo)優(yōu)化工作,提高了優(yōu)化工作的效率,緩解了任務(wù)延遲的現(xiàn)象。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中的問(wèn)題,本申請(qǐng)?zhí)岢隽舜_定關(guān)鍵節(jié)點(diǎn)的方法和設(shè)備,用以解決現(xiàn)有技術(shù)中的問(wèn)題,提高了優(yōu)化工作的效率,緩解了任務(wù)延遲的現(xiàn)象。
本申請(qǐng)?zhí)岢隽舜_定關(guān)鍵節(jié)點(diǎn)的方法,包括:
獲取所述系統(tǒng)中各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的運(yùn)行時(shí)間;
確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路;
統(tǒng)計(jì)所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng);
選擇所述鏈路中可優(yōu)化時(shí)長(zhǎng)符合預(yù)設(shè)條件的節(jié)點(diǎn)為關(guān)鍵節(jié)點(diǎn)。
優(yōu)選的,所述確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路,具體包括:
按照預(yù)設(shè)順序判定除起始節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)的最終值,所述節(jié)點(diǎn)的最終值包括從起始節(jié)點(diǎn)到所述節(jié)點(diǎn)運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間;
查找目標(biāo)節(jié)點(diǎn)的最終值中的運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,所述信息對(duì)應(yīng)的鏈路為從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路。
優(yōu)選的,所述按照預(yù)設(shè)順序判定除起始節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)的最終值,具體包括:
從起始節(jié)點(diǎn)起,控制每個(gè)節(jié)點(diǎn)按照預(yù)設(shè)規(guī)則向與其相鄰的下游節(jié)點(diǎn)發(fā)送消息;
確認(rèn)接收消息的節(jié)點(diǎn)是否是首次接收到消息;若接收消息的節(jié)點(diǎn)是首次接收到消息,所述消息的內(nèi)容即為接收消息的節(jié)點(diǎn)的值;若接收消息的節(jié)點(diǎn)不是首次接收到消息,判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容;
根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息時(shí),所述任一節(jié)點(diǎn)的值為所述任一節(jié)點(diǎn)的最終值;
其中,起始節(jié)點(diǎn)發(fā)送消息的內(nèi)容包括起始節(jié)點(diǎn)至接收所述消息的節(jié)點(diǎn)間鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間信息;修改除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)的最終值的內(nèi)容作為所述除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)要發(fā)送的消息,所述修改包括在所述節(jié)點(diǎn)的最終值的鏈路的信息中添加要接收所述消息的節(jié)點(diǎn)的信息,以及在所述節(jié)點(diǎn)的值中的鏈路的運(yùn)行時(shí)間中增加發(fā)送消息的節(jié)點(diǎn)自身的運(yùn)行時(shí)間;
其中,所述判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容,包括:比較所述節(jié)點(diǎn)當(dāng)前的值中的運(yùn)行時(shí)間與收到的消息中的運(yùn)行時(shí)間;如果自身的值中的運(yùn)行時(shí)間小于所述收到的消息中的運(yùn)行時(shí)間,則將自身的值中的運(yùn)行時(shí)間和鏈路的信息替換為所述收到的消息中的運(yùn)行時(shí)間和鏈路的信息;如果自身的值中的運(yùn)行時(shí)間不小于收到的消息中的運(yùn)行時(shí)間,則自身的值不變。
優(yōu)選的,所述根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息,具體包括:
將向所有與其相鄰的下游節(jié)點(diǎn)發(fā)送完消息的節(jié)點(diǎn)設(shè)置為不活躍狀態(tài);
確定與任一節(jié)點(diǎn)相鄰的所有上游節(jié)點(diǎn)都為不活躍狀態(tài)時(shí),所述任一節(jié)點(diǎn)接收到了所有與其相鄰的上游節(jié)點(diǎn)發(fā)送的消息,不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息。
優(yōu)選的,所述統(tǒng)計(jì)所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng),具體包括:
獲取所述運(yùn)行時(shí)間最長(zhǎng)的一條鏈路中包含的節(jié)點(diǎn)的可優(yōu)化比率;
根據(jù)所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)計(jì)算所述鏈路中包含的節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng),所述可優(yōu)化時(shí)長(zhǎng)為所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)之積。
本申請(qǐng)實(shí)施例還公開(kāi)了一種確定關(guān)鍵節(jié)點(diǎn)的設(shè)備,包括:
獲取模塊,用于獲取所述系統(tǒng)中各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的運(yùn)行時(shí)間;
確定模塊,用于確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路;
統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng);
選擇模塊,用于選擇所述鏈路中可優(yōu)化時(shí)長(zhǎng)符合預(yù)設(shè)條件的節(jié)點(diǎn)為關(guān)鍵節(jié)點(diǎn)。
優(yōu)選的,所述確定模塊,具體包括:
判定模塊,用于按照預(yù)設(shè)順序判定除起始節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)的最終值,所述節(jié)點(diǎn)的最終值包括從起始節(jié)點(diǎn)到所述節(jié)點(diǎn)運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間;
查找模塊,用于查找目標(biāo)節(jié)點(diǎn)的最終值中的運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,所述信息對(duì)應(yīng)的鏈路為從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路。
優(yōu)選的,所述判定模塊,具體用于:
從起始節(jié)點(diǎn)起,控制每個(gè)節(jié)點(diǎn)按照預(yù)設(shè)規(guī)則向與其相鄰的下游節(jié)點(diǎn)發(fā)送消息;
若接收消息的節(jié)點(diǎn)是首次接收到消息,所述消息的內(nèi)容即為接收消息的節(jié)點(diǎn)的值;若接收消息的節(jié)點(diǎn)不是首次接收到消息,則判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容;
根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息時(shí),所述任一節(jié)點(diǎn)的值為所述任一節(jié)點(diǎn)的最終值;
其中,起始節(jié)點(diǎn)發(fā)送消息的內(nèi)容包括起始節(jié)點(diǎn)至接收所述消息的節(jié)點(diǎn)間鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間信息;修改除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)的最終值的內(nèi)容作為所述除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)要發(fā)送的消息,所述修改包括在所述節(jié)點(diǎn)的最終值的鏈路的信息中添加要接收所述消息的節(jié)點(diǎn)的 信息,以及在所述節(jié)點(diǎn)的值中的鏈路的運(yùn)行時(shí)間中增加發(fā)送消息的節(jié)點(diǎn)自身的運(yùn)行時(shí)間;
其中,所述判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容,包括:比較所述節(jié)點(diǎn)當(dāng)前的值中的運(yùn)行時(shí)間與收到的消息中的運(yùn)行時(shí)間;如果自身的值中的運(yùn)行時(shí)間小于所述收到的消息中的運(yùn)行時(shí)間,則將自身的值中的運(yùn)行時(shí)間和鏈路的信息替換為所述收到的消息中的運(yùn)行時(shí)間和鏈路的信息;如果自身的值中的運(yùn)行時(shí)間不小于收到的消息中的運(yùn)行時(shí)間,則自身的值不變。
優(yōu)選的,所述判定模塊根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息,具體包括:
將向所有與其相鄰的下游節(jié)點(diǎn)發(fā)送完消息的節(jié)點(diǎn)設(shè)置為不活躍狀態(tài);
確定與任一節(jié)點(diǎn)相鄰的所有上游節(jié)點(diǎn)都為不活躍狀態(tài)時(shí),所述任一節(jié)點(diǎn)接收到了所有與其相鄰的上游節(jié)點(diǎn)發(fā)送的消息,不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息。
優(yōu)選的,所述統(tǒng)計(jì)模塊,具體用于:
獲取所述運(yùn)行時(shí)間最長(zhǎng)的一條鏈路中包含的節(jié)點(diǎn)的可優(yōu)化比率;
根據(jù)所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)計(jì)算所述鏈路中包含的節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng),所述可優(yōu)化時(shí)長(zhǎng)為所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)之積。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過(guò)尋找要進(jìn)行優(yōu)化的關(guān)鍵節(jié)點(diǎn),提高了優(yōu)化工作的效率,緩解了任務(wù)延遲的現(xiàn)象。
附圖說(shuō)明
圖1為本申請(qǐng)?zhí)岢龅囊环N確定關(guān)鍵節(jié)點(diǎn)的方法的流程示意圖;
圖2為本申請(qǐng)?zhí)岢龅囊环N具體場(chǎng)景下的系統(tǒng)的示意圖;
圖3為本申請(qǐng)?zhí)岢龅囊环N確定關(guān)鍵節(jié)點(diǎn)設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為了解決現(xiàn)有技術(shù)中,大型任務(wù)調(diào)度系統(tǒng)效率低下,任務(wù)延遲現(xiàn)象嚴(yán)重的缺陷,本申請(qǐng)?zhí)岢隽艘环N確定關(guān)鍵節(jié)點(diǎn)的方法,以指導(dǎo)任務(wù)調(diào)度系統(tǒng)的優(yōu)化工作,如圖1所示,包括以下步驟:
步驟101、獲取所述系統(tǒng)中各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的運(yùn)行時(shí)間;
步驟102、確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路;
在具體的應(yīng)用場(chǎng)景中,從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路確定的方法有很多,例如:
1、找到系統(tǒng)中從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間所有的鏈路,統(tǒng)計(jì)找到的所有的鏈路的運(yùn)行時(shí)間,通過(guò)對(duì)運(yùn)行時(shí)間的排序,最終確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路。
2、按照一定順序或算法,尋找從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路,如,按照預(yù)設(shè)順序判定除起始節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)的最終值,所述節(jié)點(diǎn)的最終值包括從起始節(jié)點(diǎn)到所述節(jié)點(diǎn)運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間;其中所述預(yù)設(shè)順序可以是上游節(jié)點(diǎn)至下游節(jié)點(diǎn)的順序,也可以根據(jù)不同算法來(lái)確定,通過(guò)改造現(xiàn)有的單源最短路徑算法,如迪杰斯特拉Dijkstra單源最短路徑算法、貝爾曼-福特Bellman–Ford算法、SPFA算法、ASP算法和Floyd-Warshall算法等,也可以得到其他尋找最長(zhǎng)路徑的算法,這樣,針對(duì)指定的目標(biāo)節(jié)點(diǎn),只需查找所述目標(biāo)節(jié)點(diǎn)的最終值,即可得到從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息。
其中,Dijkstra單源最短路徑算法使用廣度優(yōu)先搜索策略去解決非負(fù)權(quán)有向圖的單源最短路徑問(wèn)題,算法最終會(huì)得到一個(gè)最短路徑樹(shù),該算法的輸入包含了一個(gè)帶權(quán)重的有向圖G,以及起始節(jié)點(diǎn)S,以V表示G中所有頂點(diǎn)的集合。每一個(gè)圖中的邊,都是兩個(gè)頂點(diǎn)所形成的有序元素對(duì)。(u,v)表示從頂 點(diǎn)u到v有路徑相連。我們以E表示G中所有邊的集合,而邊的權(quán)重則由權(quán)重函數(shù)w:E→[0,∞]定義。因此,w(u,v)就是從頂點(diǎn)u到頂點(diǎn)v的非負(fù)權(quán)重(weight)。邊的權(quán)重可以想像成兩個(gè)頂點(diǎn)之間的距離。任兩點(diǎn)間路徑的權(quán)重,就是該路徑上所有邊的權(quán)重總和。已知有V中有頂點(diǎn)s及t,Dijkstra算法可以找到s到t的最低權(quán)重路徑(例如,最短路徑)。這個(gè)算法也可以在一個(gè)圖中,找到從一個(gè)頂點(diǎn)s到任何其他頂點(diǎn)的最短路徑。
優(yōu)選的一種方法是,從起始節(jié)點(diǎn)起,控制每個(gè)節(jié)點(diǎn)按照預(yù)設(shè)規(guī)則向與其相鄰的下游節(jié)點(diǎn)發(fā)送消息;確認(rèn)接收消息的節(jié)點(diǎn)是否是首次接收到消息;若接收消息的節(jié)點(diǎn)是首次接收到消息,所述消息的內(nèi)容即為接收消息的節(jié)點(diǎn)的值;若接收消息的節(jié)點(diǎn)不是首次接收到消息,判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容;根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息時(shí),所述任一節(jié)點(diǎn)的值為所述任一節(jié)點(diǎn)的最終值;
其中,起始節(jié)點(diǎn)發(fā)送消息的內(nèi)容包括起始節(jié)點(diǎn)至接收所述消息的節(jié)點(diǎn)間鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間信息;修改除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)的最終值的內(nèi)容作為所述除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)要發(fā)送的消息,所述修改包括在所述節(jié)點(diǎn)的最終值的鏈路的信息中添加要接收所述消息的節(jié)點(diǎn)的信息,以及在所述節(jié)點(diǎn)的值中的鏈路的運(yùn)行時(shí)間中增加發(fā)送消息的節(jié)點(diǎn)自身的運(yùn)行時(shí)間;
其中,所述判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容,包括:比較所述節(jié)點(diǎn)當(dāng)前的值中的運(yùn)行時(shí)間與收到的消息中的運(yùn)行時(shí)間;如果自身的值中的運(yùn)行時(shí)間小于所述收到的消息中的運(yùn)行時(shí)間,則將自身的值中的運(yùn)行時(shí)間和鏈路的信息替換為所述收到的消息中的運(yùn)行時(shí)間和鏈路的信息;如果自身的值中的運(yùn)行時(shí)間不小于收到的消息中的運(yùn)行時(shí)間,則自身的值不變。
其中,所述根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息的方法有很多,例如可以通過(guò)不活躍狀態(tài)的設(shè)置來(lái)確定,具體的,可以將向所有與其相鄰的下游節(jié)點(diǎn)發(fā)送完消息的節(jié)點(diǎn)設(shè)置為不活躍狀態(tài);確定與任一節(jié)點(diǎn)相鄰的所有上游節(jié)點(diǎn)都為不活躍狀態(tài)時(shí),所述任一節(jié)點(diǎn)接收到了所有與其相鄰的上游節(jié)點(diǎn)發(fā)送的消息,不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息。
另一種方法是可以規(guī)定一段預(yù)設(shè)時(shí)間,在預(yù)設(shè)時(shí)間節(jié)點(diǎn)沒(méi)有接受到其他節(jié)點(diǎn)發(fā)送的消息,則確定所述節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息。
其中,具體的確定過(guò)程,硬件方面可采用分布式BSP計(jì)算框架,支持上百萬(wàn)海量數(shù)據(jù)圖的處理,優(yōu)于傳統(tǒng)單機(jī)解決方案。
其中,整體同步并行計(jì)算模型Bulk Synchronous Parallel,其特點(diǎn)將處理器和路由器分開(kāi),強(qiáng)調(diào)了計(jì)算任務(wù)和通信任務(wù)的分開(kāi),而路由器僅僅完成點(diǎn)到點(diǎn)的消息傳遞,不提供組合、復(fù)制和廣播等功能,這樣做既掩蓋具體的互連網(wǎng)絡(luò)拓?fù)?,又?jiǎn)化了通信協(xié)議,在BSP中,一次計(jì)算過(guò)程由一系列全局超步組成,每一個(gè)超步由并發(fā)計(jì)算、通信和柵欄同步三個(gè)步驟組成。同步完成,標(biāo)志著這個(gè)超步的完成及下一個(gè)超步的開(kāi)始。
步驟103、統(tǒng)計(jì)所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng);
可以直接評(píng)估出所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng),也可以先獲取所述運(yùn)行時(shí)間最長(zhǎng)的一條鏈路中包含的節(jié)點(diǎn)的可優(yōu)化比率;再根據(jù)所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)計(jì)算所述鏈路中包含的節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng),所述可優(yōu)化時(shí)長(zhǎng)為所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)之積。
步驟104、選擇所述鏈路中可優(yōu)化時(shí)長(zhǎng)符合預(yù)設(shè)條件的節(jié)點(diǎn)為關(guān)鍵節(jié)點(diǎn)。
可以對(duì)所述鏈路中節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng)進(jìn)行排序,即可得到最優(yōu)的優(yōu)化順序,選取優(yōu)化順序靠前的部分節(jié)點(diǎn)進(jìn)行優(yōu)化,或者按照最優(yōu)的優(yōu)化順序依次對(duì)這些節(jié)點(diǎn)進(jìn)行優(yōu)化,這樣視具體情況確定要得到的關(guān)鍵節(jié)點(diǎn)的數(shù)量,保證了優(yōu)化的效率,同時(shí)避免了系統(tǒng)的負(fù)擔(dān)過(guò)重。
為了進(jìn)一步對(duì)本申請(qǐng)進(jìn)行說(shuō)明,本申請(qǐng)實(shí)施例二公開(kāi)了一種在具體的確定關(guān)鍵節(jié)點(diǎn)的方法,包括:
如圖2所示的較為簡(jiǎn)單的任務(wù)調(diào)度系統(tǒng),應(yīng)用于數(shù)據(jù)倉(cāng)庫(kù)中,數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)面向主題的、集成的、相對(duì)穩(wěn)定的、反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。該任務(wù)調(diào)度系統(tǒng)中包括工作節(jié)點(diǎn)#1、#2、#4、#3、#5,工作節(jié)點(diǎn)#1、#2、#4、#3、#5的運(yùn)行時(shí)長(zhǎng)分別為8分鐘、5分鐘、2分鐘、3分鐘、1分鐘。
步驟1、獲取所述系統(tǒng)中各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的運(yùn)行時(shí)間。
步驟2、在初始狀態(tài),控制節(jié)點(diǎn)#1向它的下游節(jié)點(diǎn)#2、#4發(fā)送消息,消息的內(nèi)容包含了“初始節(jié)點(diǎn)->中間節(jié)點(diǎn)->終止節(jié)點(diǎn):運(yùn)行時(shí)長(zhǎng)”,如控制節(jié)點(diǎn)#1向節(jié)點(diǎn)#2發(fā)送消息“#1->#2:8”,向節(jié)點(diǎn)#4發(fā)送消息“#1->#4:8”;此時(shí),節(jié)點(diǎn)#1向所有與它相鄰的下游節(jié)點(diǎn)發(fā)送完了消息,將節(jié)點(diǎn)#1設(shè)置為不活躍狀態(tài)。
此時(shí)節(jié)點(diǎn)#2、#4都是首次接收到消息,節(jié)點(diǎn)#2將“#1->#2:8”保存為自身的值,節(jié)點(diǎn)#4將“#1->#4:8”保存為自身的值,節(jié)點(diǎn)#2的上游節(jié)點(diǎn)只有節(jié)點(diǎn)#1,且節(jié)點(diǎn)#1已為不活躍狀態(tài),所以“#1->#2:8”為節(jié)點(diǎn)#2的最終值,確定最終值后,控制節(jié)點(diǎn)#2向與它相鄰的下游節(jié)點(diǎn)#3、#4發(fā)送消息,將節(jié)點(diǎn)#2最終值中的鏈路中添加下游節(jié)點(diǎn),同時(shí)在“運(yùn)行時(shí)長(zhǎng)”上加上自身的運(yùn)行時(shí)長(zhǎng),將此消息發(fā)送給下游節(jié)點(diǎn),例如向節(jié)點(diǎn)#3發(fā)送消息“#1->#2->#3:13”,節(jié)點(diǎn)#2向節(jié)點(diǎn)#4發(fā)送消息“#1->#2->#4:13”;此時(shí),節(jié)點(diǎn)#2向所有與它相鄰的下游節(jié)點(diǎn)發(fā)送完了消息,將節(jié)點(diǎn)#2設(shè)置為不活躍狀態(tài)。
此時(shí)節(jié)點(diǎn)#3是首次接收到消息,節(jié)點(diǎn)#3將“#1->#2->#3:13”保存為自身的值,節(jié)點(diǎn)#4不是首次接收到消息,所以比較節(jié)點(diǎn)#4自身的值中的運(yùn)行時(shí)間和新接收到消息中的運(yùn)行時(shí)間,由于13大于8,所以將節(jié)點(diǎn)#4的值替換為“#1->#2->#4:13”,節(jié)點(diǎn)#3的上游節(jié)點(diǎn)只有節(jié)點(diǎn)#2,且節(jié)點(diǎn)#2已為不活躍狀 態(tài),所以“#1->#2->#3:13”為節(jié)點(diǎn)#3的最終值,節(jié)點(diǎn)#4的上游節(jié)點(diǎn)有節(jié)點(diǎn)#1和節(jié)點(diǎn)#2,且節(jié)點(diǎn)#1和節(jié)點(diǎn)#2均為不活躍狀態(tài),所以“#1->#2->#4:13”為節(jié)點(diǎn)#4的最終值,確定最終值后,控制節(jié)點(diǎn)#3、#4分別向與它們相鄰的下游節(jié)點(diǎn)#5發(fā)送消息,發(fā)送完成后將節(jié)點(diǎn)#3、#4設(shè)置為不活躍狀態(tài),其中,節(jié)點(diǎn)#3向節(jié)點(diǎn)#5發(fā)送消息“#1->#2->#3->#5:15”,節(jié)點(diǎn)#4向節(jié)點(diǎn)#5發(fā)送消息#1->#2->#4->#5:16”,節(jié)點(diǎn)#5最終的值為“#1->#2->#4->#5:16”,即從節(jié)點(diǎn)#1到節(jié)點(diǎn)#5,運(yùn)行時(shí)間最長(zhǎng)的一條鏈路是#1->#2->#4->#5。
接下來(lái)對(duì)運(yùn)行時(shí)間最長(zhǎng)的一條鏈路中的節(jié)點(diǎn)進(jìn)行考察,即對(duì)#1、#2、#4、#5進(jìn)行考察,選取其中的部分節(jié)點(diǎn)進(jìn)行優(yōu)化操作;具體的,可以獲取節(jié)點(diǎn)#1、#2、#4、#5的運(yùn)行時(shí)長(zhǎng)并評(píng)估它們的可優(yōu)化比率,以此確定該鏈路中所有涉及的節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng)(運(yùn)行時(shí)長(zhǎng)*可優(yōu)化比率),排序后即可得到最優(yōu)的優(yōu)化順序,選取優(yōu)化順序靠前的部分節(jié)點(diǎn)進(jìn)行優(yōu)化,或者按照最優(yōu)的優(yōu)化順序依次對(duì)這些節(jié)點(diǎn)進(jìn)行優(yōu)化。
在實(shí)際應(yīng)用場(chǎng)景中,系統(tǒng)的節(jié)點(diǎn)會(huì)多于圖2所示的系統(tǒng),最長(zhǎng)路徑上的節(jié)點(diǎn)也會(huì)更多,原理與上述的例子相同,按照上述方法即可尋找到要被優(yōu)先優(yōu)化的關(guān)鍵節(jié)點(diǎn)。
本申請(qǐng)實(shí)施例三還公開(kāi)了一種數(shù)據(jù)處理設(shè)備,如圖3所示,包括:
獲取模塊301,用于獲取所述系統(tǒng)中各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的運(yùn)行時(shí)間;
確定模塊302,用于確定從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路;
統(tǒng)計(jì)模塊303,用于統(tǒng)計(jì)所述鏈路中包含的各個(gè)節(jié)點(diǎn)對(duì)應(yīng)的可優(yōu)化時(shí)長(zhǎng);
選擇模塊304,用于選擇所述鏈路中可優(yōu)化時(shí)長(zhǎng)符合預(yù)設(shè)條件的節(jié)點(diǎn)為關(guān)鍵節(jié)點(diǎn)。
優(yōu)選的,所述確定模塊302,具體包括:
判定模塊,用于按照預(yù)設(shè)順序判定除起始節(jié)點(diǎn)外的每個(gè)節(jié)點(diǎn)的最終值,所述節(jié)點(diǎn)的最終值包括從起始節(jié)點(diǎn)到所述節(jié)點(diǎn)運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間;
查找模塊,用于查找目標(biāo)節(jié)點(diǎn)的最終值中的運(yùn)行時(shí)間最長(zhǎng)的一條鏈路的信息,所述信息對(duì)應(yīng)的鏈路為從起始節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間運(yùn)行時(shí)間最長(zhǎng)的一條鏈路。
優(yōu)選的,所述判定模塊,具體用于:
從起始節(jié)點(diǎn)起,控制每個(gè)節(jié)點(diǎn)按照預(yù)設(shè)規(guī)則向與其相鄰的下游節(jié)點(diǎn)發(fā)送消息;
若接收消息的節(jié)點(diǎn)是首次接收到消息,所述消息的內(nèi)容即為接收消息的節(jié)點(diǎn)的值;若接收消息的節(jié)點(diǎn)不是首次接收到消息,則判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容;
確定節(jié)點(diǎn)不再接收到其他節(jié)點(diǎn)發(fā)送的消息時(shí),所述節(jié)點(diǎn)的值為所述節(jié)點(diǎn)的最終值;
其中,起始節(jié)點(diǎn)發(fā)送消息的內(nèi)容包括起始節(jié)點(diǎn)至接收所述消息的節(jié)點(diǎn)間鏈路的信息,以及所述鏈路對(duì)應(yīng)的運(yùn)行時(shí)間信息;修改除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)的最終值的內(nèi)容作為所述除起始節(jié)點(diǎn)外的其他節(jié)點(diǎn)要發(fā)送的消息,所述修改包括在所述節(jié)點(diǎn)的最終值的鏈路的信息中添加要接收所述消息的節(jié)點(diǎn)的信息,以及在所述節(jié)點(diǎn)的值中的鏈路的運(yùn)行時(shí)間中增加發(fā)送消息的節(jié)點(diǎn)自身的運(yùn)行時(shí)間;
其中,所述判斷是否要將所述節(jié)點(diǎn)當(dāng)前的值的內(nèi)容替換為最近接收到的消息的內(nèi)容,包括:比較所述節(jié)點(diǎn)當(dāng)前的值中的運(yùn)行時(shí)間與收到的消息中的運(yùn)行時(shí)間;如果自身的值中的運(yùn)行時(shí)間小于所述收到的消息中的運(yùn)行時(shí)間,則將自身的值中的運(yùn)行時(shí)間和鏈路的信息替換為所述收到的消息中的運(yùn)行時(shí)間和鏈路的信息;如果自身的值中的運(yùn)行時(shí)間不小于收到的消息中的運(yùn)行時(shí) 間,則自身的值不變。
優(yōu)選的,所述判定模塊根據(jù)預(yù)設(shè)標(biāo)準(zhǔn)確定任一節(jié)點(diǎn)不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息,具體包括:
將向所有與其相鄰的下游節(jié)點(diǎn)發(fā)送完消息的節(jié)點(diǎn)設(shè)置為不活躍狀態(tài);
確定與任一節(jié)點(diǎn)相鄰的所有上游節(jié)點(diǎn)都為不活躍狀態(tài)時(shí),所述任一節(jié)點(diǎn)接收到了所有與其相鄰的上游節(jié)點(diǎn)發(fā)送的消息,不再會(huì)接收到其他節(jié)點(diǎn)發(fā)送的消息。
優(yōu)選的,所述統(tǒng)計(jì)模塊303,具體用于:
獲取所述運(yùn)行時(shí)間最長(zhǎng)的一條鏈路中包含的節(jié)點(diǎn)的可優(yōu)化比率;
根據(jù)所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)計(jì)算所述鏈路中包含的節(jié)點(diǎn)的可優(yōu)化時(shí)長(zhǎng),所述可優(yōu)化時(shí)長(zhǎng)為所述節(jié)點(diǎn)的可優(yōu)化比率與運(yùn)行時(shí)長(zhǎng)之積。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過(guò)尋找要進(jìn)行優(yōu)化的關(guān)鍵節(jié)點(diǎn),提高了優(yōu)化工作的效率,緩解了任務(wù)延遲的現(xiàn)象。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可以通過(guò)硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)。基于這樣的理解,本申請(qǐng)的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該軟件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-ROM,U盤(pán),移動(dòng)硬盤(pán)等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施場(chǎng)景所述的方法。
本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施場(chǎng)景的示意圖,附圖中的模塊或流程并不一定是實(shí)施本申請(qǐng)所必須的。
本領(lǐng)域技術(shù)人員可以理解實(shí)施場(chǎng)景中的裝置中的模塊可以按照實(shí)施場(chǎng)景描述進(jìn)行分布于實(shí)施場(chǎng)景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施場(chǎng)景的一個(gè)或多個(gè)裝置中。上述實(shí)施場(chǎng)景的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
上述本申請(qǐng)序號(hào)僅僅為了描述,不代表實(shí)施場(chǎng)景的優(yōu)劣。
以上公開(kāi)的僅為本申請(qǐng)的幾個(gè)具體實(shí)施場(chǎng)景,但是,本申請(qǐng)并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本申請(qǐng)的保護(hù)范圍。