專利名稱:遠(yuǎn)程進(jìn)程的的掛起和繼續(xù)的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式計(jì)算系統(tǒng),尤其涉及遠(yuǎn)程進(jìn)程的掛起和繼續(xù)的方法和設(shè)備。
相關(guān)申請依靠以下所述的美國專利申請,在本申請中通過參考引入。
1998年2月26日提交的名為“分布式計(jì)算系統(tǒng)”的60/076,048號臨時(shí)美國專利申請。
同一天提交的名為“租用存儲器的方法和系統(tǒng)”的09/044,923號美國專利申請,其律師備案號為06502.0011-01000。
同一天提交的名為“租用分布式系統(tǒng)中的授權(quán)證書的方法、設(shè)備和產(chǎn)品”的09/044,838號美國專利申請,其律師備案號為06502.0011-02000。
同一天提交的名為“租用分布式系統(tǒng)中的小組成員的方法、設(shè)備和產(chǎn)品”的09/044,834號美國專利申請,其律師備案號為06502.0011-03000。
同一天提交的名為“租用故障檢測”的09/044,916號美國專利申請,其律師備案號為06502.0011-04000。
同一天提交的名為“在基于事件的系統(tǒng)中的傳送行為的方法”的09/044,933號美國專利申請,其律師備案號為06502.0054-00000。
同一天提交的名為“分布式系統(tǒng)中的事件通知的對象和遠(yuǎn)程安裝的延遲重構(gòu)”的09/044,919號美國專利申請,其律師備案號為06502.00162-01000。
同一天提交的名為“遠(yuǎn)程方法啟用的方法和設(shè)備”的09/044,938號美國專利申請,其律師備案號為06502.0102-00000。
同一天提交的名為“識別遠(yuǎn)程方法的確定性散列方法和系統(tǒng)”的09/045,652號美國專利申請,其律師備案號為06502.0103-00000。
同一天提交的名為“確定分布式系統(tǒng)中的遠(yuǎn)程對象的狀態(tài)的方法和設(shè)備”的09/044,790號美國專利申請,其律師備案號為06502.0104-00000。
同一天提交的名為“用于執(zhí)行有關(guān)分布式系統(tǒng)中的遠(yuǎn)程過程調(diào)用的處理的可下載智能代理”的09/044,930號美國專利申請,其律師備案號為06502.0105-00000。
同一天提交的名為“數(shù)據(jù)庫中的多入口和多模板匹配的方法和系統(tǒng)”的09/044,835號美國專利申請,其律師備案號為06502.0107-00000。
同一天提交的名為“數(shù)據(jù)庫中的原地修改的方法和系統(tǒng)”的09/044,839號美國專利申請,其律師備案號為06502.0108。
同一天提交的名為“數(shù)據(jù)庫中的類型安全屬性匹配的方法和系統(tǒng)”的09/044,945號美國專利申請,其律師備案號為06502.0109-00000。
同一天提交的名為“分布式系統(tǒng)中的動態(tài)查找服務(wù)”的09/044,931號美國專利申請,其律師備案號為06502.0110-00000。
同一天提交的名為“用于提供在與分布式系統(tǒng)中的一個(gè)裝置進(jìn)行通信時(shí)所使用的可下載代碼的設(shè)備和方法”的09/044,939號美國專利申請,其律師備案號為06502.0112-00000。
同一天提交的名為“便于訪問查找服務(wù)的方法和系統(tǒng)”的09/044,826號美國專利申請,其律師備案號為06502.0113-00000。
同一天提交的名為“用于動態(tài)地檢驗(yàn)分布式系統(tǒng)中的信息的設(shè)備和方法”的09/044,932號美國專利申請,其律師備案號為06502.0114-00000。
同一天提交的名為“在一網(wǎng)絡(luò)上進(jìn)行動態(tài)分布式計(jì)算的方法和設(shè)備”的09/044,840號美國專利申請,其律師備案號為06502.0115-00000。
同一天提交的名為“持久性共享的存儲空間的交互設(shè)計(jì)工具”的09/044,936號美國專利申請,其律師備案號為06502.0116-00000。
同一天提交的名為“基于多形態(tài)令牌的控制”的09/044,934號美國專利申請,其律師備案號為06502.0117-00000。
同一天提交的名為“基于堆棧的訪問控制”的09/044,915號美國專利申請,其律師備案號為06502.0118-00000。
同一天提交的名為“基于堆棧的安全需求”的09/044,944號美國專利申請,其律師備案號為06502.0119-00000。
同一天提交的名為“安全需求的按方法指定”的09/044,837號美國專利申請,其律師備案號為06502.0120-00000。
背景技術(shù):
典型的分布式計(jì)算系統(tǒng)使得一網(wǎng)絡(luò)上的許多不同的客戶可獲得許多服務(wù)器的服務(wù)和計(jì)算能力。通常,客戶機(jī)使用遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)來訪問服務(wù)器機(jī)上的處理能力。RPC系統(tǒng)處理遠(yuǎn)程機(jī)上的請求并把想要的結(jié)果返還發(fā)出請求的客戶。用來發(fā)送請求并返還結(jié)果的網(wǎng)絡(luò)可以是局域網(wǎng)(LAN)、廣域網(wǎng)(WAN),而且它還可包括因特網(wǎng)。因特網(wǎng)上的高級分布式計(jì)算使用此客戶-服務(wù)器配置在世界范圍內(nèi)提供電子商務(wù)(e-商務(wù))、電信辦公和交互式娛樂服務(wù)。
隨著分布式計(jì)算范例的使用和普及的增長,在服務(wù)器系統(tǒng)上可獲得完成客戶系統(tǒng)發(fā)出請求的資源變得越來越重要。來自客戶的每個(gè)請求一般促使服務(wù)器進(jìn)程指定資源,這些資源包括處理請求用的一個(gè)或多個(gè)線程(thread)。線程(有時(shí)叫做輕型進(jìn)程)是具有獨(dú)立控制流的進(jìn)程內(nèi)的一個(gè)分開的指令序列。線程必須從系統(tǒng)中開辟完成特定請求所需的資源。如果可獲得諸如存儲器和數(shù)據(jù)等資源,則可平行地執(zhí)行完成多個(gè)任務(wù)的多個(gè)線程。
產(chǎn)生線程的進(jìn)程可使用線程調(diào)度器,以根據(jù)線程的優(yōu)先級、執(zhí)行狀態(tài)(即,睡眠、存活(alive)、停用、運(yùn)行)及各線程之間的相關(guān)性來協(xié)調(diào)線程的平行執(zhí)行。單個(gè)處理器系統(tǒng)上的線程調(diào)度器在許多線程之間分配處理器的計(jì)算能力,以提供這些線程實(shí)際上在平行運(yùn)行的錯(cuò)覺。有許多不同的調(diào)度技術(shù)可以使用,包括先到先服務(wù)、最短線程優(yōu)先、優(yōu)先級調(diào)度以及諸如輪流坐莊(round-robin)等搶占式調(diào)度技術(shù)。對于特定的實(shí)施可按需要組合這些技術(shù)以形成混合調(diào)度技術(shù)。在多處理器系統(tǒng)上,調(diào)度器把不同線程與不同處理器相聯(lián)系,以平行地執(zhí)行線程并利用附加的計(jì)算能力。
不幸的是,如果不能立即獲得這些資源,線程不可能繼續(xù)執(zhí)行并可能被阻止進(jìn)一步的處理。這些被阻止執(zhí)行的線程占用諸如存儲器以及與線程本身有關(guān)的數(shù)據(jù)和控制結(jié)構(gòu)等服務(wù)器資源。最終,服務(wù)器可能用完分派入局客戶請求的線程。入局客戶請求可能被拒絕,服務(wù)器實(shí)際上將被從分布式計(jì)算環(huán)境中移去。此阻塞情況也可能因與拒絕對輸入調(diào)用的服務(wù)有關(guān)的開銷而降低服務(wù)器服務(wù)于現(xiàn)有請求的能力。
當(dāng)前的分布式計(jì)算系統(tǒng)未被設(shè)計(jì)成解決此線程分派問題。這些系統(tǒng)在遠(yuǎn)程服務(wù)器進(jìn)程被阻塞而等待一資源或特定事件時(shí)不釋放線程和相關(guān)的資源。結(jié)果,事務(wù)處理密集的分布式計(jì)算環(huán)境可能遭受如上所述的阻塞情況。例如,假定一服務(wù)器進(jìn)程接收到因特網(wǎng)上的多個(gè)客戶要求下載文件的多個(gè)請求。服務(wù)器進(jìn)程接收來自服務(wù)器操作系統(tǒng)的多個(gè)線程,以平行地處理這些請求,但所請求的文件被其它進(jìn)程鎖定而不能獲得。常規(guī)的系統(tǒng)將阻塞對每個(gè)線程的進(jìn)一步處理并等待文件被解除鎖定。即使其它進(jìn)程可利用線程資源來處理其它任務(wù),但服務(wù)器上的線程將維持空閑。當(dāng)服務(wù)器系統(tǒng)上的線程數(shù)目耗盡時(shí),服務(wù)器進(jìn)程將拒絕服務(wù)于其它的客戶。最終,服務(wù)器系統(tǒng)將難于處理一般的任務(wù)。
在許多分布式計(jì)算系統(tǒng)上,不能夠分派線程和其它資源可能對總處理吞吐量帶來負(fù)面影響。甚至,如果不能在服務(wù)器系統(tǒng)上有效地分派線程和其它資源,分布式計(jì)算系統(tǒng)上可獲得的高速帶寬將變得不能被使用。
基于常規(guī)系統(tǒng)中所發(fā)現(xiàn)的以上限制,想要改善分布式計(jì)算環(huán)境中所使用的線程和其它資源的分派。
發(fā)明內(nèi)容
與這里所實(shí)施和廣泛描述的本發(fā)明相一致,一種使能對服務(wù)器系統(tǒng)掛起處理和釋放資源的遠(yuǎn)程方法的方法和設(shè)備包括接收來自客戶系統(tǒng)上的遠(yuǎn)程方法調(diào)用的請求。給此遠(yuǎn)程方法分派來自服務(wù)器系統(tǒng)的系統(tǒng)資源并啟用該方法。一種系統(tǒng)級類型的資源是線程。該方法確定目前是否可獲得處理該遠(yuǎn)程方法所需的任何通用資源。通用的資源可以是存儲器、磁盤存儲空間、數(shù)據(jù)或系統(tǒng)資源可依賴的任何資源。當(dāng)遠(yuǎn)程方法依賴的普通資源不可獲得時(shí)使遠(yuǎn)程方法暫停進(jìn)一步處理,并釋放系統(tǒng)資源給服務(wù)器系統(tǒng)。
符合本發(fā)明的另一種方法使得先前被掛起的遠(yuǎn)程方法繼續(xù)在服務(wù)器系統(tǒng)上的處理,并對客戶應(yīng)用程序產(chǎn)生結(jié)果。此方法包括接收與發(fā)生掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示。把系統(tǒng)資源和通用資源分派給遠(yuǎn)程方法,以預(yù)備繼續(xù)處理此遠(yuǎn)程方法。該遠(yuǎn)程方法利用組合的分派資源來繼續(xù)執(zhí)行和產(chǎn)生結(jié)果。使用諸如遠(yuǎn)程方法啟用(RMI)等遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)把這些結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序。
附圖概述被引入并構(gòu)成本說明書一部分的附圖示出本發(fā)明的一個(gè)實(shí)施例,它與以下描述一起用于說明本發(fā)明的優(yōu)點(diǎn)和原理。
在圖中
圖1示出適用于符合本發(fā)明的方法和系統(tǒng)的網(wǎng)絡(luò);圖2是適用于符合本發(fā)明的方法和系統(tǒng)的計(jì)算機(jī)系統(tǒng)的方框圖;
圖3是適用于符合本發(fā)明的方法和系統(tǒng)的客戶-服務(wù)器網(wǎng)絡(luò)化環(huán)境的方框圖;圖4是符合本發(fā)明的方法和系統(tǒng)的遠(yuǎn)程方法調(diào)用的掛起和繼續(xù)處理所使用的子系統(tǒng)的方框圖;圖5是為掛起和繼續(xù)符合本發(fā)明的方法和系統(tǒng)的遠(yuǎn)程方法調(diào)用所進(jìn)行的步驟的流程圖;圖6是為掛起符合本發(fā)明的方法和系統(tǒng)的遠(yuǎn)程方法調(diào)用所進(jìn)行的步驟的流程圖;以及圖7是為繼續(xù)符合本發(fā)明的方法和系統(tǒng)的遠(yuǎn)程方法調(diào)用所進(jìn)行的步驟的流程圖。
本發(fā)明的較佳實(shí)施方式介紹現(xiàn)在將詳細(xì)地參考附圖中所示的本發(fā)明的一個(gè)實(shí)現(xiàn)。在可能時(shí),在附圖和以下的描述中使用相同的標(biāo)號,以指示相同的或類似的部分。
依據(jù)本發(fā)明所設(shè)計(jì)的系統(tǒng)假定計(jì)算機(jī)系統(tǒng)可主持客戶或服務(wù)器功能。假定每個(gè)計(jì)算機(jī)在客戶-服務(wù)器系統(tǒng)中的作用與在客戶和服務(wù)器之間所進(jìn)行的特定調(diào)用有關(guān)。例如,客戶進(jìn)程通常請求位于遠(yuǎn)程機(jī)上的服務(wù)器進(jìn)程所產(chǎn)生的服務(wù)。相反,服務(wù)器進(jìn)程位于接收和服務(wù)于客戶請求的機(jī)器上。因此,同一計(jì)算機(jī)系統(tǒng)可在請求服務(wù)時(shí)起到客戶的作用,并在完成對一客戶的請求時(shí)起到服務(wù)器的作用。
符合本發(fā)明的系統(tǒng)解決了已有技術(shù)的缺點(diǎn)并提供了用于掛起和繼續(xù)遠(yuǎn)程進(jìn)程的方法和設(shè)備。過去,遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)在遠(yuǎn)程進(jìn)程被阻塞而等待一事件發(fā)生或釋放一資源時(shí)不能使遠(yuǎn)程進(jìn)程釋放資源。此技術(shù)使客戶進(jìn)程與服務(wù)器進(jìn)程之間的連接保持有效,但使諸如線程、存儲器和輔助存儲器等重要資源空閑。相反,依據(jù)本發(fā)明設(shè)計(jì)的系統(tǒng)允許遠(yuǎn)程服務(wù)器進(jìn)程阻止進(jìn)一步的處理以釋放線程和其它資源,同時(shí)不撤銷客戶與服務(wù)器系統(tǒng)之間的連接。此新技術(shù)使得其它進(jìn)程即使在一遠(yuǎn)程進(jìn)程被阻塞時(shí)也可利用服務(wù)器資源。具體來說,這防止了遠(yuǎn)程服務(wù)器進(jìn)程拒絕對客戶的訪問。結(jié)果,本發(fā)明的實(shí)施例更有效地使用線程和其它資源,這增加了分布式技術(shù)系統(tǒng)的有效總處理能力。
此外,符合本發(fā)明的系統(tǒng)的優(yōu)點(diǎn)還在于,它們與現(xiàn)有客戶-服務(wù)器系統(tǒng)上的客戶兼容。這在諸如因特網(wǎng)等異構(gòu)網(wǎng)絡(luò)化計(jì)算環(huán)境中尤其重要。由于對服務(wù)器進(jìn)行了更改以更有效地分派和釋放資源,本發(fā)明不會影響客戶系統(tǒng)的設(shè)計(jì)和操作。相應(yīng)地,客戶不需要更改,而可以與當(dāng)前設(shè)計(jì)的系統(tǒng)一起進(jìn)行工作。
分布式系統(tǒng)概述符合本發(fā)明的方法和系統(tǒng)在具有各種部件(包括硬件和軟件)的分布式系統(tǒng)(“示例的分布式系統(tǒng)”)中進(jìn)行操作。示例的分布式系統(tǒng)(1)允許系統(tǒng)的用戶在一許多裝置的網(wǎng)絡(luò)上共享服務(wù)和資源;(2)向程序員提供允許開發(fā)穩(wěn)健而安全的分布式系統(tǒng)的工具和編程模式;以及(3)簡化管理分布式系統(tǒng)的任務(wù)。為了實(shí)現(xiàn)這些目標(biāo),示例的分布式系統(tǒng)利用JavaTM編程環(huán)境,從而允許以無縫的方式在各裝置之間轉(zhuǎn)移代碼和數(shù)據(jù)。相應(yīng)地,示例的分布式系統(tǒng)處在Java編程環(huán)境的頂層,并開發(fā)該環(huán)境的特性,包括它所提供的安全性及它所提供的強(qiáng)大類型定義。在Jaworski,Java 1.1 Developer’s Guide.Sams.net(1997)中更清楚地描述了Java編程環(huán)境,這里通過參考而引入。
在示例的分布式系統(tǒng)中,把不同的計(jì)算機(jī)和裝置結(jié)合成為對用戶來說表現(xiàn)為單個(gè)的系統(tǒng)。通過表現(xiàn)為單個(gè)系統(tǒng),示例的分布式系統(tǒng)提供了單個(gè)系統(tǒng)可提供的訪問簡化和共享能力,而不放棄個(gè)人計(jì)算機(jī)或工作站的靈活性和個(gè)人化響應(yīng)。示例的分布式系統(tǒng)可包含由用戶所操作的數(shù)千個(gè)裝置,這些用戶在地理上分散,但他們約定了委托、管理和政策等基本概念。
在示例的分布式系統(tǒng)內(nèi)有一個(gè)或多個(gè)裝置所提供的服務(wù)的各種邏輯分組,公知每個(gè)這樣的邏輯分組是Djinn。“服務(wù)”指可被用戶、程序、裝置或其它服務(wù)所訪問并可以是與計(jì)算、存儲相關(guān)、與通信相關(guān)或與提供對另一個(gè)用戶的訪問相關(guān)的資源、數(shù)據(jù)或功能。作為Djinn的一部分所提供的服務(wù)的例子包括諸如打印機(jī)、顯示器和磁盤等裝置;諸如應(yīng)用程序或?qū)嵱贸绦虻溶浖?;諸如數(shù)據(jù)庫和文件等信息;以及系統(tǒng)的用戶。
用戶和裝置都可加入Djinn。在加入一Djinn時(shí),用戶或裝置把零個(gè)或多個(gè)的服務(wù)加到Djinn并可訪問(經(jīng)歷安全性約束)它所包含的任一個(gè)服務(wù)。因而,裝置和用戶結(jié)合成為一Djinn,以共享對其服務(wù)的訪問。Djinn的服務(wù)編程上表現(xiàn)為Java編程環(huán)境的對象,此Java編程環(huán)境可包括其它對象、以不同的編程語言編寫的軟件成分或硬件裝置。服務(wù)具有定義可請求該服務(wù)的操作的界面,該服務(wù)的類型確定了構(gòu)成該服務(wù)的界面。
圖1示出示例的分布式系統(tǒng)100,它包括計(jì)算機(jī)102、計(jì)算機(jī)104以及通過網(wǎng)絡(luò)108互連的裝置106。裝置106可以是許多裝置中的任一個(gè),諸如打印機(jī)、傳真機(jī)、存儲裝置、計(jì)算機(jī)或其它裝置。網(wǎng)絡(luò)108可以是局域網(wǎng)、廣域網(wǎng)或因特網(wǎng)。雖然把示例的分布式系統(tǒng)100示為僅包括兩個(gè)計(jì)算機(jī)和一個(gè)裝置,但本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,示例的分布式系統(tǒng)100可包括附加的計(jì)算機(jī)或裝置。
圖2更詳細(xì)地示出計(jì)算機(jī)102,以示出示例的分布式系統(tǒng)100的許多軟件成分。本領(lǐng)域內(nèi)的技術(shù)人員將理解,可類似地構(gòu)成計(jì)算機(jī)104或裝置106。計(jì)算機(jī)102包括存儲器202、輔助存儲裝置204、中央處理單元(CPU)206、輸入裝置208和視頻顯示器210。存儲器202包括查找服務(wù)212、發(fā)現(xiàn)服務(wù)器214和JayaTM運(yùn)行時(shí)間系統(tǒng)216。Java運(yùn)行時(shí)間系統(tǒng)216包括JavaTM遠(yuǎn)程方法啟用系統(tǒng)(RMI)218和JavaTM虛擬機(jī)220。輔助存儲裝置204包括JavaTM空間222。
如上所述,示例的分布式系統(tǒng)100基于Java編程環(huán)境繼而利用Java運(yùn)行時(shí)間系統(tǒng)216。Java運(yùn)行時(shí)間系統(tǒng)216包括JavaTMAPI,允許程序在Java允許時(shí)間系統(tǒng)的頂部運(yùn)行,從而可以獨(dú)立于平臺的方式訪問這種系統(tǒng)功能,包括主操作系統(tǒng)的視窗能力和網(wǎng)絡(luò)化能力。由于Java API為跨移植了Java運(yùn)行時(shí)間系統(tǒng)216的所有操作系統(tǒng)提供了單個(gè)公共API,所以在Java運(yùn)行時(shí)間系統(tǒng)頂部運(yùn)行的程序以獨(dú)立于平臺的方式運(yùn)行,而不管主平臺的操作系統(tǒng)或硬件結(jié)構(gòu)。Java運(yùn)行時(shí)間系統(tǒng)216作為可從加里福尼亞州Mountain View的Sun Microsystems獲得的JavaTM軟件開發(fā)工具包的一部分而提供。
Java虛擬機(jī)220也有利于平臺獨(dú)立性。Java虛擬機(jī)220起到類似于抽象計(jì)算機(jī)器的作用,它接收字節(jié)碼形式的程序中的指令,并通過把這些字節(jié)碼動態(tài)地轉(zhuǎn)換成諸如對象碼等用于執(zhí)行的形式來解釋它們,并執(zhí)行它們。RMI 218通過允許在一個(gè)計(jì)算機(jī)或裝置上執(zhí)行的對象啟用另一計(jì)算機(jī)或裝置上的對象的方法,從而有利于遠(yuǎn)程方法啟用。也提供了RMI和Java虛擬機(jī)作為Java軟件開發(fā)工具包的一部分。
查找服務(wù)212定義了特定Djinn可獲得的的服務(wù)。即,在示例的分布式系統(tǒng)100內(nèi)可存在不止一個(gè)Djinn因而不止一個(gè)查找服務(wù)。查找服務(wù)212包含該Djinn內(nèi)的每個(gè)服務(wù)的一個(gè)對象,每個(gè)對象包含有助于對相應(yīng)的系統(tǒng)進(jìn)行訪問的各種方法。在名為“有助于對查找服務(wù)的訪問的法和系統(tǒng)”的09/044,826號未決美國專利申請中更詳細(xì)地描述了查找服務(wù)212及其服務(wù),在這里通過參考引入。
發(fā)現(xiàn)服務(wù)214在稱為引導(dǎo)和加入或發(fā)現(xiàn)進(jìn)程中檢測何時(shí)把一新的裝置加到示例的分布式系統(tǒng)100上,以及在檢測到此新的裝置時(shí),發(fā)現(xiàn)服務(wù)器把對查找服務(wù)212的一個(gè)引用(reference)傳送給新的裝置,從而此新裝置可向此查找服務(wù)登記其服務(wù),并可成為此Djinn的一員。在記錄后,新裝置變?yōu)镈jinn的一個(gè)成員,結(jié)果,它可訪問包含在查找服務(wù)212中的所有服務(wù)。在名為“提供在與分布式系統(tǒng)中的裝置通信時(shí)所使用的可下載代碼的設(shè)備和方法”的09/044,939號未決美國專利申請中更詳細(xì)地描述了引導(dǎo)和加入的進(jìn)程,在這里通過參考而引入。
Java空間222是由示例的分布式系統(tǒng)100內(nèi)的程序用來存儲對象的對象資源庫。程序使用Java空間222來永久性地存儲對象并使得它們可被示例的分布式系統(tǒng)內(nèi)的其它裝置訪問。在1997年11月17日提交的名為“利用多形態(tài)入口和入口匹配的數(shù)據(jù)庫系統(tǒng)”的08/971,529號未決美國專利申請中更詳細(xì)地描述了Java空間,該申請已轉(zhuǎn)讓給共同的受讓人,在這里通過參考而引入。本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,示例的分布式系統(tǒng)100可包含許多查找服務(wù)、發(fā)現(xiàn)服務(wù)和Java空間。
雖然描述了在示例的分布式系統(tǒng)和Java編程環(huán)境中操作的符合本發(fā)明的系統(tǒng)和方法,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,本發(fā)明可在其它系統(tǒng)和其它編程環(huán)境中實(shí)施。此外,雖然把本發(fā)明的方面描述為存儲在存儲器中,但本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,還可把這些方面存儲在其它類型的計(jì)算機(jī)可讀媒體上或從中讀取,諸如輔助存儲裝置,類似于硬盤、軟盤或CD-ROM;來自因特網(wǎng)的載波;或其它形式的RAM或ROM。Sun、Sun Microsystems、SunLogo、Java和基于Java的商標(biāo)是SunMicrosystems股份有限公司在美國和其它國家的商標(biāo)或注冊商標(biāo)。
示例的客戶-服務(wù)器系統(tǒng)圖3示出符合本發(fā)明的示例的客戶-服務(wù)器系統(tǒng)以及示例的分布式系統(tǒng)100。相應(yīng)地,客戶-服務(wù)器系統(tǒng)300由客戶計(jì)算機(jī)302(也叫做客戶302)、服務(wù)器計(jì)算機(jī)312(也叫做服務(wù)器312)和耦合在客戶302和服務(wù)器312之間的網(wǎng)絡(luò)310構(gòu)成??墒褂肑avaTM面向?qū)ο蟮恼Z言并作為對RMI 218的加強(qiáng)來實(shí)現(xiàn)此特定客戶-服務(wù)器系統(tǒng)。然而,本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)理解,可使用普通的遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)和其它面向?qū)ο蠛头敲嫦驅(qū)ο蟮恼Z言來實(shí)現(xiàn)符合本發(fā)明的類似系統(tǒng)。
客戶302包括具有遠(yuǎn)程方法調(diào)用306、遠(yuǎn)程承接程序(stub)308和遠(yuǎn)程方法運(yùn)行時(shí)間309的客戶應(yīng)用程序304??蛻魬?yīng)用程序304通常是用戶所開發(fā)的軟件且包括用于啟用服務(wù)器312上的進(jìn)程的遠(yuǎn)程方法調(diào)用306。例如,客戶應(yīng)用程序304可以是以JavaTM編程語言編寫的JavaTM應(yīng)用程序。使用諸如RMI等RPC機(jī)構(gòu)來實(shí)現(xiàn)遠(yuǎn)程方法調(diào)用。
遠(yuǎn)程方法承接程序308對遠(yuǎn)程方法調(diào)用306所提供的數(shù)據(jù)和參數(shù)進(jìn)行編組(marshal)。以可被服務(wù)器312上的遠(yuǎn)程方法框架(skeleton)315去編組(unmarshall)的預(yù)定格式來排列數(shù)據(jù)和參數(shù)。在服務(wù)器312上有關(guān)遠(yuǎn)程方法調(diào)用306的進(jìn)程時(shí),遠(yuǎn)程方法運(yùn)行時(shí)間309跟蹤這些進(jìn)程的狀態(tài)。遠(yuǎn)程方法運(yùn)行時(shí)間309還確定客戶應(yīng)用程序304與服務(wù)器312之間的通信鏈路是正常還是未連接。遠(yuǎn)程方法運(yùn)行時(shí)間309可向服務(wù)器312查詢鏈路的狀態(tài)。如果合理的時(shí)間周期內(nèi)沒有響應(yīng)或服務(wù)器312指示故障,則遠(yuǎn)程方法運(yùn)行時(shí)間309通知客戶應(yīng)用程序304遠(yuǎn)程方法調(diào)用終止。
網(wǎng)絡(luò)310在客戶302和服務(wù)器312之間提供了通信鏈路。網(wǎng)絡(luò)310可以是因特網(wǎng)或公司或校園范圍的內(nèi)部網(wǎng)。網(wǎng)絡(luò)310可使用TCP/IP或包括Novell Netware、AppliTalk、X.25的任何其它網(wǎng)絡(luò)協(xié)議或能支持諸如RMI等RPC系統(tǒng)的任何其它網(wǎng)絡(luò)。
服務(wù)器312包括相應(yīng)的遠(yuǎn)程方法運(yùn)行時(shí)間314和遠(yuǎn)程方法框架315。與客戶302相反,服務(wù)器312還包括通用資源管理器316、事件處理器317、遠(yuǎn)程方法資源管理器322、遠(yuǎn)程事件處理器323以及大量遠(yuǎn)程方法資源324。服務(wù)器312還包括遠(yuǎn)程對象A 318以及遠(yuǎn)程對象B 320。每個(gè)遠(yuǎn)程對象與客戶應(yīng)用程序304可使用遠(yuǎn)程方法調(diào)用306來啟用的許多方法(未示出)。服務(wù)器312的另一個(gè)結(jié)構(gòu)可包括用于執(zhí)行特定系統(tǒng)所需的遠(yuǎn)程方法的任意數(shù)目的遠(yuǎn)程對象。
遠(yuǎn)程方法運(yùn)行時(shí)間314負(fù)責(zé)不斷地通知客戶302遠(yuǎn)程方法的執(zhí)行狀態(tài)。遠(yuǎn)程方法運(yùn)行時(shí)間314給客戶302提供指示遠(yuǎn)程方法在處理數(shù)據(jù)的信息。依據(jù)本發(fā)明,即使在遠(yuǎn)程方法掛起時(shí),處理狀態(tài)也不阻塞。取而代之,遠(yuǎn)程方法運(yùn)行時(shí)間314保持與客戶302的連接,直到遠(yuǎn)程方法完成對請求任務(wù)的處理。遠(yuǎn)程方法運(yùn)行時(shí)間314還在遠(yuǎn)程方法異?;虺鲥e(cuò)而終止時(shí)向客戶302指示。
該方法確定目前是否可獲得處理遠(yuǎn)程方法所需的的任何通用資源。通用資源可以是存儲器、磁盤存儲空間、數(shù)據(jù)或系統(tǒng)資源可依賴的任何資源。
遠(yuǎn)程方法框架315負(fù)責(zé)對網(wǎng)絡(luò)310上發(fā)送的數(shù)據(jù)和參數(shù)進(jìn)行去編組。把參數(shù)和數(shù)據(jù)用作在服務(wù)器312上執(zhí)行遠(yuǎn)程方法的形式參數(shù)。
通用資源管理器316和事件處理器317管理在服務(wù)器312所執(zhí)行的本地進(jìn)程和方法所使用的資源。在服務(wù)器312上執(zhí)行的本地方法注意通用資源管理器316和事件處理器317,以協(xié)調(diào)通用資源的分派和解除分派。這些通用資源可包括諸如存儲器等主存儲器、或諸如磁盤和磁帶驅(qū)動器等輔助存儲器。與以下所討論的系統(tǒng)資源不同,通用資源通常不用于完成遠(yuǎn)程方法請求。事件處理器317檢測與本地進(jìn)程有關(guān)的事件,因此,在本說明書中不包括事件處理器317的細(xì)節(jié)。實(shí)質(zhì)上,通用資源管理器316和事件處理器317專用于管理與未被諸如客戶302等客戶遠(yuǎn)程啟用的那些進(jìn)程和方法有關(guān)的資源。
相反,遠(yuǎn)程方法資源管理器322和遠(yuǎn)程事件處理器323負(fù)責(zé)分派和解除分派遠(yuǎn)程方法所需的遠(yuǎn)程方法資源324??砂堰h(yuǎn)程方法資源324看作一個(gè)系統(tǒng)資源,因?yàn)樗鼈兪狗椒衫弥T如網(wǎng)絡(luò)技術(shù)的系統(tǒng)層資源。通常,這些系統(tǒng)資源將與如上所述的通用資源有關(guān)。
遠(yuǎn)程方法資源管理器322在有關(guān)遠(yuǎn)程對象318、遠(yuǎn)程對象320和其它對象(未示出)的遠(yuǎn)程方法之間傳遞遠(yuǎn)程方法資源324。遠(yuǎn)程事件處理器323檢測何時(shí)釋放一遠(yuǎn)程方法處理特定任務(wù)所需的資源。利用如下所述的本發(fā)明的一個(gè)實(shí)現(xiàn)有助于傳遞這些遠(yuǎn)程方法資源。
遠(yuǎn)程方法的掛起和繼續(xù)在遠(yuǎn)程方法將被阻塞時(shí)啟用掛起方法。這通常剛好發(fā)生在遠(yuǎn)程方法被阻塞而等待可獲得資源前。掛起方法把遠(yuǎn)程方法標(biāo)為掛起,遠(yuǎn)程方法資源管理器把線程和其它資源返還服務(wù)器系統(tǒng)。在可獲得資源時(shí),遠(yuǎn)程方法資源管理器和繼續(xù)方法一起工作,以把這些線程和其它遠(yuǎn)程方法資源分派給掛起的遠(yuǎn)程方法。最終,遠(yuǎn)程方法運(yùn)行時(shí)間啟用掛起的遠(yuǎn)程方法,從而它繼續(xù)處理。例如等待一寫操作的遠(yuǎn)程方法對阻塞狀態(tài)輸入-就緒,并通過調(diào)用掛起操作而釋放線程和其它資源。掛起操作把此遠(yuǎn)程方法標(biāo)為掛起,遠(yuǎn)程方法資源管理器把這些線程返還有關(guān)服務(wù)器系統(tǒng)的線程池。一旦寫操作發(fā)生,則繼續(xù)方法把掛起的遠(yuǎn)程方法標(biāo)為可運(yùn)行,遠(yuǎn)程方法資源管理器把線程和其它資源分派回掛起的遠(yuǎn)程進(jìn)程。遠(yuǎn)程方法運(yùn)行時(shí)間啟用先前掛起的遠(yuǎn)程方法,以使該遠(yuǎn)程方法讀取數(shù)據(jù)。
圖4是示出掛起和繼續(xù)處理一遠(yuǎn)程方法所使用的基本軟件子系統(tǒng)的方框圖。這些軟件子系統(tǒng)包括遠(yuǎn)程方法資源324、遠(yuǎn)程方法資源管理器322以及具有遠(yuǎn)程方法416和執(zhí)行狀態(tài)418的示例遠(yuǎn)程對象A 318。
圖4中的遠(yuǎn)程方法資源324包括線程池402,它具有使用中的線程404、可獲得的線程406以及RPC狀態(tài)408。使用中的線程404包含對遠(yuǎn)程方法當(dāng)前所使用的線程的引用,而可獲得的線程406包含遠(yuǎn)程方法當(dāng)前可使用的線程。在遠(yuǎn)程方法被掛起時(shí),把RPC狀態(tài)408保存在遠(yuǎn)程方法資源324中,以存儲諸如RMI等RPC系統(tǒng)所使用的信息。此信息可包括RPC系統(tǒng)繼續(xù)處理掛起的遠(yuǎn)程方法并把結(jié)果返還客戶的信息。在另一實(shí)施例中,遠(yuǎn)程方法資源324還可包括除了線程以外的其它資源。這些其它的網(wǎng)絡(luò)資源可包括主存儲器、輔存儲器及結(jié)合處理遠(yuǎn)程方法所使用的任何其它資源。
遠(yuǎn)程方法資源管理器322包括掛起方法410、繼續(xù)方法412和狀態(tài)存儲器414。掛起方法410獲得來自遠(yuǎn)程方法416的執(zhí)行狀態(tài)418以及來自遠(yuǎn)程方法資源324的RPC狀態(tài)408。在遠(yuǎn)程方法416被掛起前把此狀態(tài)信息存儲在狀態(tài)存儲器414中。通常,在遠(yuǎn)程方法416指示它將被阻塞且它具有線程和其它資源時(shí),掛起方法410把遠(yuǎn)程方法416標(biāo)為掛起。最終,遠(yuǎn)程方法資源管理器322把線程和其它資源返還服務(wù)器312,并掛起遠(yuǎn)程方法416的進(jìn)一步處理。例如,假設(shè)遠(yuǎn)程方法416嘗試從一暫時(shí)空的隊(duì)列中讀取數(shù)據(jù)。當(dāng)遠(yuǎn)程方法416檢測到該隊(duì)列為空時(shí),遠(yuǎn)程方法416將啟用掛起方法410,以開始掛起進(jìn)程。
繼續(xù)方法412與掛起方法410相伴。繼續(xù)方法412通常是在可獲得資源或已發(fā)生特定事件時(shí)啟用的。例如,把數(shù)據(jù)寫到特定隊(duì)列可觸發(fā)一繼續(xù)事件,該事件可啟用繼續(xù)方法412。繼續(xù)方法412找到等待該資源的掛起遠(yuǎn)程方法的位置并把它標(biāo)為可運(yùn)行。最終,遠(yuǎn)程方法資源管理器322把線程和其它資源分派給先前掛起的遠(yuǎn)程方法。使用存儲在狀態(tài)存儲器414中的執(zhí)行狀態(tài)418和RPC狀態(tài)408,以保證遠(yuǎn)程方法416繼續(xù)被掛起前的適當(dāng)點(diǎn)處的處理。
在操作中,把掛起和繼續(xù)方法一起使用,以管理服務(wù)器系統(tǒng)312上的線程和其它資源。圖5是示出依據(jù)本發(fā)明的方法和系統(tǒng)掛起和繼續(xù)一遠(yuǎn)程調(diào)用所執(zhí)行的步驟的流程圖。
最初,服務(wù)器312接收來自客戶302上的遠(yuǎn)程方法調(diào)用306的請求來處理遠(yuǎn)程方法416。相應(yīng)地,遠(yuǎn)程方法框架315對在請求中發(fā)送的數(shù)據(jù)和參數(shù)進(jìn)行去編組(步驟506)。在這些數(shù)據(jù)和參數(shù)被遠(yuǎn)程方法框架315解碼后,把它們傳送到遠(yuǎn)程方法416。
服務(wù)器312的遠(yuǎn)程方法運(yùn)行時(shí)間向客戶302上的遠(yuǎn)程方法運(yùn)行時(shí)間309指示服務(wù)器312已接收到啟用遠(yuǎn)程方法416的請求并正在處理該請求(步驟507)。即使遠(yuǎn)程方法416被掛起且線程和其它資源被釋放時(shí),客戶應(yīng)用程序304繼續(xù)接收服務(wù)器312正在處理該請求的指示。
遠(yuǎn)程方法資源管理器322把這些線程和其它資源分派給將要被啟用的遠(yuǎn)程方法416(步驟508)。從線程池402中的可獲得線程406中取得分派給遠(yuǎn)程方法416的線程。可使用多個(gè)線程來平行地處理幾個(gè)遠(yuǎn)程方法或任務(wù)。假設(shè)可獲得這些線程和其它資源,則遠(yuǎn)程方法運(yùn)行時(shí)間314代表客戶應(yīng)用程序304啟用遠(yuǎn)程方法416(步驟510)。如果遠(yuǎn)程方法資源管理器不能把一線程或其它資源分派給遠(yuǎn)程方法416,則把它添加到等待釋放來自其它進(jìn)程的線程或其它資源的執(zhí)行隊(duì)列中。
遠(yuǎn)程方法416包括用于確定是否存在掛起狀態(tài)的指令(步驟512)。這些指令還包括確定何時(shí)存在繼續(xù)狀態(tài)的信息。掛起狀態(tài)發(fā)生在遠(yuǎn)程方法416依賴一不能獲得的資源或還未發(fā)生某一事件時(shí)。相反,繼續(xù)事件發(fā)生在該資源可獲得或該事件已發(fā)生時(shí)。對于掛起狀態(tài)的例子,假設(shè)遠(yuǎn)程方法416在對數(shù)據(jù)點(diǎn)進(jìn)行采樣并在每個(gè)采樣之間暫停了很長的時(shí)間間隔。在此長的暫停期間,遠(yuǎn)程方法416可被阻塞而等待定時(shí)器事件指示下一時(shí)間間隔的結(jié)束。
在檢測到掛起狀態(tài)時(shí),遠(yuǎn)程方法416釋放資源并向遠(yuǎn)程事件處理器323登記各條繼續(xù)指令,以監(jiān)測某些資源和事件(步驟516)。接著,掛起遠(yuǎn)程方法416的進(jìn)一步處理,并等待特定繼續(xù)事件以繼續(xù)處理(步驟518)。
當(dāng)發(fā)生繼續(xù)事件時(shí),把資源分派給遠(yuǎn)程方法且遠(yuǎn)程方法重新開始處理(步驟520)。繼續(xù)事件是在一掛起的遠(yuǎn)程方法進(jìn)行進(jìn)一步處理所依賴的資源可獲得或事件發(fā)生時(shí)所產(chǎn)生的事件。遠(yuǎn)程事件處理器323處理掛起的遠(yuǎn)程方法416所登記的繼續(xù)指令。遠(yuǎn)程方法完成該任務(wù)并把結(jié)果返還客戶應(yīng)用程序304(步驟514)。應(yīng)理解,在完成一任務(wù)并把結(jié)果返還客戶前可把遠(yuǎn)程方法掛起和繼續(xù)許多次。
遠(yuǎn)程方法的掛起附圖6是依據(jù)本發(fā)明的方法和系統(tǒng)掛起一遠(yuǎn)程調(diào)用所執(zhí)行的步驟的流程圖。最初,遠(yuǎn)程方法416監(jiān)測到已發(fā)生掛起事件并選擇釋放線程和其它資源(步驟602)。由掛起方法416把遠(yuǎn)程方法標(biāo)為掛起。在被掛起前,遠(yuǎn)程方法416給遠(yuǎn)程方法資源管理器322提供執(zhí)行狀態(tài)418、RPC狀態(tài)408并釋放線程和其它資源(步驟604)。遠(yuǎn)程方法資源管理器322把這些線程放回可獲得的線程406中?;蛘撸h(yuǎn)程方法416可選擇掛起處理而不釋放任何線程或資源。
執(zhí)行狀態(tài)418記錄有關(guān)遠(yuǎn)程方法418被掛起時(shí)的狀態(tài)信息,包括局部變量、程序計(jì)數(shù)器和有關(guān)遠(yuǎn)程方法416的任何其它信息。如上所述,RPC狀態(tài)408記錄在遠(yuǎn)程方法416被掛起時(shí)與諸如RMI等RPC系統(tǒng)有關(guān)的狀態(tài)信息。RPC狀態(tài)408使RPC系統(tǒng)在遠(yuǎn)程方法416繼續(xù)執(zhí)行時(shí)與客戶通信并返還結(jié)果。
接著,遠(yuǎn)程方法資源管理器322存儲RPC狀態(tài)408和執(zhí)行狀態(tài)418(步驟608)。遠(yuǎn)程方法資源管理器322存儲此狀態(tài)信息以在將來的某時(shí)繼續(xù)處理掛起的遠(yuǎn)程方法。遠(yuǎn)程方法416還向監(jiān)測某些資源和事件的遠(yuǎn)程事件處理器323登記各繼續(xù)指令。一般,繼續(xù)指令用于對數(shù)據(jù)繼續(xù)預(yù)處理并與適當(dāng)?shù)膾炱疬M(jìn)程聯(lián)系。最后,掛起遠(yuǎn)程方法416的進(jìn)一步處理并等待繼續(xù)事件的發(fā)生(步驟610)。
遠(yuǎn)程方法的繼續(xù)圖7是依據(jù)本發(fā)明的方法和系統(tǒng)繼續(xù)諸如遠(yuǎn)程方法41等先前掛起的遠(yuǎn)程方法所執(zhí)行的步驟的流程圖。通常,在滿足特定條件時(shí)異步地發(fā)生此進(jìn)程的每一步驟。
最初,遠(yuǎn)程事件處理器323接收已發(fā)生特定繼續(xù)事件的指令。遠(yuǎn)程事件處理器323把繼續(xù)事件與一特定遠(yuǎn)程方法相關(guān)聯(lián)(步驟702)并啟用相應(yīng)的繼續(xù)指令。繼續(xù)事件是在掛起的遠(yuǎn)程方法的進(jìn)一步處理所依賴的資源可獲得或事件發(fā)生時(shí)所產(chǎn)生的事件。例如,繼續(xù)事件可發(fā)生在把信息寫到掛起的遠(yuǎn)程方法等待讀取的隊(duì)列時(shí)。
繼續(xù)指令調(diào)用繼續(xù)方法412,該繼續(xù)方法412把掛起的遠(yuǎn)程方法416標(biāo)為可運(yùn)行進(jìn)程。最終,遠(yuǎn)程方法資源管理器322發(fā)現(xiàn)掛起方法416的狀態(tài)指示該遠(yuǎn)程方法現(xiàn)在可運(yùn)行并可繼續(xù)處理(步驟704)。步驟704通常是一異步進(jìn)程,它發(fā)生在遠(yuǎn)程方法資源管理器檢查掛起進(jìn)程時(shí),它在遠(yuǎn)程進(jìn)程的狀態(tài)變?yōu)榭蛇\(yùn)行時(shí)不是必要的。遠(yuǎn)程方法資源管理器322把諸如線程等資源分派給遠(yuǎn)程方法416(步驟706)。
遠(yuǎn)程方法運(yùn)行時(shí)間314裝載來自狀態(tài)存儲器414的執(zhí)行狀態(tài)418和RPC狀態(tài)408。執(zhí)行狀態(tài)418使遠(yuǎn)程方法416準(zhǔn)備繼續(xù)它在被掛起前停止處的處理(步驟708)。為了以軟件來實(shí)現(xiàn),遠(yuǎn)程方法416可以是幾段相關(guān)的代碼,每一段都是在前一代碼部分在掛起前停止時(shí)開始的。或者,可把遠(yuǎn)程方法416實(shí)現(xiàn)為在代碼段中的不同點(diǎn)處開始執(zhí)行的單個(gè)代碼段。如上所述,RPC狀態(tài)408使諸如RMI 218等RPC系統(tǒng)繼續(xù)處理并把結(jié)果返還適當(dāng)?shù)倪h(yuǎn)程方法調(diào)用306。
遠(yuǎn)程方法運(yùn)行時(shí)間314使遠(yuǎn)程方法416繼續(xù)執(zhí)行。然后,遠(yuǎn)程方法416使用所分配的線程和其它資源繼續(xù)服務(wù)器上的處理(步驟710)。最終,遠(yuǎn)程方法416產(chǎn)生結(jié)果,并把這些結(jié)果提供給遠(yuǎn)程方法框架315以繼續(xù)編碼和分組打包(packeting)(步驟712)。經(jīng)由網(wǎng)絡(luò)310把這些經(jīng)編碼的結(jié)果傳送給遠(yuǎn)程方法承接程序308,在這里對這些結(jié)果進(jìn)行解碼并提供給遠(yuǎn)程方法調(diào)用306(步驟714)。
雖然為了說明在這里描述了特定的實(shí)施例,但可進(jìn)行各種修改而不背離本發(fā)明的精神和范圍。相應(yīng)地,本發(fā)明不限于以上所述的實(shí)施例,而是由附加的權(quán)利要求書的等價(jià)物的整個(gè)范圍來限定。
權(quán)利要求
1.一種在一具有資源的服務(wù)器系統(tǒng)上執(zhí)行的方法,所述服務(wù)器系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到一客戶系統(tǒng)并使一遠(yuǎn)程方法掛起處理及釋放相應(yīng)資源給服務(wù)器系統(tǒng),其特征在于所述方法包括以下步驟通過使用一遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)所發(fā)送的一遠(yuǎn)程方法調(diào)用來接收來自一客戶系統(tǒng)的請求,還包括以下子步向客戶系統(tǒng)指示服務(wù)器系統(tǒng)已接收到啟用一遠(yuǎn)程方法的請求;把資源分派給該遠(yuǎn)程方法;啟用該遠(yuǎn)程方法;確定該遠(yuǎn)程方法是否依賴于不可獲得的任何資源或還未發(fā)生的事件;掛起遠(yuǎn)程方法的進(jìn)一步處理,并在該遠(yuǎn)程方法依賴于不可獲得的資源或還未發(fā)生的事件時(shí)從該遠(yuǎn)程方法釋放資源,還包括以下子步釋放先前分派給該遠(yuǎn)程方法系統(tǒng)的資源以由服務(wù)器系統(tǒng)上的其它進(jìn)程和方法所使用;提供與該遠(yuǎn)程方法有關(guān)的執(zhí)行狀態(tài)以及與此遠(yuǎn)程方法調(diào)用有關(guān)的遠(yuǎn)程過程調(diào)用(RPC)狀態(tài),以在隨后的某一時(shí)間周期繼續(xù)處理此遠(yuǎn)程方法;以及阻塞遠(yuǎn)程方法的進(jìn)一步處理,直到釋放不可獲得的資源且遠(yuǎn)程方法可獲得該資源或出現(xiàn)了引起遠(yuǎn)程方法掛起的事件。
2.一種在一具有多個(gè)資源的服務(wù)器系統(tǒng)上執(zhí)行的方法,所述服務(wù)器系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到一客戶系統(tǒng),以使先前掛起的遠(yuǎn)程方法在服務(wù)器系統(tǒng)上繼續(xù)處理,其特征在于所述方法包括以下步驟接收已發(fā)生與掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示,其中該繼續(xù)事件是在可獲得該遠(yuǎn)程方法所需的資源或先前引起該遠(yuǎn)程方法掛起的事件發(fā)生時(shí)產(chǎn)生的;把資源分派給該遠(yuǎn)程方法,以準(zhǔn)備繼續(xù)處理,還包括以下子步向遠(yuǎn)程方法資源管理器指示該遠(yuǎn)程方法可繼續(xù)處理,以及把由遠(yuǎn)程方法資源管理器所控制的資源分配給該遠(yuǎn)程方法;利用所分派的資源繼續(xù)遠(yuǎn)程方法的執(zhí)行,包括以下子步以執(zhí)行狀態(tài)和具有RPC狀態(tài)的遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)對此遠(yuǎn)程方法進(jìn)行初始化,其中執(zhí)行狀態(tài)包括與該遠(yuǎn)程方法在被掛起前有關(guān)的信息,RPC狀態(tài)包括有關(guān)遠(yuǎn)程方法調(diào)用的信息;從該遠(yuǎn)程方法產(chǎn)生結(jié)果;以及把結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序。
3.一種在一服務(wù)器系統(tǒng)上執(zhí)行的方法,以使一遠(yuǎn)程方法掛起處理并把資源釋放給服務(wù)器系統(tǒng),所述服務(wù)器系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到一客戶系統(tǒng),其特征在于所述方法包括以下步驟接收來自客戶系統(tǒng)上的遠(yuǎn)程方法調(diào)用的請求;把系統(tǒng)資源分派給與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;啟用與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;確定處理該遠(yuǎn)程方法所需的通用資源的可獲得性;以及在遠(yuǎn)程方法依賴于不可獲得的通用資源時(shí)掛起遠(yuǎn)程方法的進(jìn)一步處理。
4.如權(quán)利要求3所述的方法,其特征在于服務(wù)器系統(tǒng)包括處理器、主存儲裝置、輔存儲裝置、顯示裝置以及輸入/輸出機(jī)構(gòu)。
5.如權(quán)利要求3所述的方法,其特征在于系統(tǒng)資源包括線程。
6.如權(quán)利要求3所述的方法,其特征在于通用資源包括數(shù)據(jù)。
7.如權(quán)利要求3所述的方法,其特征在于該請求是使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)發(fā)送的。
8.如權(quán)利要求3所述的方法,其特征在于掛起步驟還包括以下子步,把系統(tǒng)資源和通用資源釋放給服務(wù)器系統(tǒng);以及阻塞遠(yuǎn)程方法的進(jìn)一步處理,直到釋放不可獲得的資源且遠(yuǎn)程方法可獲得該資源。
9.如權(quán)利要求8所述的方法,其特征在于掛起方法還包括提供與遠(yuǎn)程方法有關(guān)的執(zhí)行狀態(tài)以及與遠(yuǎn)程方法調(diào)用有關(guān)的遠(yuǎn)程過程調(diào)用(RPC)狀態(tài),以在隨后的時(shí)間周期繼續(xù)處理該遠(yuǎn)程方法。
10.一種在一服務(wù)器系統(tǒng)上執(zhí)行的方法,以使先前掛起的遠(yuǎn)程方法在服務(wù)器系統(tǒng)上繼續(xù)處理并對客戶系統(tǒng)的客戶應(yīng)用程序產(chǎn)生結(jié)果,所述客戶系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到服務(wù)器系統(tǒng),其特征在于所述方法包括以下步驟接收已發(fā)生與掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示;把系統(tǒng)資源和通用資源分派給該遠(yuǎn)程方法,以準(zhǔn)備繼續(xù)處理利用所分派的資源繼續(xù)遠(yuǎn)程方法的執(zhí)行;從該遠(yuǎn)程方法產(chǎn)生結(jié)果;以及把結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序。
11.如權(quán)利要求10所述的方法,其特征在于服務(wù)器系統(tǒng)包括處理器、主存儲裝置、輔存儲裝置、顯示裝置以及輸入/輸出機(jī)構(gòu)。
12.如權(quán)利要求10所述的方法,其特征在于系統(tǒng)資源包括線程。
13.如權(quán)利要求10所述的方法,其特征在于通用資源包括數(shù)據(jù)。
14.如權(quán)利要求10所述的方法,其特征在于繼續(xù)遠(yuǎn)程方法的執(zhí)行的步驟還包括以下子步以執(zhí)行狀態(tài)和具有RPC狀態(tài)的遠(yuǎn)程過程調(diào)用(RPC)系統(tǒng)對此遠(yuǎn)程方法進(jìn)行初始化,其中執(zhí)行狀態(tài)包括與該遠(yuǎn)程方法在被掛起前有關(guān)的信息,RPC狀態(tài)包括有關(guān)遠(yuǎn)程方法調(diào)用的信息;以及從該遠(yuǎn)程方法產(chǎn)生結(jié)果。
15.如權(quán)利要求10所述的方法,其特征在于發(fā)送步驟使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)。
16.一種計(jì)算機(jī)可讀媒體,它包含通過以下步驟使得在一計(jì)算機(jī)服務(wù)器系統(tǒng)上執(zhí)行的遠(yuǎn)程方法掛起處理并把資源分派給計(jì)算機(jī)服務(wù)器系統(tǒng)的指令接收來自客戶系統(tǒng)上的遠(yuǎn)程方法調(diào)用的請求;把系統(tǒng)資源分派給與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;啟用與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;確定處理該遠(yuǎn)程方法所需的通用資源的可獲得性;以及在遠(yuǎn)程方法依賴于不可獲得的通用資源時(shí)掛起遠(yuǎn)程方法的進(jìn)一步處理。
17.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其特征在于系統(tǒng)資源包括線程。
18.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其特征在于通用資源包括數(shù)據(jù)。
19.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其特征在于該請求是使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)發(fā)送的。
20.如權(quán)利要求16所述的計(jì)算機(jī)可讀媒體,其特征在于掛起步驟還包括以下模塊,釋放模塊,把系統(tǒng)資源和通用資源釋放給服務(wù)器系統(tǒng);以及阻塞模塊,用于阻塞遠(yuǎn)程方法的進(jìn)一步處理,直到釋放不可獲得的資源且遠(yuǎn)程方法可獲得該資源。
21.一種計(jì)算機(jī)可讀媒體,它包含通過以下步驟使得先前被掛起的遠(yuǎn)程方法繼續(xù)在服務(wù)器系統(tǒng)上的處理并對客戶系統(tǒng)上的客戶應(yīng)用程序產(chǎn)生結(jié)果的指令接收已發(fā)生與掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示;把系統(tǒng)資源和通用資源分派給該遠(yuǎn)程方法,以準(zhǔn)備繼續(xù)處理利用所分派的資源繼續(xù)遠(yuǎn)程方法的執(zhí)行;從該遠(yuǎn)程方法產(chǎn)生結(jié)果;以及把結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序。
22.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其特征在于系統(tǒng)資源包括線程。
23.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其特征在于通用資源包括數(shù)據(jù)。
24.如權(quán)利要求21所述的計(jì)算機(jī)可讀媒體,其特征在于發(fā)送使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)。
25.一種用于使一遠(yuǎn)程方法掛起處理并把資源釋放給一服務(wù)器系統(tǒng)的設(shè)備,所述服務(wù)器系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到一客戶系統(tǒng),其特征在于所述設(shè)備包括接收器模塊,構(gòu)成為接收來自客戶系統(tǒng)上的遠(yuǎn)程方法調(diào)用的請求;分派模塊,構(gòu)成為把系統(tǒng)資源分派給與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;啟用模塊,構(gòu)成為啟用與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法;確定模塊,構(gòu)成為確定處理該遠(yuǎn)程方法所需的通用資源的可獲得性;以及掛起模塊,構(gòu)成為在遠(yuǎn)程方法依賴于不可獲得的通用資源時(shí)掛起遠(yuǎn)程方法的進(jìn)一步處理。
26.如權(quán)利要求25所述的設(shè)備,其特征在于服務(wù)器系統(tǒng)包括處理器、主存儲裝置、輔存儲裝置、顯示裝置以及輸入/輸出機(jī)構(gòu)。
27.如權(quán)利要求25所述的設(shè)備,其特征在于系統(tǒng)資源包括線程。
28.如權(quán)利要求25所述的設(shè)備,其特征在于通用資源包括數(shù)據(jù)。
29.如權(quán)利要求25所述的設(shè)備,其特征在于該請求是使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)發(fā)送的。
30.如權(quán)利要求25所述的設(shè)備,其特征在于掛起模塊還包括,釋放模塊,構(gòu)成為把系統(tǒng)資源和通用資源釋放給服務(wù)器系統(tǒng);以及阻塞模塊,構(gòu)成為阻塞遠(yuǎn)程方法的進(jìn)一步處理直到釋放不可獲得的資源且遠(yuǎn)程方法可獲得該資源。
31.一種用于使先前掛起的遠(yuǎn)程方法繼續(xù)在一服務(wù)器系統(tǒng)上的處理并對一客戶系統(tǒng)上的客戶應(yīng)用程序產(chǎn)生結(jié)果的設(shè)備,所述客戶系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到服務(wù)器系統(tǒng),其特征在于所述設(shè)備包括接收器模塊,構(gòu)成以接收已發(fā)生與掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示;分派模塊,構(gòu)成為把系統(tǒng)資源和通用資源分派給該遠(yuǎn)程方法,以準(zhǔn)備繼續(xù)處理繼續(xù)模塊,構(gòu)成為利用所分派的資源繼續(xù)遠(yuǎn)程方法的執(zhí)行;產(chǎn)生模塊,構(gòu)成為從該遠(yuǎn)程方法產(chǎn)生結(jié)果;以及發(fā)送模塊,構(gòu)成為把結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序。
32.如權(quán)利要求31所述的設(shè)備,其特征在于服務(wù)器系統(tǒng)包括處理器、主存儲裝置、輔存儲裝置、顯示裝置以及輸入/輸出機(jī)構(gòu)。
33.如權(quán)利要求31所述的設(shè)備,其特征在于系統(tǒng)資源包括線程。
34.如權(quán)利要求31所述的設(shè)備,其特征在于通用資源包括數(shù)據(jù)。
35.如權(quán)利要求31所述的設(shè)備,其特征在于發(fā)送模塊使用遠(yuǎn)程方法啟用(RMI)系統(tǒng)。
36.一種耦合到一服務(wù)器系統(tǒng)的設(shè)備,用于使一遠(yuǎn)程方法掛起處理并把資源釋放給該服務(wù)器系統(tǒng),所述服務(wù)器系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到一客戶系統(tǒng),其特征在于所述設(shè)備包括用于接收來自客戶系統(tǒng)上的遠(yuǎn)程方法調(diào)用的請求的裝置用于把系統(tǒng)資源分派給與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法的裝置;用于啟用與該服務(wù)器系統(tǒng)有關(guān)的遠(yuǎn)程方法的裝置;用于確定處理該遠(yuǎn)程方法所需的通用資源的可獲得性的裝置;以及用于在遠(yuǎn)程方法依賴于不可獲得的通用資源時(shí)掛起遠(yuǎn)程方法的進(jìn)一步處理的裝置。
37.如權(quán)利要求36所述的設(shè)備,其特征在于還包括可操作地耦合到服務(wù)器系統(tǒng)的客戶系統(tǒng)。
38.一種耦合到一服務(wù)器系統(tǒng)的設(shè)備,用于使先前掛起的遠(yuǎn)程方法繼續(xù)在一服務(wù)器系統(tǒng)上的處理并對一客戶系統(tǒng)上的客戶應(yīng)用程序產(chǎn)生結(jié)果的設(shè)備,所述客戶系統(tǒng)經(jīng)由一網(wǎng)絡(luò)可操作地耦合到服務(wù)器系統(tǒng),其特征在于所述設(shè)備包括用于接收已發(fā)生與掛起的遠(yuǎn)程方法有關(guān)的繼續(xù)事件的指示的裝置;用于把系統(tǒng)資源和通用資源分派給該遠(yuǎn)程方法,以準(zhǔn)備繼續(xù)處理的裝置用于利用所分派的資源繼續(xù)遠(yuǎn)程方法的執(zhí)行的裝置;用于從該遠(yuǎn)程方法產(chǎn)生結(jié)果的裝置;以及用于把結(jié)果從服務(wù)器系統(tǒng)發(fā)送到客戶系統(tǒng)上的客戶應(yīng)用程序的裝置。
39.如權(quán)利要求38所述的設(shè)備,其特征在于還包括可操作地耦合到服務(wù)器系統(tǒng)的客戶系統(tǒng)。
全文摘要
提供了一種用于使阻塞的遠(yuǎn)程方法把線程和其它資源釋放給服務(wù)器系統(tǒng)上的其它方法的方法和設(shè)備。在一分布式計(jì)算環(huán)境中,給遠(yuǎn)程方法分派大量網(wǎng)絡(luò)資源,但在遠(yuǎn)程方法等待諸如另一進(jìn)程的寫操作等操作完成時(shí)阻塞遠(yuǎn)程方法。在阻塞了足夠的遠(yuǎn)程方法時(shí),線程和其它網(wǎng)絡(luò)資源可能用完。請求服務(wù)器服務(wù)的客戶系統(tǒng)可經(jīng)歷較慢的響應(yīng)時(shí)間。此方法和系統(tǒng)提供了一種使遠(yuǎn)程方法在被阻塞時(shí)把諸如線程等網(wǎng)絡(luò)資源釋放給其它方法使用的技術(shù)。一旦解決使遠(yuǎn)程方法被阻塞的情況時(shí),遠(yuǎn)程方法繼續(xù)執(zhí)行。該技術(shù)使得高容量的客戶-服務(wù)器交易系統(tǒng)可更有效地利用分布式計(jì)算環(huán)境中的線程和其它資源。
文檔編號G06F15/16GK1298502SQ99805303
公開日2001年6月6日 申請日期1999年2月18日 優(yōu)先權(quán)日1998年2月26日
發(fā)明者K·C·R·C·阿諾德, A·M·沃爾蕾斯 申請人:太陽微系統(tǒng)公司