欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在主機計算機網(wǎng)絡(luò)上處理客戶機請求的系統(tǒng)和方法

文檔序號:6421245閱讀:146來源:國知局
專利名稱:在主機計算機網(wǎng)絡(luò)上處理客戶機請求的系統(tǒng)和方法
技術(shù)領(lǐng)域
一般地說,本發(fā)明涉及在計算機網(wǎng)絡(luò)上處理請求,更具體地說,涉及一種改進的系統(tǒng),它使用網(wǎng)格(grid)服務(wù)調(diào)度器把一個客戶機請求分解成許多任務(wù)。該系統(tǒng)通過一個網(wǎng)格對象陣列中的多個對象來執(zhí)行這些任務(wù),這些對象處在容器(container)內(nèi),這些容器構(gòu)成一個網(wǎng)格容器陣列,而該網(wǎng)絡(luò)容器陣列由一個微調(diào)度器控制。
背景技術(shù)
可以說,網(wǎng)格計算是群集計算的一個邏輯演變。下文中使用Globus工具箱(可從位于美國依利諾斯州芝加哥的Argonne國家實驗室得到)作為實現(xiàn)網(wǎng)格體系結(jié)構(gòu)的參考點來考察這種說法。在考慮Globus工具箱時,應該指出這一技術(shù)正以很快的速度演變,每次發(fā)布都有很明顯的不同。特別是Globus 3.0體系結(jié)構(gòu)是一個大的飛躍,這是由于它基于開放網(wǎng)格服務(wù)體系結(jié)構(gòu)標準。所以,在討論Globus時,必須說明確切的發(fā)布版本,以設(shè)定討論的上下文。
例如,考慮Globus 2.0實現(xiàn),它領(lǐng)先于開放網(wǎng)格服務(wù)體系結(jié)構(gòu)(OGSA)。在考察Globus 2.0體系結(jié)構(gòu)時,很快便清楚它把網(wǎng)格定義為“群集之群集”。這一復合觀點自Globus程序出現(xiàn)便已經(jīng)表現(xiàn)出來;用于網(wǎng)格計算的老的術(shù)語曾是“元計算(meta-computing)”;這是對多群集體系結(jié)構(gòu)的復合性質(zhì)的一個引用。“群集之群集”觀點與Globus程序的初始目的一致,即以單一基礎(chǔ)設(shè)施統(tǒng)一位于地理上分離的國家實驗室的若干群集。當考慮網(wǎng)格的可伸縮性時,這一觀點也很有意義。向網(wǎng)格添加各個主機將很快造成一個不可管理的基礎(chǔ)設(shè)施,而且把主機分組成單獨管理的若干組是一個邏輯步驟。“群集之群集”范例提供一個雙層的層次結(jié)構(gòu),它大大簡化了對網(wǎng)格的管理。
然而,“群集之群集”范例的兩個限制立即顯現(xiàn)出來。第一個限制是這一方案是固有的雙層結(jié)構(gòu)。就是說,它只能支持雙層層次結(jié)構(gòu),為了支持更深的層次,它必須擴展到原始的框架結(jié)構(gòu)。第二個限制是不存在跨整個網(wǎng)格調(diào)度任務(wù)的中央設(shè)施;就是說,不存在元調(diào)度器。每個群集被配置一個群集調(diào)度器,它有權(quán)調(diào)度那個群集中的任務(wù),但很快便清楚,必須有一個網(wǎng)格調(diào)度器(或元調(diào)度器)用于在整戶網(wǎng)格上調(diào)度任務(wù)。設(shè)計這種調(diào)度器的主要困難在于,在原始的Globus工具箱(2.0版或更低版本)中在網(wǎng)格世界和群集調(diào)度世界之間存在一個間斷。特別是,在一個群集內(nèi)和在各群集之間的任務(wù)調(diào)度使用不同的調(diào)度技術(shù)和協(xié)議。下面描述的本發(fā)明提議一個用于網(wǎng)格和群集兩個域的統(tǒng)一的任務(wù)調(diào)度域,所以它能無縫地支持層次結(jié)構(gòu)很深的網(wǎng)格。

發(fā)明內(nèi)容
本發(fā)明提供一種在主機計算機網(wǎng)絡(luò)上處理客戶機請求的方法,它包括在各主機中創(chuàng)建持久的容器,在容器中創(chuàng)建對象,把容器分組構(gòu)成網(wǎng)格容器陣列,把處在單個網(wǎng)格容器陣列內(nèi)的那些容器內(nèi)的對象分組到網(wǎng)格對象陣列中,為每個網(wǎng)格容器陣列創(chuàng)建一個微調(diào)度器,把每個客戶機請求分解成多個任務(wù),以及把多組任務(wù)賦予多個微調(diào)度器,這里微調(diào)度器把各個任務(wù)賦予對象。本發(fā)明在微調(diào)度器返回已完成任務(wù)組時賦予微調(diào)度器額外的任務(wù)組。該方法還包括通過網(wǎng)關(guān)把客戶機請求傳送到多個網(wǎng)格服務(wù)調(diào)度器。
本發(fā)明還提供處理客戶機請求的系統(tǒng)。該系統(tǒng)包括與網(wǎng)格容器陣列連接的網(wǎng)格服務(wù)調(diào)度器。每個網(wǎng)格容器陣列包括多個持久的容器(例如服務(wù)器),各容器駐留在不同的計算機主機中,還包括一個微調(diào)度器。每個容器包括許多對象。在構(gòu)成一個單個網(wǎng)格容器陣列的那些容器內(nèi)的對象構(gòu)成一個網(wǎng)格對象陣列。網(wǎng)格服務(wù)調(diào)度器透明地把一個客戶機請求分解成多個任務(wù)并把多組任務(wù)賦予每個微調(diào)度器。每個微調(diào)度器把從網(wǎng)格服務(wù)調(diào)度器接收的任務(wù)組中的各任務(wù)賦予其相應的網(wǎng)格對象陣列中的對象。
該系統(tǒng)能包括額外的調(diào)度器層次結(jié)構(gòu)級別并包括網(wǎng)關(guān),各網(wǎng)關(guān)與不同的網(wǎng)格服務(wù)調(diào)度器連接。門戶與網(wǎng)關(guān)相連,這些門戶沿網(wǎng)關(guān)把客戶機請求傳送給網(wǎng)格服務(wù)調(diào)度器。
每個容器陣列駐留在一個局域網(wǎng)中,使在網(wǎng)格容器陣列內(nèi)對象間的通信為局部通信。網(wǎng)格服務(wù)調(diào)度器以透明方式分解客戶機請求,使客戶機不知道對客戶機請求的分解。容器是持久性的服務(wù)容器,用于在跨越多個客戶機請求的時間段上處理多個客戶機的多個客戶機請求。


