專利名稱:內(nèi)容整合引擎調(diào)度方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)及網(wǎng)絡(luò)技木,尤其涉及ー種內(nèi)容整合弓I擎調(diào)度方法及裝置。
背景技術(shù):
隨著以網(wǎng)絡(luò)技術(shù)為代表的新興計(jì)算技術(shù)的發(fā)展,基于面向服務(wù)的體系結(jié)構(gòu)(Service Oriented Architecture, SOA)將信息系統(tǒng)組件封裝并發(fā)布為可通過(guò)互聯(lián)網(wǎng)訪問(wèn)的標(biāo)準(zhǔn)的Web服務(wù),在這樣的背景下,提出了內(nèi)容整合(Mashup)的概念。Mashup是Web2. 0的代表技術(shù)之一,Mashup是指將不同來(lái)源的數(shù)據(jù)或服務(wù)進(jìn)行組合,構(gòu)建出ー種具有新型功能的網(wǎng)絡(luò)應(yīng)用。既可以完成服務(wù)的快速構(gòu)建,也可以滿足用戶自主參與進(jìn)行數(shù)據(jù)處理的需求。Mashup平臺(tái)中的Mashup應(yīng)用由一個(gè)或多個(gè)操作子(Operator)組成,Operator也可以被稱為節(jié)點(diǎn)。Mashup平臺(tái)中的運(yùn)行引擎對(duì)Mashup應(yīng)用進(jìn)行運(yùn)行時(shí),各Operator對(duì)數(shù)據(jù)流進(jìn)行簡(jiǎn)要的加工,整個(gè)運(yùn)行過(guò)程中數(shù)據(jù)流占用Mashup平臺(tái)中的內(nèi)存資源。根據(jù)Mashup應(yīng)用的數(shù)據(jù)流的特點(diǎn),對(duì)于從兩個(gè)或多個(gè)節(jié)點(diǎn)接收數(shù)據(jù)的匯聚節(jié)點(diǎn),該匯聚節(jié)點(diǎn)會(huì)在同步等待各輸入數(shù)據(jù)流全部流入之后,對(duì)數(shù)據(jù)流進(jìn)行相應(yīng)的處理,并將處理后的數(shù)據(jù)流輸出至下ー節(jié)點(diǎn)。但是,如果匯聚節(jié)點(diǎn)的多個(gè)輸入數(shù)據(jù)流中有一個(gè)或多個(gè)未準(zhǔn)備完畢,即有數(shù)據(jù)流未輸入該匯聚節(jié)點(diǎn),則即使其他各數(shù)據(jù)流已輸入該匯聚節(jié)點(diǎn),該匯聚節(jié)點(diǎn)也無(wú)法進(jìn)行相應(yīng)的處理,使得已準(zhǔn)備完畢的各輸入的數(shù)據(jù)流依然占用內(nèi)存,造成內(nèi)存資源無(wú)法及時(shí)得到釋放,會(huì)造成數(shù)據(jù)流的阻塞,因此,現(xiàn)有技術(shù)中Mashup平臺(tái)的內(nèi)存資源的利用率較低。
發(fā)明內(nèi)容
本發(fā)明提供了ー種內(nèi)容整合引擎調(diào)度方法及裝置,用于提高M(jìn)ashup平臺(tái)內(nèi)存資源的利用率。本發(fā)明的第一個(gè)方面是提供一種內(nèi)容整合引擎調(diào)度方法,包括將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)調(diào)度支Mashlet,所述Mashlet包括ー個(gè)或多個(gè)操作子;根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,以使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi);根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列;從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。
本發(fā)明的另ー個(gè)方面是提供一種內(nèi)容整合引擎,包括分解器,用于將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)Mashlet,所述Mashlet包括ー個(gè)或多個(gè)操作子;根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,以使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi);隊(duì)列處理器,用于根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列;執(zhí)行器,用于從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。 本發(fā)明的又ー個(gè)方面是提供一種內(nèi)容整合平臺(tái),包括上述內(nèi)容整合弓I擎。本發(fā)明實(shí)施例提供的內(nèi)容整合弓I擎調(diào)度方法及裝置,將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)包括至少ー個(gè)操作子的Mashlet,在根據(jù)各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定了將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn)之后,根據(jù)各起始時(shí)間點(diǎn),分別將各入度為零的Mashlet加入隊(duì)列,并且在隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入隊(duì)列,通過(guò)從操作子池中調(diào)用隊(duì)列中的Mashlet包括的各操作子,運(yùn)行隊(duì)列中的Mashlet,直至隊(duì)列中的Mashlet全部運(yùn)行完成,利用懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。
圖I為本發(fā)明提供的內(nèi)容整合引擎調(diào)度方法一實(shí)施例的流程圖;圖2a為ー個(gè)Mashup應(yīng)用的結(jié)構(gòu)圖;圖2b為ー個(gè)Mashup應(yīng)用分解為Mashlet之后的結(jié)構(gòu)圖;圖2c為圖2b中兩個(gè)Mashlet內(nèi)部的結(jié)構(gòu)圖;圖3為本發(fā)明提供的內(nèi)容整合引擎ー實(shí)施例的結(jié)構(gòu)示意圖;圖4為本發(fā)明提供的內(nèi)容整合平臺(tái)實(shí)施例的結(jié)構(gòu)示意圖;圖5為本發(fā)明提供的內(nèi)容整合平臺(tái)系統(tǒng)的系統(tǒng)架構(gòu)圖;圖6為本發(fā)明提供的內(nèi)容整合平臺(tái)系統(tǒng)運(yùn)行時(shí)的流程圖。
具體實(shí)施例方式作為ー種新興的互聯(lián)網(wǎng)應(yīng)用開(kāi)發(fā)模式,內(nèi)容整合(Mashup)提倡通過(guò)組合網(wǎng)絡(luò)上開(kāi)放的數(shù)據(jù)與使用第三方應(yīng)用程序接ロ獲取服務(wù)的形式,構(gòu)建互聯(lián)網(wǎng)應(yīng)用程序。區(qū)別于傳統(tǒng)的應(yīng)用程序開(kāi)發(fā)方式,Mashup可以把設(shè)計(jì)制作互聯(lián)網(wǎng)應(yīng)用從繁雜的程序編寫(xiě)中解脫出來(lái),使得非專業(yè)用戶能夠參與到網(wǎng)絡(luò)應(yīng)用的開(kāi)發(fā)中,快速構(gòu)建符合自己需求的個(gè)性化應(yīng)用。在這樣的背景下產(chǎn)生了 Mashup平臺(tái)。Mashup平臺(tái)能夠?yàn)橛脩籼峁┮粋€(gè)直觀易用的即時(shí)信息整合平臺(tái),幫助用戶構(gòu)建自己的Mashup應(yīng)用。其中,雅虎公司的Yahoo!Pipes就是ー種Mashup平臺(tái),通過(guò)Web頁(yè)面的模塊拖拽式交互,引導(dǎo)用戶制作Mashup應(yīng)用。具有一定編程基礎(chǔ)知識(shí)的用戶可以在Yahoo!PipeS上編輯ー個(gè)包含獲取數(shù)據(jù)、處理數(shù)據(jù)和展示數(shù)據(jù)等模塊的pipe,再交由Yahoo!PipeS引擎運(yùn)行以完成信息融合的操作。典型的Mashup平臺(tái)至少應(yīng)該包含Mashup編輯器和Mashup運(yùn)行引擎兩部分。用戶通過(guò)Mashup平臺(tái)上的Mashup編輯器創(chuàng)建Mashup應(yīng)用。在創(chuàng)建過(guò)程中,通過(guò)簡(jiǎn)單地拖曳操作子(Operator)到工作區(qū)并連接,最終確認(rèn)生成ー個(gè)Mashup應(yīng)用,進(jìn)而用戶可以選擇對(duì)其進(jìn)行運(yùn)行或保存留待后用。Mashup平臺(tái)可以進(jìn)行對(duì)Mashup應(yīng)用的創(chuàng)建、保存、修改、運(yùn)行等操作。其中,對(duì)Mashup應(yīng)用的運(yùn)行是核心部分。對(duì)Mashup應(yīng)用的運(yùn)行包括從外部或內(nèi)部數(shù)據(jù)源獲取數(shù)據(jù)、按用戶定制的需求處理數(shù)據(jù)等。本發(fā)明實(shí)施例中的執(zhí)行主體為內(nèi)容整合(Mashup)引擎,內(nèi)容整合(Mashup)引擎可以為內(nèi)容整合(Mashup)平臺(tái)中的運(yùn)行時(shí)引擎,也可以稱為運(yùn)行引擎或者執(zhí)行引擎。
圖I為本發(fā)明提供的內(nèi)容整合引擎調(diào)度方法一實(shí)施例的流程圖,如圖I所示,該方法包括步驟101、將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)調(diào)度支Mashlet,所述Mashlet包括ー個(gè)或多個(gè)操作子。Mashup平臺(tái)上提供若干可供用戶選擇使用的操作子(Operator)。各操作子分別具有各自的功能,例如完成排序、篩選、獲取數(shù)據(jù)源或截取數(shù)據(jù)等功能。Mashup平臺(tái)中的操作子的集合可以表示為,Operators= (Opr1, opr2, opr3,…oprj ,用戶從該操作子的集合中選擇ー個(gè)或多個(gè)操作子,對(duì)所選擇的操作子進(jìn)行排列組合并連接后,可以創(chuàng)建出Mashup應(yīng)用。Mashup平臺(tái)利用其上的運(yùn)行引擎對(duì)Mashup應(yīng)用進(jìn)行運(yùn)行。Mashup應(yīng)用的各操作子之間通過(guò)邊進(jìn)行連接,運(yùn)行時(shí)具有數(shù)據(jù)流的形式,數(shù)據(jù)流的起點(diǎn)為包含獲取數(shù)據(jù)源操作的操作子,這些操作子在獲取到數(shù)據(jù)之后,將數(shù)據(jù)交給后續(xù)的操作子進(jìn)行相應(yīng)的處理。依次類推,當(dāng)數(shù)據(jù)流通過(guò)具有合并功能的操作子時(shí),各數(shù)據(jù)流將以某種規(guī)則合并,最終通過(guò)具有結(jié)束功能的操作子輸出。區(qū)別于現(xiàn)有技術(shù)中的的運(yùn)行方式,本發(fā)明實(shí)施例中的運(yùn)行引擎在對(duì)Mashup應(yīng)用進(jìn)行運(yùn)行之前,需要先將Mashup應(yīng)用分解為多個(gè)Mashlet。ー個(gè)Mashlet可以包括ー個(gè)或多個(gè)操作子(Operator)。Mashup應(yīng)用由若干操作子組成,將Mashup應(yīng)用分解為多個(gè)Mashlet相當(dāng)于將操作子按照預(yù)設(shè)的規(guī)則進(jìn)行了分組。將ー個(gè)或多個(gè)操作子歸為ー個(gè)Mashlet。步驟102、根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn)。其中,所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和。執(zhí)行步驟102是為了使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi)。由于各Mashup應(yīng)用在運(yùn)行時(shí),均是從Mashup平臺(tái)中的操作子集合中調(diào)用相應(yīng)的操作子,因此,可以在操作子被運(yùn)行吋,記錄該操作子運(yùn)行所需的時(shí)長(zhǎng)?;跀?shù)據(jù)分析和歷史統(tǒng)計(jì),根據(jù)操作子已被運(yùn)行時(shí)的運(yùn)行時(shí)間,計(jì)算出基本準(zhǔn)確的各操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)。
若Mashlet包括ー個(gè)操作子,則該操作子運(yùn)行的預(yù)估時(shí)長(zhǎng),即為該Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng);若Mashlet包括多個(gè)操作子,則該操作子運(yùn)行的預(yù)估時(shí)長(zhǎng),即為各操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和。從而,根據(jù)Mashlet之間的運(yùn)行流程以及各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),倒推出將整個(gè)Mashup應(yīng)用中作為起始節(jié)點(diǎn)的Mashlet被放入隊(duì)列中的時(shí)間點(diǎn),其中作為起始節(jié)點(diǎn)的Mashlet即為入度為零的Mashlet。入度表示終止于該節(jié)點(diǎn)的邊的數(shù)量,因此,入度為零表示該節(jié)點(diǎn)上沒(méi)有連接終止于其上的邊,入度為零的Mashlet即為整個(gè)Mashup應(yīng)用中作為起始節(jié)點(diǎn)的Mashlet。其中,隊(duì)列也可以稱為調(diào)度隊(duì)列。區(qū)別于現(xiàn)有技術(shù)中所采用的將入度為零的各操作子同時(shí)加入隊(duì)列的方式,本發(fā)明實(shí)施例中引入了懶啟動(dòng)的機(jī)制,基于懶啟動(dòng)機(jī)制,將入度為零的兩個(gè)或多個(gè)Mashlet加入隊(duì)列的時(shí)間點(diǎn)可以不相同。懶啟動(dòng)是指由ー個(gè)Mashup應(yīng)用的輸出節(jié)點(diǎn)所在的Mashlet開(kāi)始,倒推各個(gè) Mashlet的開(kāi)始執(zhí)行時(shí)間,使得具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet各自運(yùn)行完畢之后,將數(shù)據(jù)流送入該輸出節(jié)點(diǎn)的時(shí)間點(diǎn)幾乎相同,從而消除由于匯聚節(jié)點(diǎn)對(duì)輸入的各數(shù)據(jù)流進(jìn)行同步等待而造成的內(nèi)存中數(shù)據(jù)流的阻塞。可選的,判斷兩個(gè)或多個(gè)數(shù)據(jù)流被送入該輸出節(jié)點(diǎn)的時(shí)間是否幾乎相同對(duì)應(yīng)的量化標(biāo)準(zhǔn)可以為,判斷具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差是否在預(yù)設(shè)的時(shí)間范圍內(nèi)。步驟103、根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列。運(yùn)行引擎在確定了入度為零的Mashlet被加入隊(duì)列的時(shí)間點(diǎn)之后,根據(jù)相應(yīng)的時(shí)間點(diǎn),將各入度為零的Mashlet加入隊(duì)列中。Mashup應(yīng)用被分解成的各Mashlet不是被全部放入隊(duì)列中,而是根據(jù)Mashlet之間的運(yùn)行流程,先將入度為零的Mashlet加入隊(duì)列,再根據(jù)Mashlet的運(yùn)行結(jié)果,當(dāng)具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完畢之后,即將該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入到隊(duì)列中。依此類推,對(duì)于在隊(duì)列中的Mashlet,當(dāng)具有相同輸出節(jié)點(diǎn)的Mashlet均運(yùn)行完成之后,即將該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入該隊(duì)列中。Mashlet被運(yùn)行時(shí),即從隊(duì)列中被提取出來(lái)進(jìn)行運(yùn)行,相當(dāng)于隊(duì)列中的Mashlet —旦被運(yùn)行,即已被清除出該隊(duì)列,從而保留在隊(duì)列中的Mashlet均為未運(yùn)行的Mashlet。按照上述方式陸續(xù)將各Mashlet加入隊(duì)列中,直至全部Mashlet均被加入到隊(duì)列中。進(jìn)ー步地,一種可選的實(shí)施方式為,所述隊(duì)列中的Mashlet可以屬于相同的Mashup應(yīng)用,也可以屬于不同的Mashup應(yīng)用。運(yùn)行引擎在對(duì)隊(duì)列中的Mashlet進(jìn)行運(yùn)行時(shí),可以不區(qū)分Mashlet的來(lái)源,也就是不區(qū)分Mashlet屬于哪個(gè)Mashup應(yīng)用。運(yùn)行引擎將各Mashup應(yīng)用分解為多個(gè)Mashlet之后,只需要按照上述方式,將相應(yīng)的Mashlet送入隊(duì)列中進(jìn)行運(yùn)行即可。步驟104、從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。Mashup平臺(tái)中的操作子池即為該Mashup平臺(tái)中可供用戶使用的操作子的集合。由于Mashlet由ー個(gè)或多個(gè)操作子組成,因此,運(yùn)行引擎對(duì)Mashlet進(jìn)行運(yùn)行吋,即相應(yīng)地從操作子池中調(diào)用Mashlet流程中包括的操作子。根據(jù)Mashlet之間的運(yùn)行流程,對(duì)Mashlet進(jìn)行運(yùn)行,直至將隊(duì)列中的Mashlet全部被運(yùn)行完畢。由于被運(yùn)行的Mashlet即被從隊(duì)列中清除出去,因此,當(dāng)Mashlet均被運(yùn)行完畢,也就表示在隊(duì)列中已沒(méi)有可運(yùn)行的Mashlet。由于運(yùn)行引擎不區(qū)分Mashlet的來(lái)源,因此,當(dāng)Mashup應(yīng)用中的最后ー個(gè)流程環(huán)節(jié)上的Mashlet被運(yùn)行完畢之后,該Mashup應(yīng)用即被整體運(yùn)行完畢;當(dāng)隊(duì)列中沒(méi)有可運(yùn)行的Mashlet之后,即表示當(dāng)前各Mashup應(yīng)用均被運(yùn)行完畢。 本發(fā)明實(shí)施例提供的內(nèi)容整合引擎調(diào)度方法,將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)包括至少ー個(gè)操作子的Mashlet,在根據(jù)各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定了將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn)之后,根據(jù)各起始時(shí)間點(diǎn),分別將各入度為零的Mashlet加入隊(duì)列,并且在隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入隊(duì)列,通過(guò)從操作子池中調(diào)用隊(duì)列中的Mashlet包括的各操作子,運(yùn)行隊(duì)列中的Mashlet,直至隊(duì)列中的Mashlet全部運(yùn)行完成 ,利用懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述實(shí)施例的基礎(chǔ)上,將Mashup應(yīng)用分解為Mashlet的分解規(guī)則可以根據(jù)需要進(jìn)行設(shè)定。其中,一種可選的實(shí)施方式為,在所述待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將所述Mashup應(yīng)用分解為多個(gè)Mashlet,以使各所述Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚。圖2a為ー個(gè)Mashup應(yīng)用的結(jié)構(gòu)圖,圖2b為ー個(gè)Mashup應(yīng)用分解為Mashlet之后的結(jié)構(gòu)圖,圖2c為圖2b中兩個(gè)Mashlet內(nèi)部的結(jié)構(gòu)圖。如圖2a所示,一個(gè)創(chuàng)建完成的Mashup應(yīng)用可以被記為樹(shù)形結(jié)構(gòu)。該Mashup應(yīng)用可以表示為表達(dá)式Mp= {N ;E},其中N表示用戶所選擇的操作子的集合,E表示在Mashup應(yīng)用的樹(shù)中連接各操作子的邊的集合,用于表示所連接的各操作子的輸入和輸出關(guān)系。在圖2a所示的樹(shù)形結(jié)構(gòu)中,各操作子也被稱為節(jié)點(diǎn)。在Mashup應(yīng)用的樹(shù)形結(jié)構(gòu)中,姆ー個(gè)節(jié)點(diǎn)代表ー個(gè)操作子,各操作子用于從外部數(shù)據(jù)源獲取數(shù)據(jù),或者對(duì)當(dāng)前數(shù)據(jù)流進(jìn)行某種處理。各操作子彼此之間是相對(duì)獨(dú)立的。對(duì)于樹(shù)形結(jié)構(gòu)中對(duì)數(shù)據(jù)流進(jìn)行匯聚的匯聚節(jié)點(diǎn),需要等待各輸入數(shù)據(jù)流均準(zhǔn)備完畢之后,才能進(jìn)行運(yùn)行。也就是說(shuō),在匯聚節(jié)點(diǎn)所連接的各節(jié)點(diǎn)分別完成對(duì)數(shù)據(jù)流的處理之后,該匯聚節(jié)點(diǎn)才能夠?qū)斎氲膬蓚€(gè)或多個(gè)數(shù)據(jù)流進(jìn)行處理。ー個(gè)Mashup應(yīng)用由葉子節(jié)點(diǎn)獲取外部數(shù)據(jù)源,將從外部數(shù)據(jù)源獲取到的數(shù)據(jù)作為原始數(shù)據(jù)。其中,葉子節(jié)點(diǎn)即為入度為零的節(jié)點(diǎn),入度表示終止于該節(jié)點(diǎn)的邊的數(shù)量,因此,入度為零表示該節(jié)點(diǎn)上沒(méi)有連接終止于其上的邊,是整個(gè)樹(shù)形結(jié)構(gòu)的起始點(diǎn)。葉子節(jié)點(diǎn)將獲取到的原始數(shù)據(jù)發(fā)送給相應(yīng)的操作子進(jìn)行處理,數(shù)據(jù)經(jīng)由樹(shù)枝上的各操作子的節(jié)點(diǎn)處理之后,最終達(dá)到樹(shù)根的節(jié)點(diǎn),將最終的運(yùn)行結(jié)果輸出。在圖2a所示的樹(shù)形結(jié)構(gòu)中,各節(jié)點(diǎn)的功能僅為舉例說(shuō)明。例如,F(xiàn)etch表示從某個(gè)地址請(qǐng)求網(wǎng)頁(yè)、數(shù)據(jù)的操作;Sort表示以某種規(guī)則對(duì)數(shù)據(jù)進(jìn)行排序的操作;Filter表示對(duì)數(shù)據(jù)進(jìn)行篩選的操作;GeoTag表示對(duì)數(shù)據(jù)進(jìn)行地理信息標(biāo)記的操作;Merge表示合并數(shù)據(jù)的操作;Cut表示對(duì)數(shù)據(jù)進(jìn)行截取的操作;End表示數(shù)據(jù)流的終點(diǎn)。在Mashup應(yīng)用中可選的各操作子的功能并不僅限于此。在整個(gè)樹(shù)形結(jié)構(gòu)中,合并(Merge)功能的操作子是ー種特殊的節(jié)點(diǎn),處于樹(shù)形結(jié)構(gòu)的分岔處,該操作子在運(yùn)行時(shí),將來(lái)自兩個(gè)或多個(gè)不同分支的中間結(jié)果進(jìn)行匯聚并處理。通過(guò)引入數(shù)據(jù)結(jié)構(gòu)Mashlet作為Mashup的調(diào)度單元,以姆個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,對(duì)待運(yùn)行的Mashup應(yīng)用進(jìn)行分解,形成多個(gè)Mashlet。該分解方法僅為ー種舉例說(shuō)明,可選的分解方法并不僅限于此。將以Mashlet為調(diào)度單元形成的原Mashup應(yīng)用的新的流程圖如圖2b所示,圖2b中節(jié)點(diǎn)中所示的Mlt為Mashlet的簡(jiǎn)稱。其中,Mashlet的內(nèi)部形態(tài)如圖2c所示,圖2c所示的是圖2b中Mashlet4和Mashlet8的內(nèi)部形態(tài),即內(nèi)部的流程圖。對(duì)Mashup應(yīng)用進(jìn)行分解后,所獲得的Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚,也就是說(shuō),Mashlet內(nèi)部不包括匯聚節(jié)點(diǎn),沒(méi)有數(shù)據(jù)流在Mashlet內(nèi)部進(jìn)行匯聚。
Mashlet作為Mashup應(yīng)用的片段,是通過(guò)對(duì)Mashup應(yīng)用的樹(shù)形結(jié)構(gòu)的分支進(jìn)行切割后得到的。將Mashup應(yīng)用分解為Mashlet之后,該Mashup應(yīng)用可以表示為Mp= (Mashletpl,Mashletp2,…MashletprJ ,即包括 n 個(gè) Mashlet,其中,第 i 個(gè) Mashletpi 由一組操作子組成,表示為OprSeqi=Iopr1, opr2, ---oprj ,0 : i彡n, k為大于零的自然數(shù),各Mashlet分別可以表示成包括ー個(gè)或多個(gè)操作子的集合,從而分別決定了各Mashlet處理數(shù)據(jù)的邏輯。相應(yīng)地,將操作子op。的預(yù)估時(shí)間記作,各操作子分別有相應(yīng)的預(yù)估時(shí)間,那么Mashleti的預(yù)估執(zhí)行耗時(shí)為PrTimei= E Topr,即OprSeqi中所有opr的預(yù)計(jì)耗時(shí)之和。Mashlet 的輸入節(jié)點(diǎn)可以表不為 inputSet= {input1, input2. . . input11}, Mashlet的輸出節(jié)點(diǎn)為卩隹一的節(jié)點(diǎn)output。輸入節(jié)點(diǎn)所輸入的數(shù)據(jù)流為該Mashlet的待處理數(shù)據(jù),輸出節(jié)點(diǎn)所述輸出的數(shù)據(jù)流為該Mashlet的輸出結(jié)果。故ー個(gè)Mashlet可以表示為ー個(gè)四元組,mashlet={id, inputSet, output, oprSeq},其中 id 為 Mashlet 的標(biāo)識(shí)信息。對(duì)于入度為零的Mashlet,其無(wú)輸入節(jié)點(diǎn),輸入該Mashlet的數(shù)據(jù)流可以為外部數(shù)據(jù)源的數(shù)據(jù)。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎調(diào)度方法,通過(guò)在待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將Mashup應(yīng)用分解為多個(gè)Mashlet,在各Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚,可以使得對(duì)Mashup應(yīng)用的分解方法更合理,更有利于結(jié)合懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述實(shí)施例的基礎(chǔ)上,在執(zhí)行步驟101之后,執(zhí)行步驟103之前,該方法還包括步驟105。其中步驟105可以在步驟102之前,也可以在步驟102之后。步驟105、分別計(jì)算各所述Mashlet的時(shí)延內(nèi)存積PMT,所述PMT為所述Mashlet運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大小與預(yù)計(jì)占用內(nèi)存的時(shí)間的乘積;相應(yīng)地,步驟104中運(yùn)行所述隊(duì)列中的Mashlet具體為,按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。運(yùn)行引擎在將Mashup應(yīng)用分解為多個(gè)Mashlet之后,還可以分別計(jì)算各Mashlet的時(shí)延內(nèi)存積(Product of Memory & Time, PMT), PMT=Memory^Holding Time。對(duì)某個(gè)Mashlet的PMT進(jìn)行計(jì)算時(shí),Memory表示該Mashlet占用內(nèi)存的大小,也就是該Mashlet在運(yùn)行時(shí)數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大??;Holding Time表示該Mashlet預(yù)計(jì)占用內(nèi)存資源的時(shí)間,也就是該Mashlet在運(yùn)行時(shí)數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的時(shí)間。PMT的數(shù)值可以表征Mashlet對(duì)內(nèi)存資源的占用和消耗。具體的,在初始時(shí)對(duì)Mashlet計(jì)算的PMT為PMT-。PMTnm = primex-MemShe,其中,prTime 為 Mashlet 運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的時(shí)間押為Mashlet運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大小。ー個(gè)Mashlet在運(yùn)行時(shí)預(yù)計(jì)占用內(nèi)存的大小,就是該Mashlet所包括的一個(gè)或多個(gè)操作子分別在運(yùn)行時(shí)預(yù)計(jì)占用的內(nèi)存大小之和;ー個(gè)Mashlet在運(yùn)行時(shí)預(yù)計(jì)占用內(nèi)存的時(shí)間,或者說(shuō)預(yù)計(jì)占用內(nèi)存的時(shí)長(zhǎng),就是該Mashlet所包括的ー個(gè)或多個(gè)操作子分別在運(yùn)行時(shí)預(yù)計(jì)占用的內(nèi)存的時(shí)間長(zhǎng)度之和。 需要說(shuō)明的是,ー個(gè)Mashlet所占內(nèi)存基本等于各輸入數(shù)據(jù)流的所占內(nèi)存的大小之和,這是因?yàn)樵揗ashlet利用其包括的操作子對(duì)數(shù)據(jù)流進(jìn)行處理并交付到下ー個(gè)Mashlet之前,數(shù)據(jù)量不會(huì)發(fā)生大幅的變化??紤]到入度為零的Mashlet—般以需要獲取數(shù)據(jù)的操作子為起始操作子,例如具有Fetch功能的操作子,故對(duì)于該類操作子,將獲取到數(shù)據(jù)之后該操作子所占用的內(nèi)存的大小,作為該操作子所占用的內(nèi)存的大小。由于PMT的計(jì)算是在Mashlet被運(yùn)行之前,因此,該Mashlet所占用內(nèi)存的大小和占用的時(shí)間可以采用預(yù)估值。也就是,可以基于數(shù)據(jù)分析和歷史統(tǒng)計(jì),根據(jù)操作子被其他Mashup應(yīng)用調(diào)用時(shí),實(shí)際被運(yùn)行中所占用的內(nèi)存大小和運(yùn)行時(shí)間,計(jì)算出基本準(zhǔn)確的各操作子運(yùn)行預(yù)計(jì)占用的內(nèi)存大小和預(yù)計(jì)占用的時(shí)間。在運(yùn)行引擎計(jì)算出了每個(gè)Mashlet的PMT之后,當(dāng)Mashlet被加入隊(duì)列中等待運(yùn)行時(shí),運(yùn)行引擎即按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。當(dāng)PMT的數(shù)值最大的Mashlet有兩個(gè)或多個(gè)時(shí),可以從中任選ー個(gè)先進(jìn)行運(yùn)行。當(dāng)某個(gè)Mashlet的PMT的數(shù)值較大吋,說(shuō)明該Mashlet需要占用內(nèi)存的時(shí)間較長(zhǎng),和/或該Mashlet需要占用的內(nèi)存資源較多,則該Mashlet的優(yōu)先級(jí)較高。相應(yīng)地,運(yùn)行引擎會(huì)優(yōu)先運(yùn)行隊(duì)列中優(yōu)先級(jí)較高的Mashlet。為了讓Mashup平臺(tái)的內(nèi)存資源盡可能得到有效的利用,本發(fā)明中的調(diào)度設(shè)計(jì)遵循的原則為,當(dāng)ー個(gè)Mashlet的PMT值越大,該Mashlet的運(yùn)行優(yōu)先級(jí)就越高。從而使得Mashup平臺(tái)運(yùn)行引擎盡可能早地調(diào)度執(zhí)行該Mashlet,在運(yùn)行完成后,釋放該Mashlet持有的內(nèi)存資源。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎調(diào)度方法,在將Mashup應(yīng)用分解為多個(gè)Mashlet之后,分別計(jì)算各Mashlet的PMT,相應(yīng)地,在對(duì)隊(duì)列中的Mashlet進(jìn)行運(yùn)行時(shí),優(yōu)先運(yùn)行隊(duì)列中PMT數(shù)值較大的Mashlet,由于PMT在時(shí)間和空間兩個(gè)尺度上度量了對(duì)內(nèi)存資源的使用情況,能夠更好地用以衡量Mashlet在發(fā)生同步阻塞時(shí)相應(yīng)產(chǎn)生的內(nèi)存資源被占用的代價(jià),優(yōu)先運(yùn)行PMT數(shù)值較大的Mashlet,更有利于提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述各實(shí)施例的基礎(chǔ)上,在順序執(zhí)行完步驟105和步驟103之后,執(zhí)行步驟104之前,該方法還包括步驟106、根據(jù)當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正;相應(yīng)地,步驟104中按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet具體為,按照修正后的PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。運(yùn)行引擎在分別計(jì)算出各Mashlet的PMT之后,還可以對(duì)Mashlet的PMT的數(shù)值進(jìn)行更新,或者說(shuō)進(jìn)行修正。在對(duì)Mashlet的PMT進(jìn)行修正之后,運(yùn)行引擎即根據(jù)修正后的PMT的數(shù)值判斷運(yùn)行Mashlet的順序。由于運(yùn)行引擎在初始時(shí)計(jì)算出的Mashlet的PMT的數(shù)值,是根據(jù)預(yù)估的Mashlet占用的內(nèi)存大小和時(shí)間作為計(jì)算依據(jù)。根據(jù)預(yù)估的占用內(nèi)存的時(shí)間,理論上具有相同輸出節(jié)點(diǎn)的Mashlet運(yùn)行完畢的數(shù)據(jù)流,基本可以同時(shí)到達(dá)作為輸出節(jié)點(diǎn)的Mashlet,但是在實(shí)際運(yùn)行過(guò)程中,無(wú)法做到理論上預(yù)計(jì)的準(zhǔn)確程度,也就是說(shuō),在實(shí)際運(yùn)行過(guò)程中,具有相同輸出節(jié)點(diǎn)的Mashlet運(yùn)行完畢后到達(dá)作為輸出節(jié)點(diǎn)的Mashlet的時(shí)間,還是可能出現(xiàn)時(shí)間差的,即還是存在同步等待的問(wèn)題。相應(yīng)地,運(yùn)行引擎在對(duì)初始計(jì)算出的PMT進(jìn)行修正吋,主要考慮各未運(yùn)行的Mashlet未按預(yù)計(jì)時(shí)間被運(yùn)行所延誤的時(shí)間,即當(dāng)前時(shí)間點(diǎn)與預(yù)設(shè)的運(yùn)行時(shí)間點(diǎn)的時(shí)間差。并且,由于當(dāng)隊(duì)列中姆運(yùn)行完成ー個(gè)Mashlet之后,對(duì)于未運(yùn)行的Mashlet而言,被延誤的時(shí)間隨之發(fā)生變化,因此,需要相應(yīng)地重新對(duì)當(dāng)前隊(duì)列中未運(yùn)行的Mashlet的PMT數(shù)值進(jìn)行修正。Mashlet被延誤的時(shí)間越長(zhǎng),其PMT的數(shù)值在修正之后將越大,修正后的PMT的數(shù)值越大,則該Mashlet被運(yùn)行的優(yōu)先級(jí)越高,相應(yīng)地,該Mashlet將盡快被運(yùn)行。其中,在對(duì)Mashlet的PMT數(shù)值進(jìn)行修正的多種方法中,一種可選的實(shí)施方式為,根據(jù)所述當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,獲得延誤時(shí)間;根據(jù)所述延誤時(shí)間和與所述未運(yùn)行的Mashlet具有相同輸出節(jié)點(diǎn)的ー個(gè)或多個(gè) Mashlet占用內(nèi)存大小之和的乘積,獲得第一修正PMT ;根據(jù)所述延誤時(shí)間和將所述未運(yùn)行的Mashlet作為輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第二修正PMT ;根據(jù)所述PMT、所述第一修正PMT和所述第二修正PMT,獲得修正后的PMT,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。對(duì)于隊(duì)列中的一個(gè)調(diào)度単元Mashleti,運(yùn)行引擎預(yù)計(jì)對(duì)該Mashleti進(jìn)行運(yùn)行的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)為b,但是在實(shí)際的執(zhí)行過(guò)程中,若Mashleti未被調(diào)度執(zhí)行,那么在t時(shí)刻,即Mashleti的運(yùn)行被延誤,可能使得內(nèi)存中由于數(shù)據(jù)流之間的同步等待而出現(xiàn)阻塞。該阻塞時(shí)間,或稱延誤時(shí)間為(t-t0)。用 表示該延誤時(shí)間內(nèi),與Mashleti具有相同輸出節(jié)點(diǎn)的Mashlet占用內(nèi)存資源的情況,即第一修正PMT。PMllkiy =(卜ら)xX,MemSize,其中,J],output、MemSize 是 i 個(gè)與該Mashlet具有相同輸出節(jié)點(diǎn)的Mashlet所占用內(nèi)存的大小之和。例如,若該Mashlet為圖2b中的Mashlet (Mlt) 8,則ア(0叫即為Mashlet (Mlt) 7所占的內(nèi)存大小。其中,與Mashlet具有相同輸出節(jié)點(diǎn)的Mashlet可能已經(jīng)被運(yùn)行完畢,也可能在隊(duì)列中等待被運(yùn)行。對(duì)于其中已運(yùn)行完畢的Mashlet,在計(jì)算時(shí)所采用的占用內(nèi)存的大小為該Mashlet實(shí)際占用內(nèi)存的大?。粚?duì)于其中未運(yùn)行的Mashlet,在計(jì)算時(shí)所采用的占用內(nèi)存的大小為該Mashlet預(yù)計(jì)占用內(nèi)存的大小。用PMd,,表示該延誤時(shí)間內(nèi),將該Mashlet作為輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存資源的情況,即第二修正PMT。PMIllm =(卜/ ,)χΣ/)蹲肅“·她肌分沈,其中,ΣI嚴(yán),《ぎMe—=e是將Mashlet作為輸出節(jié)點(diǎn)的j個(gè)Mashlet所占用內(nèi)存的大小。例如,若該Mashlet為圖2b中的Mashlet(Mlt) 8,則辟"ふAZwAVrtノ為 Mashlet (Mlt) 3,Mashlet (Mlt) 4,Mashlet (Mlt) 5 和Mashlet (Mlt) 6所占內(nèi)存大小之和。由于Mashleti被運(yùn)行時(shí),將其作為輸出節(jié)點(diǎn)的各Mashlet已運(yùn)行完成,因此,計(jì)算時(shí)所采用的內(nèi)存大小為各Mashlet實(shí)際占用內(nèi)存的大小。
從而,由于該Mashlet未被按照預(yù)設(shè)的運(yùn)行時(shí)間點(diǎn)進(jìn)行運(yùn)行,產(chǎn)生的內(nèi)存資源被浪費(fèi)的代價(jià),可以表示為PMTutay = (I —rft) X (Σ,. output^ MemSize + Oulpulipmc .MemSize)修正后的PMT 為 PMT=PMTra^PMTdelayt5Mashlet進(jìn)入隊(duì)列之后,在隨著時(shí)間的增長(zhǎng)而未被運(yùn)行的情況下,其PMTdelay將會(huì)逐漸増大。相應(yīng)地,該Mashlet在修正后的PMT的數(shù)值將會(huì)逐漸増大。ー個(gè)Mashup應(yīng)用在被運(yùn)行引擎分解為若干個(gè)Mashlet之后,各Mashlet被加入隊(duì)列中進(jìn)行無(wú)差別的公平競(jìng)爭(zhēng),各Mashlet通過(guò)PMT數(shù)值的大小進(jìn)行競(jìng)爭(zhēng)的過(guò)程看似獨(dú)立,但是PMTddlay的計(jì)算方法能夠有助于保持Mashup應(yīng)用的整體性。當(dāng)ー個(gè)Mashup應(yīng)用中的一個(gè)Mashlet被運(yùn)行之后,勢(shì)必由于它占用了內(nèi)存資源,導(dǎo)致與它屬于同一個(gè)Mashup應(yīng)用的其他Mashlet的PMT的數(shù)值增大,相應(yīng)地PMT數(shù)值增大的Mashlet的優(yōu)先級(jí)被提高。具有相同輸出節(jié)點(diǎn)的Mashlet 互為 Mashletmates,互為 Mashletmates 的 Mashlet在調(diào)度的過(guò)程中會(huì)相互依賴。例如,Mashletmates= (Mashleti, Mashletj, MashletJ ,Outputi=Outputj=Outputk,即 MashletpMashlet..和 Mashletk 的輸出節(jié)點(diǎn)相同。如圖 2b 中所不的 Mashlet (Mlt) I 和 Mashlet (Mlt) 2 ;Mashlet (Mlt) 3、Mashlet (Mlt) 4、Mashlet(Mlt) 5 和 Mashlet (Mlt) 6 ;Mashlet (Mlt) 7 和 Mashlet (Mlt) 8。具有相同輸出節(jié)點(diǎn)的Mashlet之間的Mashletmates關(guān)系,可以用于計(jì)算上述第二修正PMT。由于基于懶啟動(dòng)的機(jī)制,具有相同輸出節(jié)點(diǎn)的Mashlet預(yù)計(jì)的運(yùn)行完畢的時(shí)間點(diǎn)是基本相近的,但是其中被延誤而未運(yùn)行的Mashlet的PMT數(shù)值會(huì)相應(yīng)地由于延誤時(shí)間的增長(zhǎng)而増大,從而使得該未運(yùn)行的Mashlet被運(yùn)行的優(yōu)先級(jí)被提高,以達(dá)到盡快被運(yùn)行效
果O該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet將在向其輸入數(shù)據(jù)流的Mashlet運(yùn)行完畢之后,被加入隊(duì)列中,如果向其輸入數(shù)據(jù)流的Mashlet的運(yùn)行被延誤,會(huì)使得該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet也未能在預(yù)計(jì)的運(yùn)行時(shí)間點(diǎn)被運(yùn)行,相應(yīng)地,該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet的PMT數(shù)值會(huì)相應(yīng)地由于延誤時(shí)間的增長(zhǎng)而増大,從而使得該輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet被運(yùn)行的優(yōu)先級(jí)提高,以達(dá)到盡快被運(yùn)行效果。這樣的連鎖反應(yīng)會(huì)隨著該Mashup應(yīng)用中的各Mashlet逐個(gè)被運(yùn)行而越發(fā)明顯。即ー個(gè)Mashup應(yīng)用的運(yùn)行整體具有較好的連貫性。從Mashup平臺(tái)的整體上來(lái)看,調(diào)度過(guò)程中對(duì)隊(duì)列中的來(lái)自同一個(gè)Mashup應(yīng)用的MashIet有類聚的效果,從而保證了平臺(tái)的結(jié)果產(chǎn)出率。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎調(diào)度方法,通過(guò)對(duì)隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正,使得以修正后的PMT的數(shù)值大小為依據(jù),優(yōu)先運(yùn)行隊(duì)列中修正后的PMT的數(shù)值較大的Mashlet,更能體現(xiàn)Mashlet被執(zhí)行的急迫度,使得調(diào)度策略更加準(zhǔn)確,也為同步等待發(fā)生時(shí)盡快解除提供了保證,從而在時(shí)間上更緊湊地使用引擎的內(nèi)存資源,提升內(nèi)存利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。圖3為本發(fā)明提供的內(nèi)容整合引擎ー實(shí)施例的結(jié)構(gòu)示意圖,如圖3所示,該內(nèi)容整合引擎包括分解器11、隊(duì)列處理器12和執(zhí)行器13。其中,分解器11,用于將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)Mashl et,所述 Mashlet包括ー個(gè)或多個(gè)操作子;根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,以使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi);隊(duì)列處理器12,用于根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列;執(zhí)行器13,用于從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎,將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)包括至少ー個(gè)操作子的Mashlet,在根據(jù)各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定了將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn)之后,根據(jù)各起始時(shí)間點(diǎn),分別將各入度為零的Mashlet加入隊(duì)列,并且在隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入隊(duì)列,通過(guò)從操作子池中調(diào)用隊(duì)列中的Mashlet包括的各操作子,運(yùn)行隊(duì)列中的Mashlet,直至隊(duì)列中的Mashlet全部運(yùn)行完成,利用懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述實(shí)施例的基礎(chǔ)上,分解器11還用于,在所述待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將所述Mashup應(yīng)用分解為多個(gè)Mashlet,以使各所述Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎,通過(guò)在待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將Mashup應(yīng)用分解為多個(gè)Mashlet,在各Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚,可以使得對(duì)Mashup應(yīng)用的分解方法更合理,更有利于結(jié)合懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述各實(shí)施例的基礎(chǔ)上,分解器11還用于,在將所述Mashup應(yīng)用分解為多個(gè)Mashlet之后,分別計(jì)算各所述Mashlet的時(shí)延內(nèi)存積PMT,所述PMT為所述Mashlet運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大小與預(yù)計(jì)占用內(nèi)存的時(shí)間的乘積。相應(yīng)地,執(zhí)行器13還用于,按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。 本發(fā)明實(shí)施例提供的內(nèi)容整合弓丨擎,在將Mashup應(yīng)用分解為多個(gè)Mashlet之后,分別計(jì)算各Mashlet的PMT,相應(yīng)地,在對(duì)隊(duì)列中的Mashlet進(jìn)行運(yùn)行時(shí),優(yōu)先運(yùn)行隊(duì)列中PMT數(shù)值較大的Mashlet,由于PMT在時(shí)間和空間兩個(gè)尺度上度量了對(duì)內(nèi)存資源的使用情況,能夠更好地用以衡量Mashlet在發(fā)生同步阻塞時(shí)相應(yīng)產(chǎn)生的內(nèi)存資源被占用的代價(jià),優(yōu)先運(yùn)行PMT數(shù)值較大的Mashlet,更有利于提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。進(jìn)ー步地,在上述各實(shí)施例的基礎(chǔ)上,隊(duì)列處理器12還用于,在所述執(zhí)行器運(yùn)行所述隊(duì)列中的Mashlet之前,根據(jù)當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。相應(yīng)地,所述執(zhí)行器13還用于,按照修正后的PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。進(jìn)ー步地,在上述各實(shí)施例的基礎(chǔ)上,隊(duì)列處理器12還用于,根據(jù)所述當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,獲得延誤時(shí)間;根據(jù)所述延誤時(shí)間和與所述未運(yùn)行的Mashlet具有相同輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第一修正PMT ;根據(jù)所述延誤時(shí)間和將所述未運(yùn)行的Mashlet作為輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第二修正PMT ;根據(jù)所述PMT、所述第一修正PMT和所述第二修正PMT,獲得修正后的PMT,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。進(jìn)ー步地,在上述各實(shí)施例的基礎(chǔ)上,所述隊(duì)列中的Mashlet可以屬于相同的Mashup應(yīng)用,也可以屬于不同的Mashup應(yīng)用。本發(fā)明實(shí)施例提供的內(nèi)容整合引擎,通過(guò)對(duì)隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正,使得以修正后的PMT的數(shù)值大小為依據(jù),優(yōu)先運(yùn)行隊(duì)列中修正后的PMT的數(shù)值較大的Mashlet,更能體現(xiàn)Mashlet被執(zhí)行的急迫度,使得調(diào)度策略更加準(zhǔn)確,也為同步等待發(fā)生時(shí)盡快解除提供了保證,從而在時(shí)間上更緊湊地使用引擎的內(nèi)存資源,提升內(nèi)存利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。具體的,本發(fā)明各實(shí)施例提供的內(nèi)容整合引擎進(jìn)行內(nèi)容整合引擎調(diào)度的方法,可以參見(jiàn)上述對(duì)應(yīng)的方法實(shí)施例中的操作步驟,此處不再贅述。圖4為本發(fā)明提供的內(nèi)容整合平臺(tái)實(shí)施例的結(jié)構(gòu)示意圖,如圖4所示,該內(nèi)容整合平臺(tái)2包括上述各實(shí)施例中所述的內(nèi)容整合引擎I。具體的,本發(fā)明各實(shí)施例提供的內(nèi)容整合平臺(tái)進(jìn)行內(nèi)容整合引擎調(diào)度的方法,可以參見(jiàn)上述對(duì)應(yīng)的方法實(shí)施例中的操作步驟,此處不再贅述。本發(fā)明實(shí)施例提供的內(nèi)容整合平臺(tái),將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)包括至少ー個(gè)操作子的Mashlet,在根據(jù)各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定了將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn)之后,根據(jù)各起始時(shí)間點(diǎn),分別將各入度為零的Mashlet加入隊(duì)列,并且在隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入隊(duì)列,通過(guò)從操作子池中調(diào)用隊(duì)列中的Mashlet包括的各操作子,運(yùn)行隊(duì)列中的Mashlet,直至隊(duì)列中的Mashlet全部運(yùn)行完成,利用懶啟動(dòng)機(jī)制,異步地將Mashlet加入隊(duì)列中,通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。圖5為本發(fā)明提供的內(nèi)容整合平臺(tái)系統(tǒng)的系統(tǒng)架構(gòu)圖,如圖5所示,一種較優(yōu)的內(nèi)容整合平臺(tái)系統(tǒng)可以包括Mashup平臺(tái)、Mashup客戶端和外部數(shù)據(jù)源。其中,Mashup平臺(tái)還包括Mashup編輯器、Mashup資源庫(kù)和Mashup運(yùn)行引擎。Mashup編輯器用于供用戶創(chuàng)建Mashup應(yīng)用;Mashup資源庫(kù)用于保存用戶所創(chuàng)建的Mashup應(yīng)用;Mashup運(yùn)行引擎用于對(duì)Mashup應(yīng)用進(jìn)行運(yùn)行。Mashup客戶端可以為個(gè)人電腦(Personal Computer, PC)或者手機(jī)等移動(dòng)終端上 的客戶端。Mashup應(yīng)用在運(yùn)行完成后的運(yùn)行結(jié)果可以返回給Mashup客戶端,供用戶接收。進(jìn)一步地,Mashup運(yùn)行引擎還包括分解器(Splitter)、隊(duì)列管理器(MashletsQueue)、執(zhí)行器(Executor)和基于PMT的調(diào)度器。其中,分解器用于將用戶所創(chuàng)建的Mashup應(yīng)用,在被運(yùn)行之前分解為ー組Mashlet ;隊(duì)列管理器用于對(duì)待運(yùn)行的Mashlet在隊(duì)列中進(jìn)行管理;執(zhí)行器用于對(duì)Mashlet中的操作子進(jìn)行運(yùn)行,由于執(zhí)行器維持著一系列的操作子組成的操作子池,因此根據(jù)當(dāng)前Mashlet中的操作子的運(yùn)行流程,從操作子池中選擇相應(yīng)的操作子對(duì)Mashlet中的數(shù)據(jù)進(jìn)行操作,其中部分操作子可能與外部的服務(wù)器或數(shù)據(jù)源進(jìn)行交互操作;基于PMT的調(diào)度器,用于計(jì)算從Mashup應(yīng)用中分解出的各Mashlet的PMT,還可以用于對(duì)隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。圖6為本發(fā)明提供的內(nèi)容整合平臺(tái)系統(tǒng)運(yùn)行時(shí)的流程圖,如圖6所示,上述內(nèi)容整合平臺(tái)系統(tǒng)的ー種較優(yōu)的運(yùn)行流程為包括如下步驟。步驟201、判斷是否有Mashup應(yīng)用的執(zhí)行請(qǐng)求。若有,則執(zhí)行步驟202 ;若無(wú),則可以結(jié)束流程。步驟202、將Mashup應(yīng)用分解為Mashlet。Mashup平臺(tái)姆次接收?qǐng)?zhí)行請(qǐng)求,運(yùn)行相應(yīng)的Mashup應(yīng)用之前,由分解器在姆個(gè)匯聚節(jié)點(diǎn)處將Mashup應(yīng)用分解為ー組Mashlet。步驟203、計(jì)算Mashlet的PMT,并將Mashlet加入隊(duì)列中。由調(diào)度器預(yù)估每一支Mashlet的運(yùn)行時(shí)間和內(nèi)存占用,作為原始的PMT值寫(xiě)入該Mashlet屬性,并將這些Mashlet中當(dāng)前可以進(jìn)行運(yùn)行的Mashlet加入隊(duì)列中。也就是說(shuō),首先將入度為零的Mashlet加入隊(duì)列,進(jìn)而當(dāng)具有相同輸出節(jié)點(diǎn)的Mashlet均運(yùn)行完畢之后,將作為輸出節(jié)點(diǎn)的Mashlet加入隊(duì)列中,并依次類推,將當(dāng)前可以運(yùn)行的Mashlet加入隊(duì)列中。步驟204、判斷執(zhí)行器是否處于空閑狀態(tài)。若是,則執(zhí)行步驟205,若否,則執(zhí)行步驟 203。步驟205、刷新隊(duì)列中的Mashlet的PMT的數(shù)值。當(dāng)執(zhí)行器處于空閑狀態(tài)時(shí),對(duì)隊(duì)列中的Mashlet的PMT數(shù)值進(jìn)行刷新。隨著時(shí)間的變化,隊(duì)列中Mashlet的PMT的數(shù)值可以不斷被重新計(jì)算和修正。
步驟206、執(zhí)行器分析并運(yùn)行隊(duì)列中PMT的數(shù)值最大的Mashlet。執(zhí)行器對(duì)隊(duì)列中Mashlet的PMT數(shù)值進(jìn)行判斷,優(yōu)先將其中優(yōu)先級(jí)最高的Mashlet進(jìn)行運(yùn)行。步驟207、判斷隊(duì)列中是否有Mashlet。若是,則執(zhí)行步驟205 ;若否,則結(jié)束流程。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于ー計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各 方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。最后應(yīng)說(shuō)明的是以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
權(quán)利要求
1.ー種內(nèi)容整合引擎調(diào)度方法,其特征在于,包括 將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)調(diào)度支Mashlet,所述Mashlet包括ー個(gè)或多個(gè)操作子; 根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,以使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi); 根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列; 從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。
2.根據(jù)權(quán)利要求I所述的內(nèi)容整合引擎調(diào)度方法,其特征在于,所述將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)Mashlet具體為 在所述待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將所述Mashup應(yīng)用分解為多個(gè)Mashlet,以使各所述Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚。
3.根據(jù)權(quán)利要求2所述的內(nèi)容整合引擎調(diào)度方法,其特征在于,所述將所述Mashup應(yīng)用分解為多個(gè)Mashlet之后,所述方法還包括 分別計(jì)算各所述Mashlet的時(shí)延內(nèi)存積PMT,所述PMT為所述Mashlet運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大小與預(yù)計(jì)占用內(nèi)存的時(shí)間的乘積; 相應(yīng)地,所述運(yùn)行所述隊(duì)列中的Mashlet具體為 按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。
4.根據(jù)權(quán)利要求3所述的內(nèi)容整合引擎調(diào)度方法,其特征在于,所述運(yùn)行所述隊(duì)列中的Mashlet之前,所述方法還包括 根據(jù)當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正; 相應(yīng)地,所述按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet具體為 按照修正后的PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。
5.根據(jù)權(quán)利要求4所述的內(nèi)容整合引擎調(diào)度方法,其特征在于,所述根據(jù)當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正具體為 根據(jù)所述當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,獲得延誤時(shí)間; 根據(jù)所述延誤時(shí)間和與所述未運(yùn)行的Mashlet具有相同輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第一修正PMT ; 根據(jù)所述延誤時(shí)間和將所述未運(yùn)行的Mashlet作為輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第二修正PMT ; 根據(jù)所述PMT、所述第一修正PMT和所述第二修正PMT,獲得修正后的PMT,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。
6.根據(jù)權(quán)利要求1-4中任一所述的內(nèi)容整合引擎調(diào)度方法,其特征在于,所述隊(duì)列中的Mashlet可以屬于相同的Mashup應(yīng)用,也可以屬于不同的Mashup應(yīng)用。
7.ー種內(nèi)容整合引擎,其特征在于,包括 分解器,用于將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)Mashlet,所述Mashlet包括ー個(gè)或多個(gè)操作子;根據(jù)各所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),所述Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為所述Mashlet包括的各所述操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,以使具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet運(yùn)行完成的時(shí)間差在預(yù)設(shè)的時(shí)間范圍內(nèi); 隊(duì)列處理器,用于根據(jù)所述起始時(shí)間點(diǎn),將所述各入度為零的Mashlet加入所述隊(duì)列,并且在所述隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將所述輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入所述隊(duì)列; 執(zhí)行器,用于從操作子池中調(diào)用所述隊(duì)列中的Mashlet包括的各所述操作子,運(yùn)行所述隊(duì)列中的Mashlet,直至所述隊(duì)列中的Mashlet全部運(yùn)行完成。
8.根據(jù)權(quán)利要求7所述的內(nèi)容整合引擎,其特征在于,所述分解器還用于 在所述待運(yùn)行的Mashup應(yīng)用中,以每個(gè)作為匯聚節(jié)點(diǎn)的操作子的輸入端為界線,將所述Mashup應(yīng)用分解為多個(gè)Mashlet,以使各所述Mashlet內(nèi)部無(wú)數(shù)據(jù)流的匯聚。
9.根據(jù)權(quán)利要求8所述的內(nèi)容整合引擎,其特征在于,所述分解器還用于 在將所述Mashup應(yīng)用分解為多個(gè)Mashlet之后,分別計(jì)算各所述Mashlet的時(shí)延內(nèi)存積PMT,所述PMT為所述Mashlet運(yùn)行時(shí)的數(shù)據(jù)流預(yù)計(jì)占用內(nèi)存的大小與預(yù)計(jì)占用內(nèi)存的時(shí)間的乘積; 相應(yīng)地,所述執(zhí)行器還用于 按照PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。
10.根據(jù)權(quán)利要求9所述的內(nèi)容整合引擎,其特征在于,所述隊(duì)列處理器還用于 在所述執(zhí)行器運(yùn)行所述隊(duì)列中的Mashlet之前,根據(jù)當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正; 相應(yīng)地,所述執(zhí)行器還用于 按照修正后的PMT的數(shù)值大小,優(yōu)先運(yùn)行所述隊(duì)列中PMT的數(shù)值較大的Mashlet。
11.根據(jù)權(quán)利要求10所述的內(nèi)容整合引擎,其特征在于,所述隊(duì)列處理器還用于 根據(jù)所述當(dāng)前時(shí)間點(diǎn)與所述隊(duì)列中未運(yùn)行的Mashlet的預(yù)設(shè)運(yùn)行時(shí)間點(diǎn)的時(shí)間差,獲得延誤時(shí)間;根據(jù)所述延誤時(shí)間和與所述未運(yùn)行的Mashlet具有相同輸出節(jié)點(diǎn)的一個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第一修正PMT ;根據(jù)所述延誤時(shí)間和將所述未運(yùn)行的Mashlet作為輸出節(jié)點(diǎn)的ー個(gè)或多個(gè)Mashlet占用內(nèi)存大小之和的乘積,獲得第二修正PMT ;根據(jù)所述PMT、所述第一修正PMT和所述第二修正PMT,獲得修正后的PMT,對(duì)所述隊(duì)列中未運(yùn)行的Mashlet的PMT的數(shù)值進(jìn)行修正。
12.根據(jù)權(quán)利要求7-11中任一所述的內(nèi)容整合引擎,其特征在于,所述隊(duì)列中的Mashlet可以屬于相同的Mashup應(yīng)用,也可以屬于不同的Mashup應(yīng)用。
13.ー種內(nèi)容整合平臺(tái),其特征在于,包括如權(quán)利要求7-12中任一所述的內(nèi)容整合弓I擎。
全文摘要
本發(fā)明提供一種內(nèi)容整合引擎調(diào)度方法及裝置,其中該方法包括將待運(yùn)行的內(nèi)容整合Mashup應(yīng)用分解為多個(gè)調(diào)度支Mashlet;根據(jù)各Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng),分別確定將各入度為零的Mashlet加入隊(duì)列的起始時(shí)間點(diǎn),Mashlet運(yùn)行的預(yù)估時(shí)長(zhǎng)為Mashlet包括的各操作子運(yùn)行的預(yù)估時(shí)長(zhǎng)之和,將各入度為零的Mashlet加入隊(duì)列,并且在隊(duì)列中具有相同輸出節(jié)點(diǎn)的兩個(gè)或多個(gè)Mashlet均運(yùn)行完成之后,將輸出節(jié)點(diǎn)對(duì)應(yīng)的Mashlet加入隊(duì)列;從操作子池中調(diào)用隊(duì)列中的Mashlet包括的各操作子,運(yùn)行隊(duì)列中的Mashlet,直至隊(duì)列中的Mashlet全部運(yùn)行完成。通過(guò)盡量避免Mashup運(yùn)行時(shí)同步等待的發(fā)生,在時(shí)間上更緊湊地使用Mashup平臺(tái)中的內(nèi)存資源,提升內(nèi)存資源的有效利用率,進(jìn)而提升整個(gè)Mashup平臺(tái)的性能。
文檔編號(hào)G06F9/50GK102866924SQ20121033702
公開(kāi)日2013年1月9日 申請(qǐng)日期2012年9月12日 優(yōu)先權(quán)日2012年9月12日
發(fā)明者孫海龍, 劉旭東, 徐靜波, 王旭 申請(qǐng)人:北京航空航天大學(xué)