專利名稱:網(wǎng)絡上的動態(tài)分布式計算的方法和設備的制作方法
技術領域:
本發(fā)明涉及分布式計算系統(tǒng),尤其涉及在網(wǎng)絡上進行動態(tài)分布式計算的方法和設備。
背景技術:
在分布式計算網(wǎng)絡中,用戶可利用耦合到網(wǎng)絡的大量計算機的處理能力??赏ㄟ^分割網(wǎng)絡上不同計算機中的處理,可快速地并行處理具有許多不同的獨立計算的任務。此外,通過定位網(wǎng)絡上最適用于處理數(shù)據(jù)的計算機,可更快地計算專門任務。例如,在客戶系統(tǒng)上完成需大量浮點計算的任務,可在耦合到網(wǎng)絡的服務器系統(tǒng)上更快地執(zhí)行,后者具有適用于這些特定計算的專用浮點硬件。
不幸的是,不容易在典型的異構計算環(huán)境中實現(xiàn)用于分布式計算的常規(guī)技術。通常,網(wǎng)絡上的每個計算機是異構的,它包含不同的處理器和操作系統(tǒng)組合,而且需要執(zhí)行不同的目標模塊。在客戶一側,不同的目標模塊需要用戶對每個不同的平臺編譯不同版本的任務,并把此模塊裝載到相應平臺上,從而增加對每個客戶的存儲要求,還需要多次進出和編譯相同的任務。此外,常規(guī)的技術需要在執(zhí)行代碼前很早就要在計算機上分配代碼。在常規(guī)系統(tǒng)中,進行分布式計算所需的大量準備妨礙了許多計算采用該技術。
基于腳本編排(scripting)語言的分布式計算系統(tǒng)是對某些常規(guī)分布式計算系統(tǒng)的改進。不幸的是,基于腳本編排的系統(tǒng)消除了對重新編譯代碼的需要,但它仍舊不是非常有效?;谀_本編排的分布式系統(tǒng)可在多個平臺上執(zhí)行相同的指令,因為該語言是由位于每個系統(tǒng)上的解釋器來解釋的。結果,大多數(shù)腳本編排語言較慢,因為它們必須把高級腳本編排指令實時地翻譯成低級當?shù)?native)指令。此外,腳本編排語言難于優(yōu)化,且可能會浪費存儲空間,因為通常不對它們進行壓縮。
基于在常規(guī)系統(tǒng)中所發(fā)現(xiàn)的以上限制,想要改進分布式計算系統(tǒng)。
發(fā)明內容
在有關客戶計算機的本發(fā)明的一個方面,提供了用于動態(tài)分布式計算的方法和設備。最初,客戶從網(wǎng)絡中選擇一服務器來處理該任務。此選擇可基于服務器的可用性或服務器的專門處理能力。接著,客戶承接程序(stub)把參數(shù)和數(shù)據(jù)引入(marshal)到一任務請求中??蛻舭汛巳蝿照埱蟀l(fā)送到服務器,服務器啟用通用計算方法。服務器自動地確定在服務器上是否可獲得有關任務的類型并在必要時從網(wǎng)絡下載這些任務類型。使用任務類型中的信息來提取存儲在特定任務請求中的參數(shù)和數(shù)據(jù)。使用通用計算方法在選中的服務器上執(zhí)行該任務請求。在服務器處理了該任務請求后,客戶接收從選中服務器返回的結果或經(jīng)計算的任務。
在有關服務器計算機的本發(fā)明的另一個方面,提供了動態(tài)分布式計算的方法和設備。最初,服務器將自動地確定服務器上可獲得哪些任務類型,并將在必要時從網(wǎng)絡下載任務類型。這些任務類型有助于服務器從一任務請求中引出(unmarshal)參數(shù)和數(shù)據(jù)并產(chǎn)生一本地任務。接著,服務器啟用能處理所有類型的計算任務或子類型的計算任務的通用計算方法。使用通用計算方法在選中的服務器上執(zhí)行此任務請求。如果隨后的任務要使用結果,則服務器把來自經(jīng)計算的任務的結果存入本地高速緩沖存儲器中。一旦完成該任務,服務器就把結果或經(jīng)計算的任務返還客戶。
附圖概述包含在本說明書中并構成其一部分的附圖示出本發(fā)明的一個實施例,這些附圖與描述一起用來說明本發(fā)明的優(yōu)點和原理。
在圖中
圖1示出適用于符合本發(fā)明的方法和系統(tǒng)的網(wǎng)絡;圖2是適用于符合本發(fā)明的方法和系統(tǒng)的計算機系統(tǒng)的方框圖;圖3是適用于使用符合本發(fā)明的方法和系統(tǒng)的客戶-服務器網(wǎng)絡環(huán)境的方框圖;圖4是客戶依據(jù)符合本發(fā)明的方法和系統(tǒng)所進行的步驟的流程圖;以及圖5是服務器依據(jù)符合本發(fā)明的方法和系統(tǒng)所進行的步驟的流程圖。
介紹現(xiàn)在將詳細地參考附圖所示的本發(fā)明實現(xiàn)??赡軙r,在附圖和以下描述中使用相同的標號來指示相同或相似的部分。
符合本發(fā)明的系統(tǒng)解決了已有技術的缺點并提供了在服務器計算機的網(wǎng)絡上使用的動態(tài)分布式計算系統(tǒng)。這種動態(tài)分布式計算系統(tǒng)尤其有用于異構計算機網(wǎng)絡,該網(wǎng)絡具有包含不同處理器、不同操作系統(tǒng)及其組合的計算機。這種系統(tǒng)使得客戶應用程序可選擇一處于實時運行的服務器計算機來執(zhí)行特定任務。在符合本發(fā)明的方法和系統(tǒng)中,該任務是一具有特定類型或類定義的對象。一般,服務器可能推遲知道實際類定義,直到在服務器上接收到有關此對象任務的參數(shù)和數(shù)據(jù)。結果,如果在服務器上不能獲得此特定類型,則服務器下載此特定類型。例如,如果未知類的對象實例傳遞到該服務器,該服務器下載該未知類。然后,服務器使用該類來處理對象。這種推遲把類定義分配給對象增強了在服務器計算機的網(wǎng)絡上處理復雜任務的靈活性。此外,本設計通過利用現(xiàn)有的遠程過程調用子系統(tǒng)(諸如加里福尼亞州Mountain View的Sun Microsystems Inc.所開發(fā)的遠程方法啟用(RMI)子系統(tǒng))中的特征以最小的額外開銷來促進靈活性。對于有關遠程方法啟用(RMI)的進一步信息,見由Ann M.Wolrath、James Waldo和Roger Riggs于1996年4月23日提交的名為“有助于裝載“承接程序”信息以使得在一地址空間內操作的程序可啟用另一地址空間內的遠程方法或過程的處理的系統(tǒng)和方法”的08/636,706號未決美國專利申請,該申請已轉讓給本發(fā)明的受讓人并在這里引用作為參考。此外,在FTP//ftp.javasoft.com/docs/jdk1.2/rmi-spec-jdk 1.2ps的JavaSoft WebPage(網(wǎng)頁)上更詳細地描述了RMI,也在這里引用作為參考。
與常規(guī)的系統(tǒng)不同的是,符合本發(fā)明的動態(tài)分布式系統(tǒng)中的任務可被寫一次,且該任務可在網(wǎng)絡中的任何服務器計算機上執(zhí)行。此能力在異構網(wǎng)絡中尤其有優(yōu)勢,因為不必在執(zhí)行該任務前使該任務進出每一個平臺。而是,把依據(jù)本發(fā)明設計的通用計算任務裝載在每個系統(tǒng)上。此通用計算任務能執(zhí)行客戶在運行時所指定的廣泛類型的任務。例如,可開發(fā)一種所謂的“Compute(計算)”類型以及一種以面向對象的語言(諸如Java)來接受此“計算”類型的通用計算任務。在許多文章中描述了Java,包括1996年由James Gosling、Bill Joy和Guy Steele、Addison-Wesley寫的名為“Java語言說明書”的文章,這里通過引用作為參考。客戶產(chǎn)生具有“計算”類型的子類型的任務,并把相應于此任務的對象傳遞給服務器上的通用計算任務。遠程過程調用機構把此對象下載到服務器和執(zhí)行此任務的通用計算任務。
在Java中,客戶所發(fā)送的任務實際上是包括一系列字節(jié)碼的對象。只要服務器實現(xiàn)了Java Virtual Machine(虛擬機)(JVM),就可立即執(zhí)行這些字節(jié)碼。JVM可直接以硬件來實現(xiàn),或者它可有效地以在當?shù)夭僮飨到y(tǒng)頂部運行的軟件層來模擬。把Java語言設計成在具有Java虛擬機(JVM)說明書所指定的特性的計算系統(tǒng)上運行。在Addison Wesley的名為Java虛擬機說明書的文章中更詳細地描述了JVM說明書,這里引用作為參考。此統(tǒng)一的JVM環(huán)境使得即使計算機系統(tǒng)為異構且具有不同處理器、不同操作系統(tǒng)及其組合時也可同構地執(zhí)行任務。依據(jù)本發(fā)明的設計,把強大的遠程過程調用子系統(tǒng)與服務器上的通用計算任務相組合產(chǎn)生了強大的動態(tài)分布式計算環(huán)境。
使用字節(jié)碼的計算機服務器可處理任務的速度比使用基于腳本編排語言的常規(guī)文本或基于語言的其它字符的系統(tǒng)快得多。每個字節(jié)碼是緊湊的(8位)且具有數(shù)字格式。結果,服務器計算機在運行時不必花費計算機周期對字符和自變量進行分析(parse)。此外,可在把字節(jié)碼傳輸?shù)椒掌髑霸诳蛻籼巸?yōu)化這些字節(jié)碼。服務器可任選地在運行時使用諸如Just-in-Time(及時)(JIT)編譯器把字節(jié)碼轉換成當?shù)刂噶钜灾苯釉谟布蠄?zhí)行。對于有關JIT編譯器的更多信息,見Java虛擬機說明書。
依據(jù)本發(fā)明設計的系統(tǒng)假設每個客戶能通過諸如TCP/IP等公共網(wǎng)絡協(xié)議與每個服務器進行通信。此外,假設在客戶和服務器上存在遠程過程調用(RPC)子系統(tǒng),該子系統(tǒng)能接收來自客戶的遠程請求并在服務器上執(zhí)行這些請求。此RPC系統(tǒng)還在運行時自動地下載完成該任務所需的代碼和有關信息。Sun MicrosystemsInc.所開發(fā)的RMI是提供這些特征的適當?shù)腞PC子系統(tǒng)。然而,本領域內的技術人員將理解,代替RMI,可使用諸如Microsoft Inc.的DCOM/COM等其它RPC子系統(tǒng)。
計算機網(wǎng)絡圖1示出可實現(xiàn)本發(fā)明的一個實施例的網(wǎng)絡100。網(wǎng)絡100的本質結構中包括局域網(wǎng)(LAN)101、主干或廣域網(wǎng)(WAN)112及局域網(wǎng)(LAN)116。LAN 101包括一系列工作站和服務器計算機102、104、106和108。LAN 116包括一系列工作站和服務器計算機118、120、122和124。這些計算機系統(tǒng)102-108及118-124耦合在一起,以共享信息、發(fā)送數(shù)據(jù)及共享計算能力。使用網(wǎng)絡互連設備110把LAN 101耦合到較大的整體網(wǎng)絡。網(wǎng)絡互連器件的特定類型可以是路由器、交換器(switch)或與特定網(wǎng)絡結構有關的網(wǎng)絡集線器(hub)。一般,網(wǎng)絡互連器件110包括路由器、交換器、網(wǎng)絡集線器或能把LAN 101、WAN 112和LAN 116與用戶終端連接成綜合網(wǎng)絡的任何其它網(wǎng)絡互連器件。網(wǎng)絡互連器件114也可包括路由器、交換器、網(wǎng)絡集線器或能把LAN 116上的計算機與用戶終端耦合成綜合網(wǎng)絡的任何其它網(wǎng)絡互連器件。一般,依據(jù)本發(fā)明設計的動態(tài)分布式計算系統(tǒng)通常位于耦合到網(wǎng)絡100的每個計算機系統(tǒng)上。相應地,每個計算機可依據(jù)所構成的特定請求和所提供的服務而作為客戶或服務器進行操作。通常,客戶請求在服務器計算機上計算一任務,服務器計算機將處理該任務。
計算機系統(tǒng)現(xiàn)在參考圖2,示出適用于實行符合本發(fā)明的方法和系統(tǒng)的計算機系統(tǒng)的系統(tǒng)體系結構。示例的計算機系統(tǒng)只是為了描述的目的。雖然此描述可參考在描述特定計算機系統(tǒng)(諸如IBM PS/2個人計算機)時所常用的術語,但此描述和概念同樣適用于其它計算機系統(tǒng),諸如網(wǎng)絡計算機、工作站、甚至是體系結構與圖1不相似的大型計算機。
此外,雖然本發(fā)明同樣可應用于具有類似要求的其它計算機系統(tǒng),但參照實現(xiàn)Java編程語言和Java虛擬機說明的計算機系統(tǒng)來描述本實現(xiàn)。具體來說,以面向對象和非面向對象的編程系統(tǒng)來實現(xiàn)本發(fā)明。
計算機系統(tǒng)200包括中央處理單元(CPU)105(它可以常規(guī)的微處理器來實現(xiàn))、用于暫時存儲信息的隨機存取存儲器(RAM)210和用于永久性存儲信息的只讀存儲器(ROM)215。設有用于控制RAM 210的存儲器控制器220。
總線230使計算機系統(tǒng)200的部件互連。設有用于控制總線230的總線控制器225。使用中斷控制器235來接收和處理來自系統(tǒng)部件的各種中斷信號。
可通過軟盤242、CD ROM 247或硬盤驅動器252來提供海量存儲。可經(jīng)由諸如軟盤242和CD ROM 247等可移去的媒體與計算機系統(tǒng)200交換數(shù)據(jù)和軟件。軟盤242可插入軟盤驅動器241,繼而軟盤驅動器241由控制器240連到總線230。類似地,CD ROM 247可插入CD ROM驅動器246,繼而CD ROM驅動器246由控制器245連到總線230。硬盤252是由控制器250連到總線230的固定磁盤驅動器251的一部分。
可由許多器件向計算機系統(tǒng)200提供用戶輸入。例如,鍵盤256和鼠標器257通過控制器255連到總線230。對本領域內的技術人員很明顯的是,需要時,可把諸如筆和/或輸入板等其它輸入器件連到總線230和適當?shù)目刂破骷败浖TO有用于對RAM 210進行直接存儲器訪問的DMA控制器260。由控制視頻顯示器270的視頻控制器265來產(chǎn)生視覺顯示。
計算機系統(tǒng)200還包括通信適配器290,該適配器使得該系統(tǒng)可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)(如總線291和網(wǎng)絡295示意所示)互連。
計算機系統(tǒng)200的操作通常由操作系統(tǒng)軟件來控制和協(xié)調。操作系統(tǒng)控制系統(tǒng)資源的分配并進行諸如處理調度、存儲器管理、網(wǎng)絡連接和服務等任務。
動態(tài)分布式計算動態(tài)分布式計算通常是一個客戶服務器過程。對所進行的每個調用建立客戶-服務器關系,通常其作用是可以改變的。通常,把客戶定義為作出調用以請求位于服務器處或由服務器所控制的資源的過程。在此情況下,也可把執(zhí)行請求過程的計算機或處理器叫做客戶。然而,這些作用可依據(jù)信息的上下文和所發(fā)生的特定處理而改變。
圖3是用來實現(xiàn)本發(fā)明的一個實施例的客戶-服務器網(wǎng)絡環(huán)境的方框圖。該圖包括強調本發(fā)明的一個實施例的與本發(fā)明最有關的那些子系統(tǒng)。根據(jù)實際實現(xiàn),可能需要未包含在圖3中的附加子系統(tǒng)。
相應地,圖3包括客戶302、服務器316和對象/方法資源庫314,它們在操作時都耦合到網(wǎng)絡312??蛻?02包括作出遠程計算調用306以在遠程服務器計算機上處理任務的應用程序304。通常使用在RMI說明書中所述的遠程過程調用子系統(tǒng)產(chǎn)生的遠程承接程序310用來使有關特定遠程計算機調用306的參數(shù)和數(shù)據(jù)形成包。典型的客戶還可包括本地對象/方法308的集合,它可包含調用遠程計算調用306以執(zhí)行的任務客戶302類型?;蛘撸蝿湛晌挥趯ο蠓椒ㄙY源庫314中,并可在需要時被計算方法320所訪問。服務器316包括遠程框架(skeleton)322來引出從客戶發(fā)送的參數(shù)和數(shù)據(jù)。遠程框架322準備計算方法320所使用的信息。本地對象/方法324還包括客戶302可請求服務器316進行處理的任務。
在操作中,遠程計算調用306調用計算方法320來處理特定任務。遠程承接程序310引入有關調用方法的信息,使服務器316上的計算方法320可執(zhí)行該任務。遠程承接程序310還可引入被服務器302上的計算方法320用作自變量的基本參數(shù)。遠程框架322接收該任務并引出在該網(wǎng)絡上接收到的數(shù)據(jù)和參數(shù),提供給計算機方法320。如果在服務器316上不可獲得任務和相關的類型,則框架從客戶302、對象/方法資源庫314或丟失類型的某些其它安全可靠的資源下載該類型。類型信息映射了數(shù)據(jù)在對象中的位置,并使遠程框架完成對該對象的處理。RMI(未示出)是一個能提供遠程承接程序310和遠程框架322的遠程過程調用(RPC)系統(tǒng)。一旦對象已被框架處理,計算方法320就執(zhí)行該任務并把經(jīng)計算的任務或經(jīng)計算的任務的結果返還客戶302。
圖4是客戶利用本發(fā)明的動態(tài)分布式計算系統(tǒng)和方法所進行的步驟的流程圖。最初,客戶從網(wǎng)絡中選擇處理該任務的適當服務器(步驟402)。選擇標準可根據(jù)服務器計算機集合中的整個處理負荷分布或每個服務器計算機的專門計算能力。例如,可使用負荷平衡技術來自動地確定在給定的時刻具有最少負荷的計算機。此外,客戶可選擇具有諸如圖形加速器或數(shù)學協(xié)處理器等專門硬件的某些計算機,因為該任務具有諸如描繪(render)三維線框等大量的圖形計算,或者必須進行許多浮點計算。
一旦服務器被選中,則客戶在選中的服務器上啟用遠程計算方法(標準404)。諸如RMI等RPC系統(tǒng)有利于在服務器計算機上啟用遠程計算方法。典型地,客戶只需要知道遠程計算方法可被用作在遠程計算機上處理特定任務的渠道。例如,在Java中,在客戶上所執(zhí)行的遠程指令“Server.runTask(new PI(1000))”使得在“ComputerServer”類型的遠程服務器“Server”上啟用遠程方法“runTask”。這一步驟通過遠程方法“runTask”把任務(在此情況下,任務是由“new PI(1000)所例示的類型任務對象)作為一個參數(shù)提供給通用計算方法。服務器上的“runTask”方法實現(xiàn)一Compute遠程接口??蛇x擇地,該指令可向服務器指示應把來自經(jīng)計算的任務的結果存入選中服務器上的結果高速緩沖存儲器中。這使得隨后的任務可在疊代(iteration)間共享結果。例如,計算“PI”得到的結果以后可被使用“PI”的值計算球的體積或完成另外精確計算的另一遠程方法所使用。
接著,使用承接程序把參數(shù)和數(shù)據(jù)引入到一任務請求中。然后,把此任務請求提供給選中的服務器。典型地,任務請求包括該任務的數(shù)據(jù)和參數(shù)以及該類型或類(如果它不在服務器上)的網(wǎng)絡位置。服務器上的框架使用該類型或類信息來處理對象并引出數(shù)據(jù)和參數(shù)。在使用Java和RMI的系統(tǒng)中,任務請求是一對象,類位置信息包含在代碼庫(codebase)URL(全球記錄定位器(universal recordlocator))參數(shù)中。在RMI說明書中包含了與此有關的進一步詳細信息。服務器可調度立即執(zhí)行該任務或一旦服務器找到執(zhí)行任務的適當時間時執(zhí)行該任務。在服務器進行計算后,客戶接收來自經(jīng)計算的任務的結果(步驟408)。
圖5是符合本發(fā)明的動態(tài)分布式計算系統(tǒng)和方法所進行的步驟的流程圖。最初,服務器上的框架引出來自任務請求的參數(shù)和數(shù)據(jù)并重新產(chǎn)生與發(fā)送時相同的原始任務(步驟504)。這些參數(shù)的引出可包括下載幾個附加類型??蚣艽_定在該服務器上是否可獲得有關任務請求的類型(步驟506)。如果不能獲得有關任務請求的類型,則框架必須從網(wǎng)絡上的區(qū)域之一下載該任務(步驟509)。例如,如果“PI()”類型不在服務器上,則框架服務器將從客戶下載這一類型??蚣苁褂迷擃愋突蝾悂碛成湓搶ο笾械臄?shù)據(jù)并引入?yún)?shù)和數(shù)據(jù)。
典型地,客戶將指示請求包中特定類型所在的地方。框架可從對象/方法資源庫中下載被請求的類型并可高速緩存此類型用以將來的服務器請求。此外,被請求的類型也可位于客戶上。例如,在Java和RMI中,包含特定類型的類位于客戶所發(fā)送的給定代碼庫URL(全球記錄定位器)中。RMI中的動態(tài)類裝載特征有利于使用代碼庫自動地下載類。這些類型使得框架可分析任務請求并提取適當?shù)臄?shù)據(jù)和參數(shù)。以上簡述的步驟使得可容易地獲得進一步處理用的參數(shù)和數(shù)據(jù)。
一旦可獲得適當?shù)念愋?,則框架啟用通用計算方法(步驟508)。然后,服務器上的通用計算方法執(zhí)行被客戶所請求的特定任務(步驟510)。例如,假設客戶調用“ComputeServer.runTask(new PI(1000))”。框架將在服務器上啟用通用計算方法“runTask”。“runTask”方法調用嵌入用戶所調用的任務中的“run()”方法。此外,“runTask”方法實現(xiàn)了保持與客戶的遠程連接的遠程接口“Compute”。在客戶或服務器上的預定設置的選項處,如果后續(xù)的任務將使用來自經(jīng)計算的任務的結果,則框架把這些結果存入高速緩存存儲器中。作為服務器上的最后一個步驟,通過在服務器上執(zhí)行“return t.run()”把經(jīng)計算的任務或結果返還客戶(步驟512)。
示例實現(xiàn)依據(jù)本發(fā)明,提供以下代碼樣本作為一個實現(xiàn)。雖然以面向對象的Java編程語言來提供本例,但也可使用其它編程語言。例如,服務器可包括以下Java碼THE TASKpublic interface Task extends Serializable{//This interface allows a class(the“PI”//class)to implement the abstract//run() class{Public Object runO;}THE REMOTE INTERFACEimport java.rmi.*;public interface Compute extends Remote {//The RMI/RPC Interfacepublic Object runTask(Task t)throws RemoteException;//The abstract runIt method}//abstract “runTask” method// ...Code in this area is used for initializing the routine with RPC systempublic Object runTask(Task t)throws RemoteException//runTask implements the abstract method//defined in ComputerServer interfacereturn t.run(); //可在在進行符合本發(fā)明的動態(tài)分布式計算的客戶上使用以下示例Java碼。class PI {private int precision;PI (int howManyPlaces) { //sets precision of PI value to be calculated laterprecision=howManyPlaces;}public Object runO { //implement the abstract run method in the//compute interfacedouble pi=computePIsomehow(precision);//calcualate pireturn new Double(pi);}public static void main (String[] args) {ComputerServer server=getAComputerServer(); //Select a server from//the network//and store in remote//compute call to RMI//RPC abstract remote//interfaceDouble pi=server.runTask(new PI(1000));//implement abstract remote//to execute a“pi”computation//defined in “PI”class.System.out.println("PI seems to be"+pi);//return results in“pi”variable//and print to standard out雖然這里為了說明的目的描述了特定實施例,但可進行各種修改而不背離本發(fā)明的精神和范圍。本領域內的技術人員理解,本發(fā)明可以在各種硬件和軟件平臺來實現(xiàn),且不限于以上所討論的傳統(tǒng)路由器、交換器和智能網(wǎng)絡集線器。相應地,本發(fā)明不限于以上所描述的實施例,而根據(jù)附加權利要求書按照整個等價范圍來限定。
權利要求
1.一種在一計算機系統(tǒng)上執(zhí)行的方法,該計算機系統(tǒng)具有主存儲器件、次級存儲器件、顯示器件和輸入/輸出機構,該方法使得客戶給服務器計算機集合中的一個服務器計算機動態(tài)地分配以與每一個服務器計算機兼容的編程語言所開發(fā)的任務,其特征在于所述方法包括以下步驟根據(jù)服務器集合中的整個處理負荷分布和每個服務器計算機的專門計算能力,從多個異構服務器中選擇一個服務器來處理一任務;把參數(shù)和數(shù)據(jù)引入到一任務請求中,這一步驟進一步包括以下子步驟,確定在選中的服務器上是否存在與被請求的任務有關的代碼和數(shù)據(jù)類型,以及當選中的服務器上不存在該代碼和數(shù)據(jù)類型時,把代碼和有關的數(shù)據(jù)類型下載到選中的服務器上;啟用有關選中服務器的通用計算方法,這一步驟執(zhí)行任務且進一步包括以下子步驟,把任務作為參數(shù)提供給通用計算方法,以及向服務器指示應把來自于經(jīng)計算的任務的結果存入選中服務器上的結果高速緩沖存儲器中以便使隨后的任務使用;以及接收從選中服務器返還的經(jīng)計算的任務以在客戶上進行進一步處理。
2.一種在包含在一計算機系統(tǒng)內的處理器上執(zhí)行的方法,該計算機系統(tǒng)具有主存儲器件、次級存儲器件、顯示器件和輸入/輸出機構,該方法使得與一服務器集合相連的一個服務器動態(tài)地接收和處理來自客戶計算機的任務,其中該任務為與每一個服務器計算機兼容的可執(zhí)行編程語言,其特征在于所述方法包括以下步驟把一任務請求中的參數(shù)和數(shù)據(jù)引出到一任務中,這一步驟進一步包括以下子步驟,確定在該服務器上是否可獲得有關該任務的類型,以及當在該服務器上不能獲得有關該任務的類型時,從客戶所提供的參數(shù)所指示的位置把類型下載到服務器上;啟用能處理所有類型的任務的通用計算方法,這一步驟執(zhí)行任務并產(chǎn)生結果;如果隨后的任務要使用來自所執(zhí)行任務的結果,則把這些結果存入高速緩沖存儲器中;以及把來自所執(zhí)行任務的結果返還客戶。
3.一種在一處理器上執(zhí)行的方法,所述處理器在操作上耦合到一服務器集合,所述方法使與該處理器相連的客戶把一任務動態(tài)地分配給一服務器,其特征在于所述方法包括以下步驟選擇一服務器來處理該任務;從參數(shù)和數(shù)據(jù)中形成一任務請求;把該任務請求發(fā)送到選中的服務器,這一步驟啟用能在選中服務器上執(zhí)行任務請求的通用計算技術并產(chǎn)生結果;以及接收從選中服務器返還的結果。
4.如權利要求3所述的方法,其特征在于所述處理器在操作上耦合到一計算機系統(tǒng),該計算機系統(tǒng)具有主存儲器件、次級存儲器件、顯示器件和輸入/輸出機構。
5.如權利要求3所述的方法,其特征在于該任務是以與每一個服務器計算機兼容的編程語言和環(huán)境來開發(fā)的。
6.如權利要求3所述的方法,其特征在于所述服務器是從多個異構計算機系統(tǒng)中選出的。
7.如權利要求5所述的方法,其特征在于所述環(huán)境包括遠程過程調用子系統(tǒng)。
8.如權利要求7所述的方法,其特征在于所述遠程過程調用子系統(tǒng)是遠程方法啟用(RMI)系統(tǒng)。
9.如權利要求3所述的方法,其特征在于選擇服務器的準則包括服務器計算機集合中的整個處理負荷分布。
10.如權利要求6所述的方法,其特征在于在預定的時間周期內,與諸服務器的平均負荷特性相比,選中的服務器具有最低的負荷特性。
11.如權利要求3所述的方法,其特征在于選擇服務器的準則包括每一個服務器計算機的專門計算能力。
12.如權利要求11所述的方法,其特征在于專門計算能力包括描繪圖像。
13.如權利要求3所述的方法,其特征在于發(fā)送步驟還包括以下子步驟確定在選中的服務器上是否存在有關被請求任務的代碼;以及當選中服務器上不存在所述代碼時把該代碼下載到選中服務器上。
14.如權利要求3所述的方法,其特征在于發(fā)送步驟還包括,把任務作為參數(shù)提供給通用計算方法。
15.如權利要求3所述的方法,其特征在于還包括向所述服務器指示應把來自經(jīng)計算的任務的結果存入選中服務器上的結果高速緩沖存儲器中為隨后的任務使用。
16.如權利要求3所述的方法,其特征在于所述結果用于在客戶上進行進一步處理。
17.如權利要求3所述的方法,其特征在于結果是一對象。
18.一種在一處理器上執(zhí)行的方法,所述處理器在操作上耦合到一服務器集合,所述方法使與所述處理器相連的一服務器動態(tài)地接收和處理來自客戶計算機的任務,其中所述任務是與每一個服務器計算機兼容的可執(zhí)行編程語言,其特征在于所述方法包括以下步驟從一個任務請求中檢索參數(shù)和數(shù)據(jù)而形成一任務;在服務器上啟用能處理多個類型的任務的通用計算方法,這一步驟執(zhí)行所述任務并產(chǎn)生結果;把結果返還客戶。
19.如權利要求18所述的方法,其特征在于所述處理器在操作上耦合到一計算機系統(tǒng),該計算機系統(tǒng)具有主存儲器件、次級存儲器件、顯示器件和輸入/輸出機構。
20.如權利要求18所述的方法,其特征在于該任務是以與每一個服務器計算機兼容的編程語言來開發(fā)的。
21.如權利要求18所述的方法,其特征在于該任務是使用Java編程語言和環(huán)境來開發(fā)的。
22.如權利要求21所述的方法,其特征在于所述環(huán)境包括遠程過程調用子系統(tǒng)。
23.如權利要求22所述的方法,其特征在于所述遠程過程調用子系統(tǒng)是遠程方法啟用(RMI)系統(tǒng)。
24.如權利要求18所述的方法,其特征在于檢索步驟還包括以下子步驟確定在服務器上是否存在與任務有關的類型;以及當服務器上不存在所述類型時把該類型從客戶所提供的參數(shù)所指定的位置下載到選中服務器上;以及根據(jù)客戶所提供的數(shù)據(jù)和參數(shù)來執(zhí)行任務。
25.如權利要求24所述的方法,其特征在于由遠程過程調用(RPC)子系統(tǒng)來完成確定步驟和下載步驟。
26.如權利要求25所述的方法,其特征在于由遠程過程調用子系統(tǒng)的遠程方法啟用(RMI)類型來進行確定步驟。
27.如權利要求18所述的方法,其特征在于還包括,如果在隨后的任務中要使用來自所述任務的所述結果時把所述結果存入高速緩沖存儲器中的子步驟。
全文摘要
在一客戶—服務器環(huán)境中,想要具有許多能處理廣泛的應用程序的服務器,這些應用程序諸如計算密集應用程序或諸如描繪等圖形操作。在異構客戶—服務器環(huán)境中,常規(guī)的系統(tǒng)把可執(zhí)行程序靜態(tài)地存儲在服務器上以便今后執(zhí)行。這要求應用程序從具有不同目標模塊的客戶機裝入服務器,需要大量存儲量和許多編程員的時間。本發(fā)明通過在一異構客戶—服務器網(wǎng)絡中產(chǎn)生一同構執(zhí)行環(huán)境解塊了這些問題。相應地,本系統(tǒng)把代碼動態(tài)地下載到計算機服務器上,在計算機服務器上執(zhí)行該代碼并把結果返還調用客戶方法。此技術不需要下載多個代碼拷貝也不需要進行編譯,因為可在所有不同的系統(tǒng)上執(zhí)行服務器代碼。依據(jù)本技術設計的系統(tǒng)也是有效的。一般,在客戶上就地編譯服務器代碼,并把該服務器代碼作為字節(jié)碼下載到服務器然后執(zhí)行。
文檔編號G06F9/50GK1292118SQ99803347
公開日2001年4月18日 申請日期1999年2月25日 優(yōu)先權日1998年2月26日
發(fā)明者K·C·R·C·阿諾德, J·H·瓦爾多, A·M·沃爾蕾斯, P·C·瓊斯 申請人:太陽微系統(tǒng)公司