由下文中參考附圖對優(yōu)選實施例的詳細描述,將更好地理解本發(fā)明,其中圖1是由兩個不同組織共享的一個體系結(jié)構(gòu)的示意圖;圖2是示意圖,說明本發(fā)明的按需要創(chuàng)建容器的能力;圖3是示意圖,說明在各種容器中創(chuàng)建網(wǎng)格對象;圖4是示意圖,顯示不同對象間的交互作用;圖5是示意圖,說明本發(fā)明如何把任務(wù)轉(zhuǎn)發(fā)給網(wǎng)格對象陣列中的對象;圖6是示意圖,說明在一個復合網(wǎng)格容器中的多個客戶機調(diào)度器;圖7是示意圖,說明使用網(wǎng)格門戶的層次調(diào)度;以及圖8是示意圖,說明本發(fā)明在網(wǎng)格中的布局。
具體實施例方式
如前所述,曾使用不同的調(diào)度技術(shù)和協(xié)議在群集內(nèi)或群集間調(diào)度任務(wù)。本發(fā)明的“關(guān)注拓撲結(jié)構(gòu)的網(wǎng)格服務(wù)調(diào)度器”(TAGSS)調(diào)度體系結(jié)構(gòu)提出一個用于網(wǎng)格和群集兩個域的統(tǒng)一的任務(wù)調(diào)度域,它能無縫地支持層次結(jié)構(gòu)很深的網(wǎng)格。
本公開內(nèi)容考察為網(wǎng)格設(shè)計元調(diào)度器所伴隨的挑戰(zhàn)。具體地說,我們將討論群集環(huán)境和網(wǎng)格環(huán)境之間的差別,而且我們認為傳統(tǒng)的群集調(diào)度體系結(jié)構(gòu)不適用于網(wǎng)格環(huán)境中的元調(diào)度。當我們考慮到由于引入基于服務(wù)的體系結(jié)構(gòu)使新的網(wǎng)格技術(shù)與傳統(tǒng)的群集計算的距離更遠時,這一說法就是特別正確的了。當我們討論這些方面時,我們引入所發(fā)明的“關(guān)注拓撲結(jié)構(gòu)的網(wǎng)絡(luò)服務(wù)調(diào)度器”(TAGSS)的體系結(jié)構(gòu),它是為面向服務(wù)的網(wǎng)格體系結(jié)構(gòu)設(shè)計的。
在這一節(jié)我們簡單地說明群集和網(wǎng)格環(huán)境之間的那些影響任務(wù)調(diào)度基礎(chǔ)設(shè)施設(shè)計的主要差別。關(guān)于拓撲考慮,第一個考慮涉及總拓撲基礎(chǔ)設(shè)施。通常,群集有統(tǒng)一的拓撲結(jié)構(gòu),即計算主機通常有相同類型,在許多情況下是完全相同的,而且通常通過一個共同的網(wǎng)絡(luò)可達到所有主機。在一些情況中,群集可裝有高速網(wǎng)絡(luò)。顯然,這一環(huán)境很不同于平均情況的網(wǎng)格,因為用戶可通過廣域網(wǎng)達到網(wǎng)格資源,而且根據(jù)廣域網(wǎng)鏈路的特性,將以不同的服務(wù)質(zhì)量達到每個資源。網(wǎng)絡(luò)速度的變化是在設(shè)計TAGSS時的主要考慮之一,這在以下章節(jié)中會變得清楚。
關(guān)于服務(wù)調(diào)度與作業(yè)調(diào)度關(guān)系,要做的另一重要考慮是關(guān)于近來向基于服務(wù)的體系結(jié)構(gòu)的轉(zhuǎn)變,如在OGSA標準中提議的那樣?;诜?wù)的體系結(jié)構(gòu)與大多數(shù)群集調(diào)度器使用的基于作業(yè)的體系結(jié)構(gòu)有相當大的差別。這里我們應該仔細地定義術(shù)語“作業(yè)”的含義。我們使用為群集計算可用的大多數(shù)任務(wù)調(diào)度中間件已經(jīng)使用的術(shù)語,這些中間件的實例有Condor(可從位于美國Wisconsin的Madison的Wisconsin-Madison大學得到)、PBS(可從位于美國加州Mountain View的Veridian Systems得到)、LSF(可從位于美國加州Markham Ontario的Platform Computing得到)以及Load Leveler(可從位于美國Armonk的國際商業(yè)機器公司得到)。所有這些調(diào)度器都被稱為作業(yè)調(diào)度器。下文中比較作業(yè)調(diào)度器和服務(wù)調(diào)度器的特點。
關(guān)于作業(yè)和作業(yè)調(diào)度,一個作業(yè)與一個或多個進程相關(guān)聯(lián)。當我們說一個作業(yè)被調(diào)度時,這是指一個或多個進程在目標主機中被創(chuàng)建。利用與作業(yè)所關(guān)聯(lián)的進程的創(chuàng)建有關(guān)的參數(shù)描述作業(yè);如命令行語法、環(huán)境變量;還根據(jù)它需要的資源,如CPU或主機數(shù)、運行時庫等來描述作業(yè)。作業(yè)的另一有意義的方面是數(shù)據(jù)通信模型。即作業(yè)處理輸入和輸出數(shù)據(jù)的方式。使用命令行中的變元以及環(huán)境變量傳送輸入數(shù)據(jù);在這兩種情況中被支持的格式只有文本。就是說,輸入數(shù)據(jù)是作為文本串傳送的,這當然可以指含有適當輸入數(shù)據(jù)的文件。輸出數(shù)據(jù)以類似的方式傳送;可以從標準輸出管道得到文本輸出,但通常輸出數(shù)據(jù)是文件形式的。所以,一個作業(yè)通常與一組輸入和輸出文件耦合,由于這一原因,大多數(shù)群集調(diào)度器實現(xiàn)一個文件集結(jié)功能,它給出在執(zhí)行一個作業(yè)之前將文件傳送到遠程主機和在作業(yè)完成時提取這組輸出文件的能力。這一定義規(guī)定一個作業(yè)與單一工作單元關(guān)聯(lián),因為它包含的進程由單個一組輸入?yún)?shù)(通常代表單一用戶)啟動而且通常在產(chǎn)生輸出后作業(yè)進程停止執(zhí)行。由于這一原因,與一個作業(yè)關(guān)聯(lián)的進程可被描述為瞬態(tài)的。作業(yè)的瞬態(tài)特性把它的編程模式限定于批執(zhí)行。
關(guān)于服務(wù)、服務(wù)請求和請求調(diào)度,一個服務(wù)可以同等地關(guān)聯(lián)于更多個進程之一。然而,與服務(wù)關(guān)聯(lián)的進程通常是持久性的。就是說,一個服務(wù)在完成一個給定任務(wù)之后它并不停止執(zhí)行,相反,它是一個持久性的應用,很像一個服務(wù)器,能執(zhí)行多個工作單元或多個服務(wù)請求。所以,請求調(diào)度活動不涉及任何新進程的創(chuàng)建。相反,請求調(diào)度包括使來自若干用戶的服務(wù)請求按照某種管理策略進行排隊,然后這些請求被引導到能更好地完成給定請求的適當?shù)姆?wù)實例。服務(wù)提供者的這種持久性特性使得能夠?qū)崿F(xiàn)實時編程模式。至于數(shù)據(jù)管理方面,一個服務(wù)使用從標準(如WSDL和SOAP)中導出的更靈活的基礎(chǔ)設(shè)施。輸入和輸出參數(shù)能被描述為支持若干處理器體系結(jié)構(gòu)的可移植對象。
下表給出根據(jù)上述定義中討論的各方面對作業(yè)和服務(wù)請求的比較表1作業(yè)和服務(wù)請求的特點


關(guān)于任務(wù)調(diào)度粒度的重要性,在進入對TAGSS體系結(jié)構(gòu)的描述之前,我們再對使用比作業(yè)更細粒度的服務(wù)請求的優(yōu)點做最后一點說明。因為服務(wù)請求是小得多的工作單元,它使這些應用只是外包(outsource)計算任務(wù)的一部分。這一特性允許一個應用的大部分代碼和數(shù)據(jù)被包含在單個主機或組織之內(nèi)。這一特性在其應用代碼具有專有性質(zhì)的應用中是一個重要要求,因為只有較少的代碼段需要被移到外包組織,而且在標準服務(wù)外包(如基本數(shù)學例程)的情況中不需要傳送代碼。這一特性的更一重要應用是應用要處置大量數(shù)據(jù)的情況。在許多情況中,應用有可能人工管理數(shù)據(jù)和只傳送資源外包的操作所嚴格需要的數(shù)據(jù)。這是一個重要的考慮,許多應用在公開其專有代碼方面對這一考慮具有敏感性。在因只需傳送不可缺少的數(shù)據(jù)而獲得的效率方面,這也是一個重要的考慮。圖1顯示一個群集,它是一個大部分在單個組織中運行的應用,只外包小量并行化任務(wù)。在圖1中,對象128用于完成特定的任務(wù)。對象128被包含在群集125中。兩個組織120、121使用群集調(diào)度器和網(wǎng)格網(wǎng)關(guān)130通過群集125處理數(shù)據(jù)。與此相反,本發(fā)明提供一個網(wǎng)格,它利用若干不同組織內(nèi)的任意個節(jié)點。在討論了群集計算和網(wǎng)格計算之間的差別,特別是關(guān)于拓撲和任務(wù)調(diào)度方面之后,我們已建立了討論本發(fā)明的“關(guān)注拓撲結(jié)構(gòu)的網(wǎng)格服務(wù)調(diào)度器(TAGSS)”的背景。
本發(fā)明提供一個面向服務(wù)的體系結(jié)構(gòu)。這樣,我們開始討論一個實時調(diào)度場景,而首要考慮是準確定義實時調(diào)度的含義。在上一節(jié)中已經(jīng)討論過,不同于批執(zhí)行,服務(wù)提供者能提供實時編程。我們結(jié)合某些客戶進程的通信模式來定義這些術(shù)語。
一個作業(yè)請求或服務(wù)請求是由執(zhí)行客戶進程的某一客戶機發(fā)起的。在批編程模式中,客戶進程在發(fā)出作業(yè)請求后退出。再有,在批編程模式下,在作業(yè)和客戶進程之間通常沒有進行工作的通信信道。在實時編程模式中,客戶進程能與持久性服務(wù)提供器交互作用。在考慮服務(wù)請求調(diào)度器設(shè)計時,實時交互作用特別重要。特別是,實時交互作用有可能使服務(wù)成為全狀態(tài)的,即服務(wù)能保持與給定客戶機的交互作用有關(guān)的數(shù)據(jù)。處置狀態(tài)的能力近來已加到萬維網(wǎng)(Web)服務(wù)技術(shù)中,而且它是在OGSA中的主要設(shè)計點。
為了討論全狀態(tài)模式的優(yōu)點,考慮它帶給編程模式的好處。因為有可能在服務(wù)提供器中保持工作狀態(tài),客戶進程有能力使一個服務(wù)請求使用對先前請求的結(jié)果的引用作為輸入。我們將把這一特性稱作“服務(wù)器一側(cè)高速緩存”,我們將在介紹TAGSS編程接口時討論TAGSS體系結(jié)構(gòu)如何實現(xiàn)這一功能。
為了介紹TAGSS編程模式,參考TAGSS Java編程接口是有幫助的。存在以本機語言(如C)的聯(lián)編,但對于這一討論使用Java API是有好處的,這是由于服務(wù)和Java對象有很強的相似性。事實上,有可能利用自動工具把Java對象定義映射到WSDL服務(wù)描述。在這一節(jié)我們公開基于服務(wù)的定義所采用的框架。
關(guān)于容器服務(wù),TAGSS體系結(jié)構(gòu)的目的之一是提供一個簡單的實時編程模式。在Java中,對象是在稱作Java虛擬機(JVM)的運行時環(huán)境內(nèi)執(zhí)行的,在一個服務(wù)類似物中,服務(wù)是在容器內(nèi)被執(zhí)行的。TAGSS體系結(jié)構(gòu)遵循這一類似,定義一個容器服務(wù)。容器服務(wù)提供與對象創(chuàng)建和對象方法調(diào)用關(guān)聯(lián)的服務(wù)。這些概念與服務(wù)事例化和服務(wù)請求處理相關(guān)聯(lián)。
本發(fā)明提供容器服務(wù)“工廠”。定義一個服務(wù)的主要方面之一是它被創(chuàng)建和被破壞的方式。在OGSA中,根據(jù)在工廠接口中實現(xiàn)的規(guī)格創(chuàng)建服務(wù)實例,在提出用于網(wǎng)格的編程模式時,其主要問題是如何運用這一接口。為了由一個客戶進程發(fā)送一個服務(wù)請求,它必須與一個服務(wù)提供器實例綁定在一起。因為服務(wù)創(chuàng)建任務(wù)需要遵循更新的資源利用測量,TAGSS體系結(jié)構(gòu)定義一個資源監(jiān)視服務(wù),它在創(chuàng)建容器服務(wù)時起主要作用。這個資源監(jiān)視服務(wù)被稱作調(diào)度器服務(wù)。調(diào)度器服務(wù)恒定地監(jiān)視節(jié)點池中的資源利用情況,而且它控制那個節(jié)點池中容器服務(wù)的創(chuàng)建。
調(diào)度器服務(wù)不直接創(chuàng)建容器服務(wù)。在TAGSS體系結(jié)構(gòu)中,調(diào)度服務(wù)是由下述圖2所示進程/系統(tǒng)實現(xiàn)的。作為中央進程的TAGSS調(diào)度器200收集節(jié)點池210(或最小調(diào)度域)中的資源利用情況測量結(jié)果,并在這個最小調(diào)度域中處理對容器服務(wù)的所有請求。對于一個給定的最小調(diào)度域,只有一個TAGSS調(diào)度器實例200。
TAGSS代理205進行周期性的資源利用情況測量并把這些測量結(jié)果報告給它的指定最小調(diào)度域的TAGSS調(diào)度器200。TAGSS代理205還負責實現(xiàn)容器服務(wù)的工廠接口。容器服務(wù)可以是專用于給定客戶機的,或者它們可以根據(jù)服務(wù)政策的質(zhì)量由若干客戶機共享。在下文的場景中討論這兩種可能性。
當綁定于排他的容器服務(wù)時,圖2顯示消息流(1-6),說明如何響應一個客戶機請求按需要創(chuàng)建排他的容器服務(wù)。如圖2中所示,客戶進程215首先向TAGSS調(diào)度器200發(fā)送一個請求,以獲得一個容器(1)。然后,TAGSS調(diào)度器200向TAGSS代理205發(fā)送一個指令(2)以創(chuàng)建一個容器。TAGSS代理205以產(chǎn)出(3)一個新容器220作為響應。然后TAGSS代理205向TAGSS調(diào)度器200返回容器引用指針(4)。然后,TAGSS調(diào)度器200向客戶進程215返回容器引用指針(5)。然后客戶進程215綁定(6)于新容器220??梢灾赋?,客戶進程215只與TAGSS調(diào)度器220和容器服務(wù)實例220直接通信,而不與TAGSS代理205直接通信。TAGSS代理205的存在對于客戶進程215是透明的,如同是調(diào)度器服務(wù)的一個集成的部分。
關(guān)于綁定于共享的容器服務(wù),如前所述,客戶進程共享容器也是可能的。這一做法的好處在于它減小了每個網(wǎng)格主機210中創(chuàng)建的容器進程的個數(shù)。有可能使用具有不同運行時執(zhí)行優(yōu)先級的共享容器提供不同級別的服務(wù)質(zhì)量。于是,客戶機到指定容器的映射將按管理策略或服務(wù)級別協(xié)定(SLA)來完成。然而,共享容器的布置要求一個復雜的安全性基礎(chǔ)設(shè)施。本發(fā)明能使用一個類似于Java Servlets(服務(wù)小程序)環(huán)境的一個框架來提供共享容器所需的適當?shù)陌踩浴?br> 下面的編程例子說明一個客戶進程215與一容器服務(wù)220的綁定。TAGSS API的這一解釋不需要區(qū)分共享的和非共享的容器,因為如果給出這一公開則本領(lǐng)域普通技術(shù)人員將會理解這些差別。下列代碼段說明一個客戶機如何綁定于單個容器服務(wù)(6)。如圖3中所示,調(diào)度器服務(wù)200創(chuàng)建網(wǎng)絡(luò)對象(對象1-對象8)。當一個網(wǎng)格對象(對象1-對象8)被創(chuàng)建時,客戶進程215被綁定于給定的調(diào)度器服務(wù)200。當構(gòu)建網(wǎng)格對象(對象1-對象8)時,TAGSS調(diào)度器200的網(wǎng)絡(luò)地址和端口號被作為構(gòu)造器變元而傳送。一但網(wǎng)格對象(對象1-對象8)被創(chuàng)建,客戶進程215能通過執(zhí)行圖2中的Grid.get Container()方法(1)用該網(wǎng)格對象綁定于若干容器服務(wù)300-301。
GridmyGrid=new Grid(“tagss_scheduler_hostname”,tagss_scheduler_port);GridContainer myContainer=myGridContainer.getContainerO;代碼段1連接到一個網(wǎng)格提供器關(guān)于創(chuàng)建對象(對象1-對象8),一旦客戶進程215被綁定于容器服務(wù)300-301,便能創(chuàng)建其他服務(wù)。在Java API中,這些服務(wù)由Java對象代表。新對象的創(chuàng)建是由調(diào)用GridContainer.createObject方法()完成的。這一方法需要創(chuàng)建完全合格的對象名以及構(gòu)造器參數(shù)。如圖3中所示,網(wǎng)格對象陣列(8)指令指導TAGSS調(diào)度器200去創(chuàng)建八個對象。在容器300和301每個中創(chuàng)建三個對象(對象1-對象3;對象4-對象6),而在容器302中創(chuàng)建兩個對象。構(gòu)造器參數(shù)是使用Java ArrayList直接從編程環(huán)境中取出的。在內(nèi)部,TAGSS API將使用JAVA反射類,以使傳送到ArrayList中的對象序列匹配于給定方法的適當構(gòu)造器。
<pre listing-type="program-listing">  //construct a GridObject of type myObjectClass.  //The constructor has the signature(Integer,Double,String);  Integer arg1=new Integer(123);  Double arg2=new Double(1.23);  String arg3=“hello”  ArrayList args=new ArrayList();&lt;!-- SIPO &lt;DP n="9"&gt; --&gt;&lt;dp n="d9"/&gt;  args.add(arg1);  args.add(arg2);  args.add(arg3);  GridObject myObject=  myContainer.createObject(“myObjectClass”,args);</pre>代碼段2創(chuàng)建一個網(wǎng)格對象得到的網(wǎng)格對象(GridObject)能被轉(zhuǎn)換成任何用戶定義的類類型。
就調(diào)用網(wǎng)格對象中的一方法來說,執(zhí)行網(wǎng)格對象中的方法所需要的步驟與對象創(chuàng)建步驟相似。方法名稱作為字符串被傳送,而變元使用ArrayList傳送。
<pre listing-type="program-listing">  //assume that myObject was built as in Code Segment 2.  //Prepare to invoke a method with the signature(int,real,String);  Integer arg1=new Integer(123);  Double arg2=new Double(1.23);  String arg3=“hello”  ArrayList args=new ArrayList();  args.add(arg1);  args.add(arg2);  args.add(arg3);  MyReturnObjectClass myResult=(myReturnObjectClass)  myObject.invoke(“myMethod”,args);</pre>代碼段3調(diào)用一個網(wǎng)格對象上的方法再次使用Java反射使方法簽名匹配于適當?shù)姆椒?。該方法調(diào)用的結(jié)果作為一個新的網(wǎng)格對象返回。返回值可以被轉(zhuǎn)換成該方法調(diào)用的預期類型。當前,還不能為返回結(jié)果使用參數(shù)變量。
關(guān)于服務(wù)器一側(cè)高速緩存,TAGSS API提供一個GridObject.invoke()方法的變體,它實現(xiàn)先前討論過的服務(wù)器一側(cè)高速緩存特性。GridObject.invokeKeep()只返回一個到方法調(diào)用結(jié)果的引用指針,而結(jié)果本身被保持在該方法被調(diào)用的容器中。該結(jié)果可在以后用GridObject.getValue()方法檢索。下列例子顯示一個應用怎樣將若干個調(diào)用拼接到GridObject.invokeKeep()方法,以最大限度地減少不得不在客戶機和服務(wù)提供器之間傳送的數(shù)據(jù)量。在下面的例子中,一個圖像增強應用把由三個過濾器組成的序列應用于一個圖像并且只提取其最終結(jié)果。沒有任何中間結(jié)果回送到客戶進程,節(jié)省了中間結(jié)果的整個來回旅程。這一技術(shù)對于管理大宗數(shù)據(jù)的應用(如圖像處理)是重要的。
<pre listing-type="program-listing">  //construct a GridObject of type myObjectClass.  //The constructor has the signature(Integer,Double,String);  Integer arg1=new Integer(123);  Double arg2=new Double(1.23);  String arg3=“hello”  ArrayList args=new ArrayList();  args.add(arg1);  args.add(arg2);  args.add(arg3);  GridObject myObject=  myContainer.createObject(“myObjectClass”,args);</pre>代碼段4使用網(wǎng)格對象中的持久狀態(tài)再次說明,返回值能被轉(zhuǎn)換成任何用戶定義的類類型。
關(guān)于更高級的結(jié)構(gòu),上文描述的基本原語提供了很靈活的接口,以管理網(wǎng)格環(huán)境中的各單個對象。然而,大多數(shù)網(wǎng)格應用為執(zhí)行并行化任務(wù)而要求更高級的結(jié)構(gòu)。TAGSS編程接口提供一組更高級原語用于并行操作。在一個實施示例中,本發(fā)明提供三個更高級操作消息多路傳播,障礙強化方法調(diào)用和分散/集合操作。這些功能是由TAGSS中的管理下文所述對象集合的附加原語提供的。
一個網(wǎng)格容器陣列(GridContainerArray)307代表容器300-302的集合。容器陣列實現(xiàn)容器的同樣功能組,而在一個容器陣列中被調(diào)用的方法應用于作為該容器陣列一部分的每個容器。容器陣列工廠接口也由服務(wù)調(diào)度器實現(xiàn),它由網(wǎng)格對象(對象1-對象8)代表。構(gòu)造容器陣列的方法是Grid.getContainerArray()。這一方法取一個整數(shù)作為變元,代表所希望的容器個數(shù)。在資源短缺時,返回的實際容器數(shù)小于所希望的個數(shù)。通過調(diào)用GridContainerArray.getNumberContainers()能得到返回的實際容器數(shù)。如果傳送值0(零)作為所希望的容器個數(shù)變元,則網(wǎng)格調(diào)度器將根據(jù)資源利用狀態(tài)并根據(jù)該客戶機的憑證返回全部可用容器。下例顯示容器陣列構(gòu)建器的語法GridContainerArray myContainerArray=Grid.getContainerArray(0);int numberOfContainers=myContainerArray.getNumberContainers代碼段5創(chuàng)建一個網(wǎng)格容器陣列如前所述,容器陣列307實現(xiàn)與單個容器類似的一組功能。如同一個容器是一個創(chuàng)建網(wǎng)格對象(對象1-對象8)的工廠,網(wǎng)格容器陣列307是類型為網(wǎng)格對象陣列306的對象的工廠。創(chuàng)建網(wǎng)格對象陣列(GridObjectArray)306的方法是GridContainerArray.createObject()。這一方法以要創(chuàng)建的對象類型名(類名)以及一個數(shù)據(jù)結(jié)構(gòu)作為輸入變元,該數(shù)據(jù)結(jié)構(gòu)含有要被調(diào)用的每個構(gòu)造器調(diào)用所用變元。該變元列表應有相同的簽名,即在變元序列中以相同值索引的每個對象應該有相同的類類型。為了有助于構(gòu)造變元列表以創(chuàng)建對象陣列,TAGSS接口使用一個輔助數(shù)據(jù)結(jié)構(gòu),稱作網(wǎng)格數(shù)據(jù)集(GridDataSet)。網(wǎng)格數(shù)據(jù)集能夠可視化為一個矩陣,它的每行是要應用于一個對象陣列中的一個構(gòu)造器或方法調(diào)用的變元列表。所以,網(wǎng)格數(shù)據(jù)集的每列應含有相同數(shù)據(jù)類型的對象。例如,下列指令說明如何為調(diào)用簽名整數(shù)、雙精度數(shù)和字符串的構(gòu)造器而構(gòu)建網(wǎng)格數(shù)據(jù)集<pre listing-type="program-listing">  //assume that the input values are in intArray,doubleArray,and StringArray  GridDataSet myGridDataSet=new GridDataSet();  ArrayList singleRow=new ArrayList();  for(i=0;i<inputSize;i++)&lt;!-- SIPO &lt;DP n="12"&gt; --&gt;&lt;dp n="d12"/&gt;  {  singleRow.add(jntArray[i]);  singleRow.add(doubleArray[i]);  singleRow.add(StringArray[i]);  myGridDataSet.addRow(singleRow);  singleRow.clear()  {</pre>代碼段6創(chuàng)建網(wǎng)絡(luò)數(shù)據(jù)集在網(wǎng)格數(shù)據(jù)集中的行數(shù)不需要與容器個數(shù)相同,指出這一點是重要的。本發(fā)明只是在容器的子集中構(gòu)建對象,并通過在一個容器中創(chuàng)建不只一個對象事例來構(gòu)建多于容器個數(shù)的對象,如圖3中所示。更具體地說,圖3顯示一個客戶機,它試圖創(chuàng)建一個具有八個對象的網(wǎng)格對象陣列,這里只有三個容器可用。該客戶機通過在可用容器內(nèi)創(chuàng)建多個對象,仍然成功地創(chuàng)建了一個具有八個對象的網(wǎng)格對象陣列306。
當在對象陣列306中執(zhí)行一個方法時,對象陣列306有與容器陣列307相似的語義。指向一個對象陣列306的方法調(diào)用在對象陣列306的每個對象實例中造成方法調(diào)用。這一多重方法調(diào)用的結(jié)果被返回到網(wǎng)格對象陣列,這里第i個元素是使用網(wǎng)格數(shù)據(jù)集的第i行的一個方法調(diào)用的結(jié)果。下列代碼段說明在一個網(wǎng)格對象陣列上的一個方法調(diào)用<pre listing-type="program-listing">  //create a Grid Object Array  GridObjectArray myGridObjectArray=GridContainerArray.createObject(yGridDataSet);  //assume that we loaded the input data in inputSet  GridDataSet inputSet=loadDataSet();  //invoke a method on a Grid array  GridObject[]resultArray=  myGridObjectArray.invoke(“methodName”,inputSet,invocation_mode);</pre>代碼段7在網(wǎng)格對象陣列上調(diào)用一個方法下面描述在網(wǎng)格對象陣列306中方法調(diào)用的三種方式,使用變元TAGSSInvocationMode指定這三種方式第一種方式是TAGSS_INVOKE_MULTICAST。這一調(diào)用方式用于單個參數(shù)列表,不像下述其他兩種方式那樣使用網(wǎng)格數(shù)據(jù)集。在這一調(diào)用方式中,在網(wǎng)格對象陣列306的所有對象中,以在單個參數(shù)列表中包含的完全相同的參數(shù)集合來調(diào)用一個方法。這一調(diào)用方式用于向各對象發(fā)送同步消息。
另一種方式是TAGSS_INVOKE_EACH。這一調(diào)用方式指定應把網(wǎng)格數(shù)據(jù)集中的每一行應用于陣列中的相應對象。就是說,行0應用于對象0,行1應用于對象1,等等。這一方式要求網(wǎng)格數(shù)據(jù)集中指定的行數(shù)等于或小于陣列中的對象數(shù)。這一方法調(diào)用方式用于障礙強制(barrier enforced)方法調(diào)用。
再另一種調(diào)用方式是TAGSS_INVOKE_ANY。這一調(diào)用方式表明在網(wǎng)格數(shù)據(jù)集的各行與網(wǎng)格對象陣列306中的對象之間沒有指定的映射要求。這一方式為底層調(diào)度基礎(chǔ)設(shè)施提供了大的靈活性。例如,有可能告訴具有10個對象的對象陣列去調(diào)用具有1000行的網(wǎng)格數(shù)據(jù)集上的一個方法。如下所述,哪些對象將在哪些行上工作這種映射是由TAGSS中的底層調(diào)度基礎(chǔ)設(shè)施在運行時完成的。這一調(diào)用方法用于分散/聚集編程模式中。上文描述的這三種調(diào)用方式實現(xiàn)了TAGSS中實現(xiàn)的三個基本的并行編程模式消息多播、障礙強制方法調(diào)用以及分散/聚集。下文中將更詳細討論這三種編程模式。
消息多播模式是簡單地向一個對象集合發(fā)送單個消息的一種編程模式。TAGSS API以提供一個方法調(diào)用函數(shù)來支持這一模式,該函數(shù)取單一變元列表并把它應用于網(wǎng)格對象陣列306中的所有對象GridObject[]result=myObjectArray.invoke(“methodName”,argList,TAGSS_INVOKE_MULTICAST);代碼段8使用消息多播編程模式障礙強制并行方法調(diào)用是能用于實現(xiàn)若干并行編程方法的一種編程模式,這些方法需要多個對象工作前后緊接的數(shù)據(jù)。在對象400-403之間的前后緊接的操作示于圖4。在這一調(diào)用中,所有對象在下一方法能被調(diào)用之前得要完成某一方法,就是說,存在一個隱含的障礙,它同步每個方法的執(zhí)行。例如,下面一段代碼實現(xiàn)一個流水線,它把先前計算的結(jié)果以移位(shiftcarry)方式重定向到陣列中的每個對象,使用障礙同步保證每個方法調(diào)用之前那些結(jié)果是完全的<pre listing-type="program-listing">  //barrier synchronization example  //assume the input is already loaded in GridDataSet  //invoke 3 methods using a result pipeline that shifts to the right  GridObject[]result=myGridObjectArray.invoke(“first_stage”,  inputDataSet,TAGSS_INVOKE_EACH);  //shift the result to the right  GridObject temp=result[result.sizeO;//keep the last element to wrap around  for(i=0;i<result,size()-1;i++)   result[i+1]=result[i];  result
=temp;//wrap around  //now call the second stage  GridObject result 2=myGridObjectArray.invoke(“second_stage”,  InputDataSet,TAGSS_INVOKE_EACH);</pre>代碼段9實現(xiàn)移動-結(jié)果-障礙模式例如,對四個對象執(zhí)行上述代碼將會建立圖4中所示通信模式。
當指定TAGSS_INVOKE_ANY調(diào)用方式時,使用分散/聚集模式。在這種情況中,根據(jù)運行時條件,網(wǎng)格數(shù)據(jù)集的那些行被賦予任何網(wǎng)格對象。根據(jù)每個對象完成方法調(diào)用的能力進行行映射。運行時調(diào)度由一個內(nèi)置調(diào)度代理完成,它是為了客戶機應用在運行時創(chuàng)建的,稱作TAGSS客戶機調(diào)度器(或微調(diào)度器)500,如圖5中所示。
微調(diào)度器500是一個小的多線程對象,它是在構(gòu)建網(wǎng)格容器陣列307時被隱含構(gòu)成的。每個網(wǎng)格容器陣列307有它自己的TAGSS客戶機調(diào)度器500的實例。TAGSS微調(diào)度器500在網(wǎng)格對象陣列306中的各對象(對象1-對象8)之間分散各行,然后調(diào)度新行,這些新行是由對象(對象1-對象8)完成的任務(wù)。所以,如圖5中所示,客戶進程215通過一個數(shù)據(jù)集調(diào)用網(wǎng)格對象陣列306(11)。TAGSS調(diào)度器200通過該數(shù)據(jù)集調(diào)用一個指定方法(12)。TAGSS微調(diào)度器500調(diào)用到各對象(對象1-對象8)的數(shù)據(jù)集行,每個對象對這些行之一完成一個指定任務(wù)。一旦由各對象完成了這些任務(wù),TAGSS微調(diào)度器500返回該網(wǎng)格對象(14)。
TAGSS客戶機調(diào)度器對象的放置考慮了TAGSS總體結(jié)構(gòu),并根據(jù)網(wǎng)格拓撲來進行,考慮到TAGSS微調(diào)度器500產(chǎn)生大量網(wǎng)絡(luò)傳輸和I/O處理。運行TAGSS客戶機調(diào)度器500的容器300在消息多播和分散/聚集模式中都是中心坐標點。TAGSS微調(diào)度器500與對象陣列306中的所有對象(對象1-對象8)通信并恒定地傳送用于方法調(diào)用的輸入數(shù)據(jù)以及在一旦完成時聚集輸出數(shù)據(jù)。
這些情況表明客戶進程215是為放置TAGSS微調(diào)度器的一個不好的選擇。這是因為在網(wǎng)格中的通常配置把客戶機進程215放在網(wǎng)絡(luò)的邊緣,經(jīng)由速度低于網(wǎng)絡(luò)中央的網(wǎng)絡(luò)連接。
為了為TAGSS微調(diào)度器500選擇最佳位置,TAGSS體系結(jié)構(gòu)把TAGSS微調(diào)度器500放在將提供最佳性能(與那個網(wǎng)格容器陣列中的其他容器相比)的容器中。容器的選擇是根據(jù)創(chuàng)建容器陣列307時可得到的性能測量結(jié)果(例如處理速度、輸入/輸出的能力和容量等)。按照約定,TAGSS調(diào)度器服務(wù)200按服務(wù)客戶機的下降順序?qū)θ萜髋判?,以編索引?(零)的容器為該網(wǎng)格的最佳性能容器。當創(chuàng)建一個網(wǎng)格容器陣列307時,TAGSS微調(diào)度器500被創(chuàng)建在容器0(零)中。
關(guān)于批調(diào)用,運行時調(diào)度進程支持成批的調(diào)用。就是說,當一個客戶機希望在發(fā)出一個大的并行請求之后退出時,TAGSS體系結(jié)構(gòu)通過實現(xiàn)由GridObject.invokeAsync()方法提供的異步調(diào)用選擇來提供那個功能。這一方法返回一個請求引用指針網(wǎng)格批調(diào)用(GridBatch),它是對網(wǎng)格對象的一個持久性引用指針??蛻暨M程能把這一引用指針保存在持久性存儲器中并在以后檢索該網(wǎng)格對象。客戶進程能使用方法GridBatch.peek()查問是否完成一個網(wǎng)格匹調(diào)用,該方法在完成網(wǎng)格批調(diào)用時返回“真”,在此時能通過調(diào)用GridBatch.getResult()方法檢索結(jié)果。這一處理的示例代碼如下所示<pre listing-type="program-listing">  //carry out three large operations in parallel,and then wait on all complete  GridBatch batch1=gridObjectArray1.invokeAsync(“method1”,dataSet1);  GridBatch batch2=gridObjectArray2.invokeAsync(“method2”,dataSet2);  GridBatch batch3=gridObjectArray3.invokeAsync(“method3”,dataSet3);  //check if batch 1 is complete  Boolean isComplete=batch1.peek();  //wait on batch 1 to be complete  GridObject[]result=batch.waitOnComplete();  //wait on both batches 2 and 3 to complete  GridWaitCondition waitCondition=new GridWaitCondition(batch2);  waitCondition.add(batch3);  waitCondition.waitOnComplete();</pre>代碼段11使用等待條件來同步并行調(diào)用本發(fā)明適用于交互的和離線的客戶進程兩種情況。上述編程范例不限于交互的客戶進程??蛻魴C請求能被離線提交。在這種情況中,執(zhí)行該客戶進程的代碼本身需要作為離線作業(yè)請求被發(fā)送。然后,客戶進程的執(zhí)行將遵循該作業(yè)調(diào)度范例。一旦該客戶進程被調(diào)度和發(fā)起,則建立具有調(diào)度資源的實時對話,然后調(diào)度進程正如前述那樣實時地工作。
TAGSS體系結(jié)構(gòu)還能在分布式環(huán)境中很好地工作。為了有最佳性能,具有相似特性的節(jié)點應分組到由單個服務(wù)調(diào)度器控制的一個極小調(diào)度域。極小調(diào)度域的大小將影響運行TAGSS微調(diào)度器500的節(jié)點的性能。
TAGSS體系結(jié)構(gòu)提供一種簡單的方式跨多個極小調(diào)度域分散任務(wù)。如前所述,任務(wù)調(diào)度是由TAGSS微調(diào)度器500完成的,它是在每個網(wǎng)格容器陣列307中的一個單獨容器中創(chuàng)建的小型多線程對象。為了跨極小調(diào)度域進行調(diào)度,使用多個網(wǎng)格對象陣列構(gòu)建一個組合網(wǎng)格對象陣列306。然后調(diào)度任務(wù)在每個網(wǎng)格對象陣列306中的TAGSS客戶機調(diào)度器當中被分割。
這一強有力的特征對客戶進程是透明的。正如TAGSS微調(diào)度器500對象是由TAGSS基礎(chǔ)設(shè)施隱含構(gòu)建的一樣,根據(jù)上述對象創(chuàng)建和方法調(diào)用的語義,工作負荷在多個對象之間的分割也是隱含發(fā)生的。
為了在多個對象當中分散任務(wù),一個客戶機應用做的全部事情是構(gòu)建一個組合網(wǎng)格對象。這是使用下述方法Grid.add()完成的。這一方法把該網(wǎng)格對象綁定于另一調(diào)度域的TAGSS調(diào)度器200。例如,在下文所示代碼及圖6中,創(chuàng)建了一個綁定于“網(wǎng)關(guān)1”600的網(wǎng)格對象陣列306,然后它又被使用Grid.add()方法綁定于“網(wǎng)關(guān)2”601。第二網(wǎng)關(guān)601連接于網(wǎng)格容器陣列308,它基本上與上文詳細討論的網(wǎng)格容器陣列306相似。網(wǎng)格容器陣列308利用不同的主機211并含有不同的但類似的網(wǎng)格對象陣列307,它由容器303-305內(nèi)的對象9-對象16構(gòu)成。主機211能在地理上與主機210分離。然而,優(yōu)選地,多個主機211位于一個本地化網(wǎng)絡(luò)(例如一個組織)之內(nèi),而多個主機210類似地位于它們自己的本地化網(wǎng)絡(luò)內(nèi)。如前所述,每個網(wǎng)格容器陣列需要它自己的TAGSS微調(diào)度器。所以,網(wǎng)格容器陣列308包括TAGSS微調(diào)度器501。網(wǎng)格容器陣列307和網(wǎng)格容器陣列308構(gòu)成組合網(wǎng)格容器陣列608,它含有在所有網(wǎng)關(guān)處可得到的最大數(shù)量容器。圖6還顯示結(jié)果造成的組合網(wǎng)格對象陣列607,它是由網(wǎng)格對象陣列306和網(wǎng)格對象陣列307構(gòu)成的。組合網(wǎng)格容器陣列608和組合網(wǎng)格對象陣列607跨過多個域(例如210和211),這些域可有基本上不同的計算能力。請注意,在語義學上或在組合網(wǎng)格對象陣列的API中沒有區(qū)別,組合網(wǎng)格對象陣列跨越不只一個極小調(diào)度域這一事實對客戶進程215是透明的。然后,下列代碼例子使用指定0(零)容器的方法Grid.getContainerArray()的方法造成一個請求網(wǎng)絡(luò)對象中所有容器的請求。
<pre listing-type="program-listing">  //connect to the Service Scheduler in 2 different domains  Grid grid1=new Grid(“gateway1”,1234);  Gird1.add(“gateway2”,1234);  //build a large Container Array 307 using containers from 2 different domains  GridContainerArray bigContainerArray=grid1.getContainerArray(0);  //create an Object Array that spans 2 domains  GridObjectArray bigObjectArray=  bigContainerArray.createObject(“objectType”,inputArgs);  //invoke a method on the object array  GridObjectArray bigResult=  bigObjectArray.invoke(“methodName”,methodArgs);</pre>代碼段12使用組合網(wǎng)格容器圖6顯示在一個示例多群集環(huán)境中使用上述代碼構(gòu)建的對象。圖7包括網(wǎng)格門戶700用于提高網(wǎng)關(guān)600、601之間的通信效率。應該指出,上述例子引入一個二層調(diào)度分層結(jié)構(gòu)。利用本發(fā)明可得到多層分層結(jié)構(gòu),它利用中間進程作為到服務(wù)調(diào)度器的代理并構(gòu)造組合網(wǎng)格對象陣列。例如,圖8顯示一個外包組織800,它包括一個網(wǎng)格門戶,多個客戶進程215、216以及多個調(diào)度器200、201,調(diào)度器200、201與其他網(wǎng)格門戶700、702相連,網(wǎng)格門戶700、702訪問多個網(wǎng)格容器陣列307~309。在圖8所示系統(tǒng)中,組合網(wǎng)格容器陣列307-309和組合網(wǎng)格對象陣列607生長為包括外包組織800控制下的所有對象和容器。
網(wǎng)格門戶被配置成從若干個單個極小服務(wù)域收獲容器。再有,因為該網(wǎng)格門戶是對服務(wù)調(diào)度器200、201透明的代理,本發(fā)明能級聯(lián)任何數(shù)量網(wǎng)格門戶,造成深度分層結(jié)構(gòu)。對于如何在一個網(wǎng)格環(huán)境中布置TAGSS體系結(jié)構(gòu),存在若干可能的配置,而上述建議是最簡單的配置之一。為簡化討論,我們考慮用于一個組織的兩個基本角色它可以是服務(wù)提供者或服務(wù)外包者。我們的基本配置表明一個網(wǎng)格門戶被配置成用于調(diào)整全部進入和外出服務(wù)請求流。這使得一個基礎(chǔ)設(shè)置可能審查全部請求。外包組織的網(wǎng)格門戶在指定的網(wǎng)格憑證下運行,它利用這一憑證從服務(wù)提供者組織的網(wǎng)格門戶獲取資源。
在一個實施例中,TAGSS進程是,由系統(tǒng)管理員啟動和配置服務(wù)調(diào)度器200、201和網(wǎng)格門戶700-702。另一個實現(xiàn)是根據(jù)要求代表單個客戶機(用戶或組織)啟動這些進程。例如,在圖8中,一個外包組織能向啟動所請求的網(wǎng)格門戶和服務(wù)調(diào)度器的那些外包組織提交作業(yè)請求(與應用代碼一起)。以這種方式,即使該服務(wù)提供者組織沒有安裝TAGSS應用,該外包組織也能獲取資源。利用這一途徑,代表單個客戶機創(chuàng)建了整個一組新的TAGSS進程。
TAGSS調(diào)度器能使用Globus 2.0工具箱布署在上述網(wǎng)格環(huán)境中。Globus工具箱受到本說明開頭描述的基于作業(yè)的體系結(jié)構(gòu)的強烈影響,而且基本上只支持作業(yè)提交模式。但是,如前文指出的那樣,作業(yè)提交模式能把TAGSS軟作進程作為作業(yè)來啟動。只是這些“作業(yè)”是“壽命很長的”,而且它們又代表若干客戶機在服務(wù)請求級調(diào)度任務(wù)。
換言之,本發(fā)明提供一個用于處理客戶機請求的計算機系統(tǒng)。該系統(tǒng)包括與網(wǎng)格容器陣列相連的網(wǎng)格服務(wù)調(diào)度器。每個網(wǎng)格容器陣列包括駐留在不同主機中的持久性容器(如服務(wù)容器)以及微調(diào)度器。每個容器包括許多對象。在構(gòu)成單個網(wǎng)格容器陣列的那些容器內(nèi)的那些對象構(gòu)成一個網(wǎng)格對象陣列。網(wǎng)格服務(wù)調(diào)度器透明地把一個客戶機請求分割成多個任務(wù)并對每個微調(diào)度器賦予任務(wù)組。每個微調(diào)度器把從網(wǎng)格服務(wù)調(diào)度器接收的任務(wù)組中的各單個任務(wù)賦予它們相應的網(wǎng)格對象陣列內(nèi)的對象。
該系統(tǒng)能包括額外的調(diào)度器分層結(jié)構(gòu)級別,并包括網(wǎng)關(guān),每個網(wǎng)關(guān)連接到不同的網(wǎng)格服務(wù)調(diào)度器。門戶連接到網(wǎng)關(guān),而且門戶沿網(wǎng)關(guān)把客戶機請求傳送到網(wǎng)格服務(wù)調(diào)度器。
每個容器陣列駐留在一個局域網(wǎng)中,從而使一個網(wǎng)格容器陣列內(nèi)的對象之間的通信成為局域通信。網(wǎng)格服務(wù)調(diào)度器以透明的方式分割客戶機請求,使得客戶機不知道對客戶機請求的分割。容器是持久性服務(wù)容器,用于在跨越多個客戶機請求的一個時間段內(nèi)處理多個客戶機的多個客戶機請求。
本發(fā)明還提供一種方法,用于在主機計算機網(wǎng)絡(luò)上處理客戶機請求,該方法包括在上機中創(chuàng)建持久性容器,在容器中創(chuàng)建對象,把容器分組構(gòu)成網(wǎng)格容器陣列,把在單個網(wǎng)格容器陣列內(nèi)的容器內(nèi)的對象分組構(gòu)成網(wǎng)格對象陣列,為每個網(wǎng)格容器陣列創(chuàng)建一個微調(diào)度器,把每個客戶機請求分割成多個任務(wù),以及把任務(wù)組賦予微調(diào)度器,其中微調(diào)度器把各個任務(wù)賦予對象。當微調(diào)度器回送完成后的任務(wù)組時本發(fā)明賦予這些微調(diào)度器其他的任務(wù)組。該方法還能包括通過網(wǎng)關(guān)向多個網(wǎng)格服務(wù)調(diào)度器傳送客戶機請求。
這樣,上文描述的發(fā)明使用網(wǎng)格服務(wù)調(diào)度器把一個客戶機請求分割成許多任務(wù)。該系統(tǒng)通過一個網(wǎng)格對象陣列中的多個對象執(zhí)行所述任務(wù),這些對象在構(gòu)成一個網(wǎng)格容器陣列的那些容器之內(nèi),而該網(wǎng)格容器陣列由一個微調(diào)度器控制。
本發(fā)明提供一個關(guān)注拓撲網(wǎng)格服務(wù)調(diào)度器(TAGSS),它是用于網(wǎng)格的請求級調(diào)度的新的體系結(jié)構(gòu)。這一體系結(jié)構(gòu)是關(guān)注拓撲結(jié)構(gòu)的,因為任務(wù)調(diào)度基礎(chǔ)設(shè)施被設(shè)計成在由不同能力的計算主機和網(wǎng)絡(luò)構(gòu)成的多樣計算環(huán)境中操作。在網(wǎng)格計算中這種多樣的計算環(huán)境是常見的,這與群集計算中通??吹降木画h(huán)境成為對照。因此,在群集計算中使用的調(diào)度技術(shù)不適用于網(wǎng)格計算。TAGSS的另一重要特性在于它基于面向服務(wù)的體系結(jié)構(gòu)。這與傳統(tǒng)的群集調(diào)度成為鮮明對照,因為傳統(tǒng)的群集調(diào)度器是基于面作業(yè)的體系結(jié)構(gòu)。最近引入的開放網(wǎng)格服務(wù)體系結(jié)構(gòu)(OGSA)把基于服務(wù)的體系結(jié)構(gòu)帶入網(wǎng)格計算世界,同時由它帶來與網(wǎng)格中調(diào)度服務(wù)請求的任務(wù)有關(guān)的新挑戰(zhàn)。上述公開的內(nèi)容討論了這些挑戰(zhàn),并把這些挑戰(zhàn)與TAGSS體系結(jié)構(gòu)中的特性關(guān)聯(lián)起來。
盡管已經(jīng)利用優(yōu)選實施例描述了本發(fā)明,但本領(lǐng)域技術(shù)人員將會理解,本發(fā)明能在所附權(quán)利要求的精神和范圍內(nèi)加以修改來實現(xiàn)。
權(quán)利要求
1.一種處理客戶機請求的計算機系統(tǒng),所述系統(tǒng)包括與多個網(wǎng)格容器陣列相連的網(wǎng)格服務(wù)調(diào)度器,其中每個網(wǎng)格容器陣列包含多個持久性容器,每個容器駐留在一個計算機主機中;以及在一個所述容器中的一個微調(diào)度器;其中每個所述容器包括多個對象,其中在構(gòu)成一個網(wǎng)格容器陣列的那些容器內(nèi)的對象構(gòu)成一個網(wǎng)格對象陣列,其中所述網(wǎng)格服務(wù)調(diào)度器把一個客戶機請求分割成多個任務(wù)并把所述任務(wù)組賦予每個微調(diào)度器,而且其中每個所述微調(diào)度器把從所述網(wǎng)格服務(wù)調(diào)度器接收的任務(wù)組中的各個任務(wù)賦予相應網(wǎng)格對象陣列中的那些對象。
2.權(quán)利要求1的系統(tǒng),進一步包括多個網(wǎng)格服務(wù)調(diào)度器和網(wǎng)關(guān),其中每個網(wǎng)關(guān)與不同的網(wǎng)格服務(wù)調(diào)度器相連接。
3.權(quán)利要求2的系統(tǒng),進一步包括與所述網(wǎng)關(guān)相連接的門戶,其中所述門戶沿所述網(wǎng)關(guān)把所述客戶機請求傳送給所述網(wǎng)格服務(wù)調(diào)度器。
4.權(quán)利要求1中的系統(tǒng),其中每個容器陣列駐留在一個局域網(wǎng)中,從而在一個網(wǎng)格容器陣列內(nèi)對象之間的通信構(gòu)成局域通信。
5.權(quán)利要求1中的系統(tǒng),其中所述網(wǎng)格服務(wù)調(diào)度器以透明方式分割所述客戶機請求,從而使客戶機不知道所述客戶機請求的分割。
6.權(quán)利要求1中的系統(tǒng),其中所述容器包含服務(wù)容器并在跨越多個客戶機請求的時間段上處理來自多個客戶機的多個客戶請求。
7.一種處理客戶機請求的計算機系統(tǒng),所述系統(tǒng)包含與多個網(wǎng)格容器陣列相連的網(wǎng)格服務(wù)調(diào)度器,其中每個網(wǎng)格容器陣列包括多個持久性容器,每個容器駐留在一個計算機主機中;以及一個微調(diào)度器,其中,在每個網(wǎng)格容器陣列中,所述微調(diào)度器在拓撲結(jié)構(gòu)上位于所述網(wǎng)格容器陣列中的所有容器中性能最高的那個容器中;其中每個所述容器包括多個對象,其中在構(gòu)成一個網(wǎng)格容器陣列的那些容器內(nèi)的對象構(gòu)成一個網(wǎng)格對象陣列,其中所述網(wǎng)格服務(wù)調(diào)度器把一個客戶機請求分割成多個任務(wù)并把所述任務(wù)組賦予每個微調(diào)度器,而且其中每個所述微調(diào)度器把從所述網(wǎng)格服務(wù)調(diào)度器接收的任務(wù)組中的各個任務(wù)賦予相應網(wǎng)格對象陣列中的那些對象。
8.權(quán)利要求7中的系統(tǒng),進一步包括網(wǎng)關(guān),每個網(wǎng)關(guān)與不同的網(wǎng)格服務(wù)調(diào)度器相連接。
9.權(quán)利要求8中的系統(tǒng),進一步包括與所述網(wǎng)關(guān)相連接的門戶,其中所述門戶沿所述網(wǎng)關(guān)把所述客戶機請求傳送給所述網(wǎng)格服務(wù)調(diào)度器。
10.權(quán)利要求7的系統(tǒng),其中每個容器陣列駐留在一個局域網(wǎng)中,從而在一個網(wǎng)格容器陣列內(nèi)對象之間的通信構(gòu)成局域通信。
11.權(quán)利要求7的系統(tǒng),其中所述網(wǎng)格服務(wù)調(diào)度器以透明方式分割所述客戶機請求,從而使客戶機不知道所述客戶機請求的分割。
12.權(quán)利要求7的系統(tǒng),其中所述容器包含持久性服務(wù)容器并在跨越多個客戶機請求的時間段上處理多個客戶機的多個客戶機請求。
13.一種在主機計算機網(wǎng)絡(luò)上處理客戶機請求的方法,所述方法包括在所述主機中創(chuàng)建持久性容器;在所述容器中創(chuàng)建對象;把所述容器分組構(gòu)成網(wǎng)格容器陣列;把在單個網(wǎng)格容器陣列內(nèi)的容器內(nèi)的對象分組構(gòu)成網(wǎng)格對象陣列;為每個網(wǎng)格容器陣列創(chuàng)建一個微調(diào)度器;把每個所述請求分割成多個任務(wù);以及把所述任務(wù)組賦予所述微調(diào)度器,其中所述微調(diào)度器把各個任務(wù)賦予所述對象。
14.權(quán)利要求13中的方法,進一步包括當所述微調(diào)度器回送完成后的任務(wù)組時賦予所述微調(diào)度器其他的任務(wù)組。
15.權(quán)利要求13的方法,進一步包括通過網(wǎng)關(guān)向多個網(wǎng)格服務(wù)調(diào)度器傳送所述客戶機請求。
16.權(quán)利要求13的方法,其中每個容器陣列駐留在一個局域網(wǎng)中,從而在一個網(wǎng)格容器陣列內(nèi)對象之間的通信構(gòu)成局域通信。
17.權(quán)利要求13的方法,其中所述分割是以透明方式進行的,從而使客戶機不知道對所述客戶機請求的分割。
18.權(quán)利要求13中的方法,其中所述容器包含服務(wù)容器并在跨越多個客戶機請求的時間段上處理來自多個客戶機的多個客戶機請求。
19.一種在主機計算機網(wǎng)絡(luò)上處理客戶機請求的方法,所述方法包括在所述主機中創(chuàng)建持久性容器;在所述容器中創(chuàng)建對象;把所述容器分組構(gòu)成網(wǎng)格容器陣列;把在單個網(wǎng)格容器陣列內(nèi)的容器內(nèi)的對象分組構(gòu)成網(wǎng)格對象陣列;為每個網(wǎng)格容器陣列創(chuàng)建一個微調(diào)度器;在拓撲結(jié)構(gòu)上把所述微調(diào)度器放在所述網(wǎng)格容器陣列中的所有容器中性能最高的那個容器中;把每個所述請求分割成多個任務(wù);以及把所述任務(wù)組賦予所述微調(diào)度器,其中所述微調(diào)度器把各個任務(wù)賦予所述對象。
20.權(quán)利要求19中的方法,進一步包括當所述微調(diào)度器回送完成后的任務(wù)組時賦予所述微調(diào)度器其他的任務(wù)組。
21.權(quán)利要求19中的方法,進一步包括通過網(wǎng)關(guān)向多個網(wǎng)格服務(wù)調(diào)度器傳送所述客戶機請求。
22.權(quán)利要求19中的方法,其中每個容器陣列駐留在一個局域網(wǎng)中,從而在一個網(wǎng)格容器陣列內(nèi)對象之間的通信構(gòu)成局域通信。
23.權(quán)利要求19中的方法,其中所述分割是以透明方式進行的,從而使客戶機不知道對所述客戶機請求的分割。
24.權(quán)利要求19中的方法,其中所述容器包含持久性服務(wù)容器并在跨越多個客戶機請求的時間段上處理來自多個客戶機的多個客戶機請求。
全文摘要
本發(fā)明提供在一種在主機計算機網(wǎng)絡(luò)上處理客戶機請求的系統(tǒng)/方法,它包括在主機中創(chuàng)建持久性容器,在容器中創(chuàng)建對象,把容器分組構(gòu)成網(wǎng)格容器陣列,把單個網(wǎng)格容器陣列內(nèi)的容器內(nèi)的各對象分組構(gòu)成網(wǎng)格對象陣列,為每個網(wǎng)格容器陣列創(chuàng)建一個微調(diào)度器,把每個客戶機請求分割成多個任務(wù),以及把任務(wù)組賦予微處理器,其中微處理器把各個任務(wù)賦予對象。當微處理器回送完成后的任務(wù)組時,本發(fā)明對微調(diào)度器賦予其他的任務(wù)組。該方法還能包括通過網(wǎng)關(guān)向多個網(wǎng)格服務(wù)調(diào)度器傳送客戶機請求。
文檔編號G06F15/16GK1516419SQ20031012156
公開日2004年7月28日 申請日期2003年12月22日 優(yōu)先權(quán)日2002年12月23日
發(fā)明者J·R·H·查林杰, M·諾瓦伊斯, J R H 查林杰, 咭了 申請人:國際商業(yè)機器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
尼木县| 岳池县| 宁夏| 木兰县| 工布江达县| 金门县| 呼玛县| 独山县| 东乌珠穆沁旗| 长汀县| 马鞍山市| 大关县| 苏尼特右旗| 惠安县| 舟山市| 武陟县| 潢川县| 新密市| 孙吴县| 合江县| 固始县| 镇沅| 五指山市| 合阳县| 红安县| 安西县| 汤原县| 汉源县| 石景山区| 陆良县| 平果县| 平利县| 巴马| 华亭县| 江安县| 石台县| 南开区| 德清县| 沙洋县| 深圳市| 伊吾县|