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

在移動應(yīng)用程序環(huán)境中使用的產(chǎn)品的制作方法

文檔序號:7649978閱讀:109來源:國知局
專利名稱:在移動應(yīng)用程序環(huán)境中使用的產(chǎn)品的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及移動應(yīng)用系統(tǒng),特別是涉及可以加載均衡能夠利用兼容多種低層傳輸協(xié)議的消息系統(tǒng),跨越不同種類的移動通信網(wǎng)創(chuàng)建動態(tài)web頁,以優(yōu)化用戶感知性能的移動應(yīng)用的移動應(yīng)用環(huán)境。
背景技術(shù)
如今對移動計算和網(wǎng)絡(luò)連接性的需求是那些計算設(shè)備發(fā)展背后的主要驅(qū)動力。臺式個人計算機(jī)(PC)已經(jīng)演變成了便攜式筆記本電腦。特別是近來,各種移動手持電子類消費(fèi)品和內(nèi)置設(shè)備,包括個人數(shù)字助理(PDA)、蜂窩電話和智能尋呼機(jī)已經(jīng)具有了相當(dāng)顯著的計算能力。目前,這些消費(fèi)類設(shè)備開始通過各種通信網(wǎng)絡(luò),如有線或無線LAN、蜂窩、藍(lán)牙、802.11b(Wi-Fi)無線,以及通用分組無線業(yè)務(wù)(GPRS)移動電話網(wǎng),以數(shù)據(jù)通信的形式互相通話并且與傳統(tǒng)的服務(wù)器計算機(jī)進(jìn)行通話,因此網(wǎng)絡(luò)連通性正迅速成為這些消費(fèi)類設(shè)備的整體部分。
移動計算設(shè)備的發(fā)展對人們共享信息的方式已經(jīng)具有了重大的影響,并且正在改變著個人和工作的環(huán)境。傳統(tǒng)上,由于PC機(jī)固定在辦公桌上不容易移動,因此只可能在安裝了相應(yīng)軟件的PC機(jī)所在的位置工作和處理數(shù)據(jù)。但是現(xiàn)在,移動計算設(shè)備的用戶能夠利用這些設(shè)備的移動性方便地從遠(yuǎn)端訪問和共享信息??缭接嬎銠C(jī)網(wǎng)絡(luò)和移動設(shè)備共享信息的高預(yù)見和強(qiáng)大的方法是通過顯示動態(tài)生成內(nèi)容的Web界面實現(xiàn)的。
但是,移動設(shè)備為應(yīng)用開發(fā)者設(shè)置了一些挑戰(zhàn)。例如,移動設(shè)備通常比常規(guī)計算機(jī)具有更有限的硬件資源。另外,移動設(shè)備易使硬件配置的變化很大,包括不同的計算能力、存儲容量、顯示能力、數(shù)據(jù)輸入方式等。移動通信網(wǎng)絡(luò)還得經(jīng)受有限的網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)能力。因此,移動設(shè)備可能會與網(wǎng)絡(luò)連接、間歇連接或斷開。
第一代移動設(shè)備通常是只請求型設(shè)備或是只從更智能的和資源豐富的服務(wù)器計算機(jī)請求服務(wù)和信息的設(shè)備。服務(wù)器采用標(biāo)準(zhǔn)的軟件架構(gòu),如Java 2 Enterprise Edition(J2EE)平臺。服務(wù)器平臺可以定義和支持允許瘦客戶端應(yīng)用調(diào)用服務(wù)器上執(zhí)行的邏輯指令的編程模型。
如今,隨著針對移動計算設(shè)備的更強(qiáng)大的計算平臺,如PocketPC和Java 2平臺Micro Edition(J2ME)的出現(xiàn),移動設(shè)備已經(jīng)具備做主機(jī)和處理信息并且分擔(dān)更復(fù)雜交互式事物處理的能力。實現(xiàn)移動應(yīng)用程序的流行平臺是Java平臺。它允許同一個Java應(yīng)用程序運(yùn)行在不同的計算設(shè)備上而沒有操作系統(tǒng)和硬件兼容性的問題。Java是一種編程語言,Java程序被編譯成高級機(jī)器獨(dú)立字節(jié)碼,然后由Java虛擬機(jī)翻譯后運(yùn)行。由于Java程序是獨(dú)立于機(jī)器的,因此無需對程序做任何特殊的端口修改就可以運(yùn)行在不同的硬件平臺上。
但是,常規(guī)的移動應(yīng)用平臺通常不如基于服務(wù)器的同級產(chǎn)品強(qiáng)健,并且未能開發(fā)可用于移動設(shè)備和服務(wù)器的資源來保證移動應(yīng)用程序不受移動計算環(huán)境的限制。例如,已知平臺不能令人滿意地均衡加載移動應(yīng)用程序來優(yōu)化他們的用戶隨網(wǎng)絡(luò)負(fù)載和網(wǎng)絡(luò)上設(shè)備負(fù)載而改變的感知性能。另外,這些平臺不提供支持與不同種類移動通信網(wǎng)絡(luò)兼容的多種低層傳輸協(xié)議所必需的服務(wù)。此外,這些平臺不提供使移動計算環(huán)境滿足對系統(tǒng)瞬時故障的容錯性,并且當(dāng)設(shè)備與網(wǎng)絡(luò)連接中斷后繼續(xù)提供服務(wù)的適當(dāng)機(jī)制。
因此,在用于移動設(shè)備的移動應(yīng)用環(huán)境領(lǐng)域,繼續(xù)需要能提供更好的服務(wù)來支持具有更豐富功能的交互式移動應(yīng)用程序的更強(qiáng)健的應(yīng)用環(huán)境。

發(fā)明內(nèi)容
在本發(fā)明的一個方面中,提供了一種形成至少一個接入網(wǎng)絡(luò)的一部分的移動應(yīng)用環(huán)境。該環(huán)境包括含有一套創(chuàng)建動態(tài)web頁面指令的mervlet應(yīng)用集。Mervlet能夠在本地節(jié)點或服務(wù)器節(jié)點上執(zhí)行,每個節(jié)點與接入網(wǎng)絡(luò)耦合,以便響應(yīng)來自在本地節(jié)點執(zhí)行的客戶端應(yīng)用程序的請求,在本地節(jié)點上顯示動態(tài)web頁面。該環(huán)境還包括至少一個與mervlet關(guān)聯(lián)的應(yīng)用程序?qū)傩?。?yīng)用程序?qū)傩园ㄖ辽僖粋€用來表現(xiàn)mervlet的用戶感知性能的性能屬性。環(huán)境還包括與mervlet關(guān)聯(lián)的mervlet引擎。引擎包括具有根據(jù)應(yīng)用程序的屬性操作在本地和服務(wù)器節(jié)點之間準(zhǔn)備執(zhí)行mervlet的第一指令集的策略模塊。
在本發(fā)明的另一個方面中,提供了一種執(zhí)行mervlet應(yīng)用程序的方法。mervlet包括一套在形成至少一個接入網(wǎng)絡(luò)一部分的移動應(yīng)用環(huán)境中創(chuàng)建動態(tài)web頁面的指令集。該方法包括從在與接入網(wǎng)絡(luò)耦合的本地節(jié)點上執(zhí)行的客戶端應(yīng)用程序發(fā)出對mervlet應(yīng)用程序的請求。該方法還包括尋找與接入網(wǎng)絡(luò)耦合的本地節(jié)點或服務(wù)器節(jié)點上存儲的mervlet。該方法還包括當(dāng)在本地節(jié)點上找到mervlet后,在本地節(jié)點上執(zhí)行mervlet以便在本地節(jié)點顯示動態(tài)web頁面。另外,該方法還包括當(dāng)在服務(wù)器節(jié)點上找到了mervlet,根據(jù)應(yīng)用程序?qū)傩詼?zhǔn)備在本地和服務(wù)器節(jié)點之間執(zhí)行mervlet。該方法還包括響應(yīng)本地節(jié)點上的mervlet執(zhí)行準(zhǔn)備,從服務(wù)器節(jié)點向本地節(jié)點轉(zhuǎn)移mervlet和應(yīng)用程序?qū)傩浴T摲椒ㄟ€包括響應(yīng)服務(wù)器節(jié)點上的mervlet執(zhí)行準(zhǔn)備,在服務(wù)器節(jié)點執(zhí)行mervlet以便在本地節(jié)點上顯示動態(tài)web頁面。
在本發(fā)明的另一個方面,提供一種形成至少一個接入網(wǎng)絡(luò)一部分的移動應(yīng)用環(huán)境。該環(huán)境包括從駐留在與接入網(wǎng)絡(luò)耦合的本地節(jié)點上的客戶端應(yīng)用程序發(fā)出對mervlet應(yīng)用程序的請求的裝置。Mervlet應(yīng)用程序工作以創(chuàng)建動態(tài)web頁面。該環(huán)境還包括用來尋找在與接入網(wǎng)絡(luò)耦合的本地節(jié)點或服務(wù)器節(jié)點上存儲的mervlet的裝置。該環(huán)境還包括當(dāng)在本地節(jié)點上找到mervlet后,在本地節(jié)點上執(zhí)行mervlet以便在本地節(jié)點上顯示動態(tài)web頁面的裝置。該環(huán)境還包括當(dāng)在所述服務(wù)器節(jié)點找到所述mervlet時,根據(jù)至少一個應(yīng)用程序?qū)傩詼?zhǔn)備在本地和服務(wù)器節(jié)點之間執(zhí)行mervlet的裝置。應(yīng)用程序?qū)傩园ㄖ辽僖粋€用來表現(xiàn)mervlet的用戶感知性能的特征的性能屬性。另外,該環(huán)境包括響應(yīng)本地節(jié)點上的mervlet的執(zhí)行準(zhǔn)備,從服務(wù)器節(jié)點向本地節(jié)點轉(zhuǎn)動mervlet的裝置。該環(huán)境還包括響應(yīng)服務(wù)器節(jié)點上mervlet的執(zhí)行準(zhǔn)備,在服務(wù)器節(jié)點上執(zhí)行mervlet以便在本地節(jié)點上顯示動態(tài)web頁面的裝置。
在本發(fā)明的另一個方面中,提供一種對在與至少一個接入網(wǎng)絡(luò)耦合的多個計算設(shè)備間對應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的方法,所述至少一個接入網(wǎng)絡(luò)用于在設(shè)備之間進(jìn)行通信。該方法包括在與接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲應(yīng)用程序。該方法還包括測量與應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约?,?yīng)用程序?qū)傩约辽侔ū憩F(xiàn)應(yīng)用程序的客戶感知性能的特征的至少一個性能屬性。該方法還包括從與接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對應(yīng)用程序的請求。另外,該方法還包括根據(jù)應(yīng)用程序?qū)傩约憫?yīng)該請求,在客戶端或服務(wù)器設(shè)備準(zhǔn)備應(yīng)用程序的執(zhí)行。該方法還包括響應(yīng)應(yīng)用程序的執(zhí)行準(zhǔn)備,在客戶端或服務(wù)器設(shè)備上執(zhí)行應(yīng)用程序。
在本發(fā)明的再一個方面中,提供一種對形成至少一個網(wǎng)絡(luò)一部分的應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的系統(tǒng)。該系統(tǒng)包括與為應(yīng)用程序提供不同執(zhí)行環(huán)境的網(wǎng)絡(luò)耦合的多個執(zhí)行模塊。該系統(tǒng)還包括與該網(wǎng)絡(luò)耦合的至少一個收集模塊,所述網(wǎng)絡(luò)衡量與應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约?。?yīng)用程序?qū)傩园ㄖ辽僖粋€表現(xiàn)應(yīng)用程序的用戶感知性能的特征的性能屬性。該系統(tǒng)還包括至少一個與網(wǎng)絡(luò)耦合的策略模塊,所述網(wǎng)絡(luò)根據(jù)應(yīng)用程序的屬性確定至少滿足一個用來確定應(yīng)用程序執(zhí)行環(huán)境的策略的第一執(zhí)行模塊。另外,該系統(tǒng)包括至少一個在第一執(zhí)行模塊上分配應(yīng)用程序的程序分配模塊。
在本發(fā)明的另一個方面中,提供一種對在與至少一個接入網(wǎng)絡(luò)耦合的多個計算設(shè)備間對應(yīng)用程序?qū)崿F(xiàn)負(fù)載均衡的系統(tǒng),所述接入網(wǎng)絡(luò)在設(shè)備之間進(jìn)行通信。該系統(tǒng)包括在與接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲應(yīng)用程序的裝置。該系統(tǒng)還包括測量應(yīng)用程序?qū)傩约难b置,應(yīng)用程序?qū)傩约ㄖ辽僖粋€表現(xiàn)應(yīng)用程序的客戶感知性能的特征的性能屬性。該系統(tǒng)還包括從與接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對應(yīng)用程序的請求的裝置。另外,該系統(tǒng)包括響應(yīng)該請求,根據(jù)應(yīng)用程序?qū)傩约?,在服?wù)器設(shè)備或客戶端設(shè)備之一上準(zhǔn)備執(zhí)行應(yīng)用程序的裝置。該系統(tǒng)還包括響應(yīng)應(yīng)用程序的執(zhí)行準(zhǔn)備,在客戶端和服務(wù)器設(shè)備之一上執(zhí)行應(yīng)用程序的裝置。
在本發(fā)明的另一個方面中,提供一種容錯系統(tǒng)。該容錯系統(tǒng)包括用于在與網(wǎng)絡(luò)耦合的多個模塊之間進(jìn)行通信的可配置的可靠的發(fā)消息系統(tǒng)??煽康陌l(fā)消息系統(tǒng)包括可用來操作以生成消息并且跨越網(wǎng)絡(luò)響應(yīng)該消息以接收回復(fù)的客戶端模塊。可靠的發(fā)消息系統(tǒng)還包括可用來操作以接收消息并且跨越網(wǎng)絡(luò)生成回復(fù)的服務(wù)器模塊??煽康陌l(fā)消息系統(tǒng)還包括響應(yīng)客戶端登錄信號在客戶端模塊上有選擇地執(zhí)行的客戶端登錄代理??蛻舳说卿洿聿僮饕源鎯ο⒑突貜?fù)并且直到收到回復(fù)為止向服務(wù)器模塊發(fā)送消息。另外,可靠的發(fā)消息系統(tǒng)包括響應(yīng)服務(wù)器登錄信號有選擇地在服務(wù)器模塊上執(zhí)行的服務(wù)器登錄代理。服務(wù)器登錄代理操作以存儲消息和回復(fù)并且向客戶端模塊發(fā)送回復(fù)。可靠的發(fā)消息系統(tǒng)還包括與客戶端和服務(wù)器模塊中的至少一個關(guān)聯(lián)的配置代理。配置代理操作以生成客戶端和服務(wù)器的登錄信號。
在本發(fā)明的另一個方面中,提供一種使分布式計算系統(tǒng)容錯的方法。該方法包括在與網(wǎng)絡(luò)連接的多個計算設(shè)備之間傳遞多個消息。多個計算設(shè)備包括可以操作以生成請求消息并且接收回復(fù)消息的第一計算設(shè)備,和可以操作以接收請求消息并且響應(yīng)請求消息來生成回復(fù)消息的第二計算設(shè)備。該方法還包括有選擇地在第一計算設(shè)備上存儲請求消息。該方法還包括有選擇地在第二計算設(shè)備上存儲請求消息。另外,該方法包括有選擇地在第二計算設(shè)備上存儲回復(fù)消息。該方法還包括有選擇地在第一計算設(shè)備上存儲回復(fù)消息。
在本發(fā)明的另一個方面中,提供一種容錯的分布式計算系統(tǒng)。該系統(tǒng)包括在與網(wǎng)絡(luò)連接的多個計算設(shè)備之間傳遞多個消息的裝置。多個計算設(shè)備包括可以操作以生成請求消息并且接收回復(fù)消息的第一計算設(shè)備和可以操作以接收請求消息并且響應(yīng)請求消息以生成回復(fù)消息的第二計算設(shè)備。該系統(tǒng)還包括有選擇地在第一計算設(shè)備上存儲請求消息的裝置。該系統(tǒng)還包括有選擇地在第二計算設(shè)備上存儲請求消息的裝置。另外,該系統(tǒng)包括有選擇地在第二計算設(shè)備上存儲回復(fù)消息的裝置。該系統(tǒng)還包括有選擇地在第一計算設(shè)備上存儲回復(fù)消息的裝置。
在本發(fā)明的另一個方面中,提供一種使分布式計算系統(tǒng)容錯的方法。該方法包括從與網(wǎng)絡(luò)耦合的客戶端模塊生成消息,有地選擇在客戶端模塊存儲消息,并且向與網(wǎng)絡(luò)耦合的服務(wù)器模塊發(fā)送消息。該方法還包括接收消息并且有選擇地在服務(wù)器模塊存儲消息。該方法還包括從服務(wù)器模塊釋放前面的回復(fù)。另外,該方法包括對來自服務(wù)器模塊的消息生成回復(fù)并且有選擇地在服務(wù)器模塊上存儲該回復(fù)。該方法還包括向客戶端模塊發(fā)送該回復(fù)和清楚來自服務(wù)器模塊的消息。該方法還包括接收該回復(fù)并且有選擇地在客戶端模塊上存儲該回復(fù),清除來自客戶端模塊的消息,以及釋放來自客戶端模塊的回復(fù)。


并入說明書并作為說明書的組成部分的

了本發(fā)明的實施例,并與說明書一起解釋了本發(fā)明的優(yōu)點和原理。在附圖中,圖1是表示根據(jù)本發(fā)明的Mervlet應(yīng)用程序環(huán)境的系統(tǒng)組件的方框圖;圖2是表示圖1中的Mervlet應(yīng)用程序環(huán)境的詳細(xì)操作的流程圖;圖3是表示用于圖1中的Mervlet應(yīng)用環(huán)境的移動通信網(wǎng)的高層視圖的方框圖;圖4是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet應(yīng)用程序及其屬性結(jié)構(gòu)的方框圖;圖5是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet應(yīng)用程序生存周期的方框圖;圖6是表示用于圖1中Mervlet應(yīng)用環(huán)境的Mervlet引擎的步驟和整體結(jié)構(gòu)的方框圖;圖7是表示用于圖1中Mervlet應(yīng)用環(huán)境的用戶接口事件的時間線的方框圖;圖8是概括用于圖1中Mervlet應(yīng)用環(huán)境的性能屬性和系統(tǒng)屬性的表;圖9是表示用于圖1中Mervlet應(yīng)用環(huán)境的均衡加載Mervlet的應(yīng)用程序準(zhǔn)備優(yōu)化的詳細(xì)流程圖;圖10是表示用于圖1中Mervlet應(yīng)用環(huán)境的均衡加載Mervlet的網(wǎng)絡(luò)交換優(yōu)化的詳細(xì)流程圖;圖11是表示用于圖1中Mervlet應(yīng)用環(huán)境的可靠的消息系統(tǒng)和Mervlet引擎之間接口的方框圖;圖12是表示圖11中的可靠的消息系統(tǒng)的消息結(jié)構(gòu)的示意圖;圖13是表示圖11中的可靠的消息系統(tǒng)的詳細(xì)操作的流程圖;和
圖14是表示圖11中的可靠的消息系統(tǒng)的不同配置和相關(guān)性能成本的表。
具體實施例方式
現(xiàn)在參考附圖詳細(xì)描述本發(fā)明的實現(xiàn)。下面將利用基于Java的軟件系統(tǒng)來描述本發(fā)明的優(yōu)選實施例。但是,應(yīng)該容易理解基于Java的軟件系統(tǒng)不是實現(xiàn)本發(fā)明的唯一工具,本發(fā)明可以利用其它類型的軟件系統(tǒng)來實現(xiàn)。
1.Mervlet應(yīng)用程序環(huán)境的概述如圖1所示,在根據(jù)本發(fā)明的應(yīng)用程序環(huán)境中,應(yīng)用程序開發(fā)人員創(chuàng)建被稱為“Mervlet”的移動應(yīng)用程序。Mervlet 10是一個能夠創(chuàng)建用于移動計算設(shè)備的動態(tài)web頁面的可執(zhí)行應(yīng)用程序。Mervlet 10包括未翻譯代碼和局部靜態(tài)數(shù)據(jù)。Mervlet 10的未翻譯代碼可以包括用來創(chuàng)建web頁面的用戶接口邏輯和用來為頁面生成動態(tài)內(nèi)容的應(yīng)用程序邏輯。Mervlet 10還可以訪問外部數(shù)據(jù)文件,如ASCII文本文件。此外,與常規(guī)應(yīng)用程序不同,Mervlet 10具有一套與它關(guān)聯(lián)的獨(dú)特的應(yīng)用程序?qū)傩约_@些屬性能夠使其跨通信網(wǎng)絡(luò)動態(tài)地實現(xiàn)Mervlet 10的負(fù)載平衡。Mervlet 10還具有一套允許Mervlet在網(wǎng)絡(luò)中不同設(shè)備上它自己的安全環(huán)境下運(yùn)行的安全屬性集。因此,Mervlet 10具有可重部署動態(tài)web文檔的特征。
Mervlet 10在Mervlet運(yùn)行時間引擎12的控制下執(zhí)行,Mervlet運(yùn)行時間引擎包括客戶化標(biāo)簽庫14、用于系統(tǒng)服務(wù)的一組組件16和核心翻譯器18。Mervlet引擎12可以配置為自恢復(fù)的,以便它可以重新啟動執(zhí)行在系統(tǒng)故障時運(yùn)行的Mervlet集。
Mervlet引擎12利用基于通信系統(tǒng)20的消息通過網(wǎng)絡(luò)從Mervlet向遠(yuǎn)端客戶設(shè)備傳遞內(nèi)容。為了負(fù)載均衡,發(fā)消息系統(tǒng)20還可以通過網(wǎng)絡(luò)傳輸Mervlet 10。例如,發(fā)消息系統(tǒng)20可以利用點對點異步消息收發(fā)來操作請求和回復(fù)消息的通信。另外,Mervlet應(yīng)用程序環(huán)境支持可靠的發(fā)消息系統(tǒng)20,可靠的發(fā)消息系統(tǒng)20能夠從短暫的網(wǎng)絡(luò)和設(shè)備故障中恢復(fù)并且保證消息傳遞到末端??煽康陌l(fā)消息系統(tǒng)20可以配置成允許應(yīng)用程序開發(fā)人員、系統(tǒng)管理員或用戶為不同的恢復(fù)選項選擇用來緩存消息的設(shè)備。但是,本領(lǐng)域技術(shù)人員很容易識別出可在Mervlet應(yīng)用程序環(huán)境中使用的其它類型的通信系統(tǒng),包括使用了由HTTP、SMTP或類似傳輸協(xié)議傳輸?shù)倪h(yuǎn)端過程調(diào)用的系統(tǒng)。
另外,Mervlet引擎12與可配置的高速緩存管理器22有接口,可配置的高速緩存管理器22用來在本地設(shè)備上緩存Mervlet來隱藏網(wǎng)絡(luò)中斷。如果可對設(shè)備的高速緩存編程,那么可以將Mervlet指定的緩存策略下載到設(shè)備上??膳渲玫母咚倬彺婀芾砥?2的緩存機(jī)制允許高速緩存管理器動態(tài)改變它的高速緩存管理策略。
接下來參見圖2和3,在步驟10的操作中,形成通信網(wǎng)絡(luò)一部分的移動設(shè)備或用戶客戶端設(shè)備(UCD)30產(chǎn)生對Mervlet 10的請求。UCD 30執(zhí)行Mervlet引擎12、發(fā)消息系統(tǒng)20和高速緩存管理器22。UCD 30還可以利用象微軟公司的Internet Explorer和Pocket Internet Explorer、以及網(wǎng)景公司的Netscape Navigator的web瀏覽器顯示來自Mervlet 10的信息。Mervlet 10可以遠(yuǎn)程執(zhí)行,或者發(fā)出請求的UCD 30可以在本地執(zhí)行被請求的Mervlet 10。UCD 30利用統(tǒng)一資源標(biāo)識符(“URI”)產(chǎn)生對Mervlet 10的請求。為了允許利用因特網(wǎng)訪問協(xié)議接入Mervlet,URI在網(wǎng)絡(luò)上注冊的名字空間中對Mervlet 10的名稱和地址編碼。
被請求的Mervlet 10可以存儲在本地發(fā)出請求的UCD 30或者是具有足夠存儲器和處理能力來執(zhí)行Mervlet(“主服務(wù)器”)32的網(wǎng)絡(luò)的遠(yuǎn)程節(jié)點,它可以是另一個UCD 34或計算機(jī)服務(wù)器級的設(shè)備36。在步驟12中,發(fā)出請求的UCD 30可以利用現(xiàn)有的資源發(fā)現(xiàn)技術(shù),如Sun微系統(tǒng)公司的JINI定位主服務(wù)器32。主服務(wù)器32必須能夠執(zhí)行Mervlet 10或者在網(wǎng)絡(luò)上定位未示出的輔助服務(wù)器來執(zhí)行Mervlet 10。在后一種情況中,主服務(wù)器32必須向輔助服務(wù)器發(fā)送Mervlet 10并且從發(fā)出請求的UCD 30轉(zhuǎn)發(fā)請求。UCD 30和主服務(wù)器32可以在一個或多個接入網(wǎng)絡(luò)38上互相通信。
在步驟14中,發(fā)出請求的UCD 30首先檢查Mervlet 10是否存儲在設(shè)備的本地高速緩存中。如果是,那么在步驟16中,在那里執(zhí)行Mervlet10。否則,在步驟18中,發(fā)出請求的UCD 30與主服務(wù)器32通信獲得對被請求的Mervlet 10的“訪問”。然后,在步驟20,主服務(wù)器32調(diào)用Mervlet10的負(fù)載均衡策略來優(yōu)化Mervlet 10的用戶感知性能。例如,主服務(wù)器32可以決定是在本地運(yùn)行Mervlet 10(步驟22)還是將它重新部署在發(fā)出請求的UCD 30(步驟24)。在某些情況下,UCD 30為了在它自己的位置運(yùn)行Mervlet 10,可以發(fā)出一個顯式請求。但是,主服務(wù)器32可以忽略這個請求。如果在步驟22中,在主服務(wù)器32上執(zhí)行Mervlet 10,那么結(jié)果會通過Mervlet應(yīng)用程序環(huán)境的發(fā)消息系統(tǒng)20發(fā)送回UCD 30。
主服務(wù)器32可以根據(jù)下面的屬性確定是否在本地還是在發(fā)出請求的UCD 30上運(yùn)行Mervlet 10,這些屬性包括1)UCD和服務(wù)器節(jié)點的存儲器和處理容量,2)兩個節(jié)點中每個的負(fù)載、網(wǎng)絡(luò)帶寬和等待時間,以及3)與Mervlet性能有關(guān)的屬性集。例如,如果Mervlet有很高的用戶交互性,例如游戲應(yīng)用程序,并且UCD具有足夠的硬件資源來執(zhí)行Mervlet,那么服務(wù)器可以確定在UCD上運(yùn)行Mervlet。相反,如果Mervlet是數(shù)據(jù)或需要很強(qiáng)的計算性,而不是交互性,例如,個性化應(yīng)用程序,那么服務(wù)器可以確定在本機(jī)上運(yùn)行Mervlet。但是,本領(lǐng)域技術(shù)人員可以根據(jù)系統(tǒng)監(jiān)視的參數(shù)清楚地識別出也可以用其它的負(fù)載均衡決定。例如,為了改進(jìn)通信能力,主服務(wù)器32和UCD 30可以實現(xiàn)網(wǎng)絡(luò)切換策略來切換設(shè)備之間的接入網(wǎng)絡(luò)。
現(xiàn)在描述上述支持高層執(zhí)行模塊的系統(tǒng)實現(xiàn)。特別地,要說明Mervlet應(yīng)用程序環(huán)境的幾個關(guān)鍵特征,包括1)用于Mervlet的應(yīng)用程序模型,2)Mervlet運(yùn)行時間引擎,3)跨網(wǎng)絡(luò)的用來優(yōu)化Mervlet的用戶感知性能的負(fù)載均衡方案,4)用于可恢復(fù)的Mervlet引擎和可靠的發(fā)消息系統(tǒng)的可配置容錯方案,以及5)可配置的中斷模式操作方案。
2.Mervlet應(yīng)用程序Mervlet 10定義了用于在移動設(shè)備上動態(tài)顯示生成內(nèi)容的web頁面的用戶接口。圖4示出了Mervlet 10的結(jié)構(gòu)。特別是,Mervlet 10利用獨(dú)立于用戶接口邏輯40的平臺,如標(biāo)記語言指令,來控制格式化和顯示web頁面。它還可以處理來自web瀏覽器的請求和回復(fù)。例如,Mervlet 10可以支持使用可以由web瀏覽器解釋的靜態(tài)HTML、DHTML、XHTML、XML和類似格式標(biāo)簽的web頁面。
另外,Mervlet 10利用XML類標(biāo)簽封裝用來為web頁面生成動態(tài)內(nèi)容的應(yīng)用程序邏輯42。應(yīng)用程序邏輯42自己可以駐留在基于服務(wù)器的資源中,如JavaBean或定制的Mervlet標(biāo)簽庫14,頁面可以利用這些XML類標(biāo)簽訪問。Mervlet標(biāo)簽庫14可以是特定設(shè)備上應(yīng)用程序環(huán)境的固有的(native),或者它們也可以在負(fù)載均衡期間重新部署Mervlet時隨Mervlet 10轉(zhuǎn)移。因此,Mervlet 10將動態(tài)web頁面的用戶接口與獨(dú)立于平臺的為可重用的基于組件設(shè)計而生成的內(nèi)容分離。
Mervlet 10還可以通過發(fā)消息系統(tǒng)20實現(xiàn)網(wǎng)絡(luò)連接并且可以接入本地數(shù)據(jù)文件。因此,Mervlet的應(yīng)用程序模型包括用戶接口邏輯40、應(yīng)用程序邏輯42、文件接入46和網(wǎng)絡(luò)接入44。
另外,由性能屬性52和系統(tǒng)屬性54組成的新穎的應(yīng)用程序?qū)傩约?0與Mervlet 10關(guān)聯(lián),用于對網(wǎng)絡(luò)上的Mervlet進(jìn)行動態(tài)的負(fù)載均衡。例如,Mervlet 10可以根據(jù)它的應(yīng)用程序?qū)傩?0跨移動通信網(wǎng)在加載時和運(yùn)行時動態(tài)重新部署,下面會進(jìn)一步描述。
Mervlet 10還可以根據(jù)相關(guān)的安全屬性集56在它自己的安全環(huán)境下執(zhí)行。密封模型決定用戶可以使用哪些資源。利用Java 2安全模型的變體,類加載器和所屬類可以由在此引用的Lslam等人1997年在IEEESoftware上發(fā)表的題為“使用互聯(lián)網(wǎng)內(nèi)容的靈活的安全模型”中討論的策略機(jī)制來修改,一個例外是可以由UCD設(shè)置保護(hù)域。類加載器生成運(yùn)行Mervlet 10的安全環(huán)境。Mervlet 10運(yùn)行之前由設(shè)備簽名并驗證。利用安全屬性56配置的策略模塊實現(xiàn)誰可以信任和允許何種操作的策略。Mervlet引擎12監(jiān)視Mervlet 10在運(yùn)行時的任何接入,并且一旦Mervlet試圖在它的安全環(huán)境之外運(yùn)行就終止它。通過隨著Mervlet 10重新部署安全屬性,Mervlet 10的安全環(huán)境可以在網(wǎng)絡(luò)上的不同設(shè)備轉(zhuǎn)移和重新生成。
上述特征是Mervlet應(yīng)用程序模型特有的并且回避了生成動態(tài)web頁面的其它類型的技術(shù)。Mervlet 10可以作為從Sun微系統(tǒng)公司的“JavaServer PageTM-白皮書”中討論的JavaServer Page(“JSP”)模型演變來的Java應(yīng)用程序組件來實施,“JavaServer PageTM-白皮書”可以在http://java.sun.com/products/jsp/whitepaper.html找到并在此引用?;贘ava的Mervlet實現(xiàn)可以接入J2ME CDC環(huán)境和由Java類使用的資源文件,但是不能訪問JNDI、JMS、JTA、JAF、Java Mail、RMI、JDBC和I IOP類。另外,從JSP派生的Mervlet不能接入AWT或SWING類?;贘2ME實現(xiàn)的Mervlet 10也不允許由Mervlet處理的web頁面內(nèi)的腳本。為了在硬件資源有限的瘦客戶端設(shè)備上優(yōu)化Mervlet的實現(xiàn),在實現(xiàn)Mervlet應(yīng)用程序環(huán)境的網(wǎng)絡(luò)上的所有節(jié)點都存在這些限制。因此,這樣的Mervlet實現(xiàn)是獨(dú)立于平臺的并且能夠調(diào)節(jié)現(xiàn)有Java平臺技術(shù)來滿足瘦客戶端的要求。
除了改變JSP應(yīng)用程序編程接口(“API”),根據(jù)本發(fā)明的基于J2ME實現(xiàn)的Mervlet應(yīng)用程序環(huán)境還改變了傳統(tǒng)JSP和Servlet執(zhí)行的語義,如確定何時何處執(zhí)行Mervlet。下面會更詳細(xì)地描述這種實現(xiàn)方法。
3.Mervlet引擎如圖1所示,在Mervlet引擎12上編譯和執(zhí)行Mervlet 10。引擎12能夠處理從客戶端應(yīng)用程序,例如web瀏覽器對Mervlet 10的請求,并且能夠產(chǎn)生Mervlet 10對客戶端瀏覽器的響應(yīng)。更具體地說,Mervlet引擎12為應(yīng)用程序邏輯42翻譯Mervlet標(biāo)簽。然后,引擎訪問資源或標(biāo)簽庫14來為由Mervlet 10的用戶接口邏輯40定義的web頁面生成動態(tài)內(nèi)容。標(biāo)簽庫14可以是設(shè)備本身的,或者是利用Mervlet 10重新部署的。然后,引擎12將結(jié)果以HTML或XML頁的形式發(fā)送回發(fā)出請求的web頁面。用于應(yīng)用程序邏輯42的任何靜態(tài)格式化標(biāo)簽都直接傳遞到發(fā)出請求的web瀏覽器。
Mervlet引擎12可以運(yùn)行在用于瘦客戶端設(shè)備的J2ME CDC平臺和用于服務(wù)器級設(shè)備的J2EE平臺。J2ME平臺通常需要32位的CPU和至少2M的內(nèi)存。J2EE平臺通常需要至少是Intel奔騰(Pentium)III處理器,128M ROM和300M持續(xù)存儲器。根據(jù)本發(fā)明,用于Mervlet應(yīng)用程序環(huán)境的、支持在運(yùn)行時消耗6M RAM的Mervlet引擎的一種可能配置包括至少32位CPU、10M內(nèi)存和40M持續(xù)存儲器。但是,應(yīng)該理解,這些用于Mervlet應(yīng)用程序環(huán)境的值只意味著說明,而不是限制。在J2EE的環(huán)境中,Mervlet引擎12可以代替J2EE中的web容器和Servlet引擎模型。因此,Mervlet引擎12可以提供具有訪問Java虛擬機(jī)(JVM)、個人Java虛擬機(jī)(PJVM)或其它類型虛擬機(jī)(VM)的Mervlet 10。運(yùn)行在設(shè)備固有操作系統(tǒng)頂層的VM的作用象抽象的計算機(jī)器,接收J(rèn)ava字節(jié)碼,通過動態(tài)地將它們轉(zhuǎn)換成可由本機(jī)操作系統(tǒng)執(zhí)行的形式對它們進(jìn)行翻譯。
如圖5所示,Mervlet引擎12通過應(yīng)用程序編程接口(API)集管理Mervlet 10的生存周期。Mervlet引擎執(zhí)行的動作包括在步驟30,在網(wǎng)絡(luò)上尋找由客戶端應(yīng)用程序請求的Mervlet。所請求的Mervlet可以存儲在發(fā)出請求的客戶端或主服務(wù)器上。當(dāng)找到Mervlet后,Mervlet引擎創(chuàng)建一個Mervlet實例,將它加載到引擎的存儲器中并且在步驟32對它進(jìn)行初始化。當(dāng)初始化完成后,在步驟34,Mervlet準(zhǔn)備接收信息,Mervlet引擎能夠傳遞請求并且處理來自Mervlet的回復(fù)。一旦不再需要Mervlet,在步驟36,Mervlet引擎撤消Mervlet并且刪除它在引擎存儲器中的存在和持續(xù)存儲器中與Mervlet關(guān)聯(lián)的任何數(shù)據(jù)。
在步驟38中,Mervlet引擎可以在故障后重新啟動一個Mervlet。在步驟40,Mervlet引擎還可以在任何時候通知Mervlet它需要存儲它的狀態(tài)。下面結(jié)合Mervlet應(yīng)用程序環(huán)境的容錯性能更詳細(xì)地描述Mervlet引擎利用這些動作從故障中恢復(fù)的能力。
下面是在基于J2ME平臺的Mervlet引擎上實現(xiàn)Mervlet的API集的例子。Mervlet API是從用于Java Servlet接口的標(biāo)準(zhǔn)Java類得來的。Mervlet實現(xiàn)創(chuàng)建了“javax.servlet”類的“javax.mervlet”子類。
這里有10個類被認(rèn)為用于Mervlet API的“javax.mervlet”實現(xiàn)。下面列出了與Servlet實現(xiàn)保持不變的其中5個類。

下面描述的5個類是需要修改語義的。

“Mervlet”類有三個重要方法

Mervlet引擎調(diào)用方法“Init()”來初始化Mervlet。必須在找到Mervlet后并且在Mervlet上調(diào)用了類加載器后才調(diào)用它。必須在允許任何調(diào)用方法“Service()”之前調(diào)用方法“Init()”。在Mervlet上調(diào)用方法“Service()”來允許Mervlet引擎?zhèn)鬟f請求和處理來自Mervlet的回復(fù)。通過在Mervlet上調(diào)用方法“Destroy()”來撤消Mervlet。
在需要參數(shù)的情況下,構(gòu)建Mervlet環(huán)境并且將它傳遞到方法中。因此,開發(fā)人員可以擴(kuò)展“Mervlet”類并且替換方法“Init()”和方法“Service()”,例如,如下

另外,可以用下面兩個附加的方法作為均衡加載Mervlet和從系統(tǒng)失效(crash)恢復(fù)的“Mervlet”類的一部分

當(dāng)試圖從失效中恢復(fù)Mervlet時,Mervlet引擎在調(diào)用方法Init前先調(diào)用方法Restore()來恢復(fù)它自己的狀態(tài)。Mervlet引擎可以在任何時候調(diào)用方法Save()來通知Mervlet存儲它自己的應(yīng)用程序狀態(tài)。但是,Mervlet不應(yīng)該假設(shè)在故障發(fā)生前調(diào)用了方法Save()。
類“MervletContext”指定Mervlet可用的資源。它是類“ServletContext”的一個擴(kuò)展并且包括下列附加資源i)供Mervlet使用的文件;ii)與Mervlet性能有關(guān)的屬性集,包括用戶接口和I/O特征,下面會進(jìn)一步描述;和iii)Mervlet的資源權(quán)利。類“MervletContext”還包括獲得和設(shè)置這些資源中的每一個的方法。
類“MervletRequest”和“MervletResponse”分別是類“ServletRequest”和“ServletResponse”的擴(kuò)展。Mervlet引擎利用下面的抽象發(fā)消息方法生成請求和響應(yīng)

該方法的數(shù)據(jù)格式與用于HTTP-mime編碼的接口格式相同。其它實現(xiàn)可能具有不同的交換格式。
因為Mervlet引擎是多線程的,因此不實現(xiàn)Servlet模型的類“SingleThreadModel”。
接下來參見圖6,現(xiàn)在描述顯示當(dāng)響應(yīng)用戶客戶端設(shè)備30上的客戶端應(yīng)用程序或瀏覽器60對Mervlet 10的請求時,Mervlet引擎12操作的功能方框圖。圖6所示的Mervlet 10可以存儲在用戶客戶端設(shè)備30或主服務(wù)器設(shè)備32上。用戶客戶端設(shè)備30和主服務(wù)器設(shè)備32都執(zhí)行具有核心翻譯機(jī)18的Mervlet引擎12。
首先,在發(fā)出請求的客戶端30上的Mervlet引擎12必須找到Mervlet10。引擎本身由簡單的Mervlet組件構(gòu)成。為了定位或?qū)ふ宜埱蟮腗ervlet,MervletFinder模塊62翻譯請求加載Mervlet的客戶端30中的所有調(diào)用。MervletFinder模塊62利用已知的由高速緩存導(dǎo)出的散列函數(shù)在客戶端30上為被請求的Mervlet 10尋找本地高速緩存。如果找到Mervlet 10,那么MervletFinder模塊62為Mervlet分配存儲器并且從本地高速緩存讀取Mervlet。然后,MervletFinder模塊62調(diào)用Mervlet 10上的方法“Init”,為被請求的Mervlet傳遞配置數(shù)據(jù)來初始化新創(chuàng)建的Mervlet實例。當(dāng)Mervlet 10完成后,它自己調(diào)用方法“Destroy()”。如果Mervlet引擎12想刪除Mervlet 10,那么它可以在它上面調(diào)用方法“Destroy()”。
如果MervletFinder模塊62確定所請求的Mervlet 10不在客戶端30,因為在本地高速緩存上沒有匹配,那么它向主服務(wù)器設(shè)備32查詢Mervlet10。向服務(wù)器32的查詢包括Mervlet 10的名稱、客戶端設(shè)備30的CPU使用、客戶端設(shè)備30的MIPS等級、客戶端設(shè)備30上可用的內(nèi)存和持續(xù)存儲器、以及任何可用的Mervlet 10的性能屬性。主服務(wù)器32可以利用該信息決定是在客戶端30上重新部署Mervlet 10還是利用下面要詳細(xì)描述的負(fù)載均衡方案切換用于服務(wù)器32和客戶端30之間通信的接入網(wǎng)絡(luò)38。
Mervlet引擎12還包括InterceptingMervlet模塊64,它翻譯對到達(dá)主服務(wù)器32的Mervlet 10的請求。當(dāng)來自網(wǎng)絡(luò)的對Mervlet的請求消息到達(dá)后,InterceptingMervlet模塊64在服務(wù)器32上向Mervlet 10派發(fā)消息。為了響應(yīng)對Mervlet 10的請求,InterceptingMervlet模塊64還調(diào)用PolicyMervlet模塊66并且向它傳遞用于發(fā)出請求的客戶端30的系統(tǒng)性能參數(shù)。然后,PolicyMervlet模塊66確定如何均衡加載Mervlet10來優(yōu)化用戶對其的感知性能。PolicyMervlet模塊66由系統(tǒng)管理員設(shè)置。另外,主服務(wù)器32可以同時接受客戶端多個請求,因此PolicyMervlet模塊66和InterceptingMervlet模塊64是多線程的。
特別是,主服務(wù)器32和客戶端30可以如下均衡加載Mervlet 10。服務(wù)器32可以選擇在服務(wù)器上執(zhí)行Mervlet 10并且允許發(fā)出請求的客戶端30與Mervlet進(jìn)行遠(yuǎn)程交互。另外,服務(wù)器32還可以決定向客戶端30發(fā)送Mervlet 10以便在客戶端設(shè)備上執(zhí)行。PolicyMervlet模塊66決定是否利用應(yīng)用程序準(zhǔn)備方案重新部署Mervlet 10,下面會進(jìn)一步描述。另外,服務(wù)器32或客戶端30可以利用網(wǎng)絡(luò)交換方案選擇切換用于互相通信的接入網(wǎng)絡(luò),下面會進(jìn)一步描述。
如果服務(wù)器32決定在服務(wù)器機(jī)器上運(yùn)行被請求的Mervlet 10,那么PolicyMervlet模塊66從服務(wù)器的高速緩存中檢索Mervlet 10并且利用方法“new()”為它分配內(nèi)存。然后,利用合適的Mervlet環(huán)境在Mervlet10調(diào)用方法“Init()”。當(dāng)安全語義與J2EE中的相同時,初始化的Mervlet10實例假設(shè)發(fā)出請求的客戶端可以信任。當(dāng)被請求的Mervlet 10的實例初始化后,它可以訪問服務(wù)器上的本地數(shù)據(jù)。Mervlet 10還可以通過發(fā)消息系統(tǒng)20與客戶端30上的客戶端應(yīng)用程序通信,下面會進(jìn)一步詳細(xì)描述。因此,Mervlet引擎12直接將輸出從Mervlet 10發(fā)送到發(fā)出請求的客戶端30。最后,通過調(diào)用Mervlet中的方法“Destroy()”來消除Mervlet 10。
如果PolicyMervlet模塊66決定應(yīng)該在發(fā)出請求的客戶端30上運(yùn)行被請求的Mervlet 10,那么整理Mervlet并將它發(fā)送到遠(yuǎn)端機(jī)器上。為了重新部署Mervlet 10,引擎12將Mervlet打包到Mervlet存檔(“MAR”)文件68。MAR文件68最好包括1)Mervlet 10和任何關(guān)聯(lián)的標(biāo)簽庫14,2)用于Mervlet的安全環(huán)境屬性56和應(yīng)用程序?qū)傩?0,3)任何與Mervlet10關(guān)聯(lián)的數(shù)據(jù)文件,和4)描述MAR文件內(nèi)容的MAR文件清單。因此,MAR文件68具有客戶端30上的Mervlet引擎12所需外部信息,以生成合適的Mervlet環(huán)境,當(dāng)Mervlet 10啟動時傳遞到它的方法“Init()”。MAR文件68可以被壓縮,散列然后簽名。下載者可以解壓縮,驗證內(nèi)容沒有被破壞并且驗證簽名。
現(xiàn)在我們說明Mervlet應(yīng)用程序環(huán)境如何均衡加載一個Mervlet應(yīng)用環(huán)境并且從系統(tǒng)故障中恢復(fù)。
3.應(yīng)用程序負(fù)載均衡方案現(xiàn)在將更詳細(xì)地描述Mervlet應(yīng)用程序環(huán)境允許Mervlet引擎12均衡加載一個Mervlet 10來優(yōu)化Mervlet的性能的特征。
根據(jù)本發(fā)明的負(fù)載均衡方案是基于用戶與向服務(wù)器32請求Mervlet的用戶客戶端設(shè)備30的交互。更詳細(xì)地說,Mervlet引擎12的PolivyMervlet模塊66使用客戶端用戶接口(“UI”)的事件等待時間的測量來優(yōu)化對Mervlet 10的感知性能。根據(jù)本發(fā)明的Mervlet應(yīng)用程序環(huán)境允許基于事件等待時間的負(fù)載均衡在應(yīng)用程序請求時間和應(yīng)用程序運(yùn)行時間執(zhí)行。
模型負(fù)載均衡方案允許兩種類型的優(yōu)化應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換。應(yīng)用程序準(zhǔn)備策略允許服務(wù)器確定Mervlet在網(wǎng)絡(luò)上的哪個節(jié)點運(yùn)行。網(wǎng)絡(luò)切換策略允許發(fā)出請求的客戶端或服務(wù)器選擇用于服務(wù)器和客戶端之間通信的新的接入網(wǎng)絡(luò)。該模型允許開發(fā)人員創(chuàng)建用于負(fù)載均衡算法的大類。
為了說明利用負(fù)載均衡方案可能得到的性能優(yōu)化,圖7示出了客戶端設(shè)備上用戶接口事件的時間線。在用戶與Mervlet交互期間,用戶在思考和等待時間之間切換。在每次思考時間T結(jié)束后,用戶向Mervlet發(fā)送請求并且等待回復(fù)。Mervlet通常在一個循環(huán)中等待從用戶發(fā)出的請求。在接收到請求后,Mervlet可以執(zhí)行計算和數(shù)據(jù)訪問來完成用戶的請求。然后它將回復(fù)送回。圖7所示的時間線完成了一次這樣的交互作用。
等待時間W是與處理請求有關(guān)的時間。等待時間W可以分解為通信時間C和服務(wù)器計算時間S。通常,在與應(yīng)用程序交互時,用戶感受到的是基于等待時間均值和方差。因此,當(dāng)?shù)却龝r間大約低于預(yù)定閾值時,Mervlet的性能可以得到優(yōu)化。根據(jù)本發(fā)明的負(fù)載均衡方案可以通過將服務(wù)器上的Mervlet重新部署到更接近用戶或者適時地切換客戶端和服務(wù)器之間的接入網(wǎng)絡(luò)來優(yōu)化用于Mervlet的等待時間的均值和方差。
為了Mervlet 10的負(fù)載均衡,Mervlet引擎12的PolicyMervlet模塊66使用包括性能屬性52和系統(tǒng)屬性54的應(yīng)用程序?qū)傩约?0,圖8中對它們進(jìn)行了匯總并且下面會更詳細(xì)地描述。
3.1Mervlet的性能屬性用于Mervlet 10的負(fù)載均衡的應(yīng)用程序?qū)傩?0包括性能屬性集52,它基于兩個標(biāo)準(zhǔn)表現(xiàn)Mervlet1)應(yīng)用程序如何交互,和2)應(yīng)用程序的計算性和數(shù)據(jù)訪問強(qiáng)度如何。直觀上講,開發(fā)人員想提供能將交互式應(yīng)用程序轉(zhuǎn)移到更接近用戶,將高強(qiáng)度數(shù)據(jù)應(yīng)用程序轉(zhuǎn)移到更接近數(shù)據(jù)源,以及允許高計算強(qiáng)度的應(yīng)用程序轉(zhuǎn)移到象服務(wù)器級的更強(qiáng)大的設(shè)備上運(yùn)行的系統(tǒng)。通常,開發(fā)人員編寫J2EE上的服務(wù)器應(yīng)用程序,如JSP和Servlet,或者客戶端的小應(yīng)用程序(applet)之類的Java應(yīng)用程序。例如,一個人通常編寫游戲applet和基于服務(wù)器應(yīng)用程序的銀行業(yè)應(yīng)用系統(tǒng)。相反,Mervlet開發(fā)人員只需要編寫一次應(yīng)用程序,然后PolicyMervlet 66可以利用測量到的性能屬性52將Mervlet 10重新部署到更接近用戶或者切換接入網(wǎng)絡(luò)來提供更好的用于Mervlet的等待時間的均值和方差。
3.1.1表征Mervlet交互更具體地說,用戶在與客戶端設(shè)備30交互和向Mervlet 10請求信息時等待事件,例如,當(dāng)他們傳遞(post)web頁表格并且點擊URL請求信息時。這些動作,包括填寫表格等待響應(yīng)的動作和點擊鏈接獲得頁面的動作都被稱作用戶接口事件。當(dāng)Mervlet 10在客戶端設(shè)備30上運(yùn)行時,所有的等待時間W都花在應(yīng)用程序上。如果Mervlet 10由客戶端設(shè)備30從遠(yuǎn)程在服務(wù)器32上執(zhí)行,那么一部分等待時間W用在與發(fā)出請求的客戶端通信上,即C,而其余的等待時間用在Mervlet自己處理客戶端請求上,即S。
為了Mervlet 10的負(fù)載均衡,Mervlet應(yīng)用程序環(huán)境為每個表格和向它發(fā)送請求的URL測量Mervlet的下列性能屬性等待時間W的均值和方差,服務(wù)器計算時間S和通信時間C。
例如,基于客戶端的HTML可以翻譯所有從客戶端上的瀏覽器到Mervlet的“get”和“post”。這個由Mervlet引擎的InterceptingMervlet模塊處理。當(dāng)執(zhí)行“get”和“post”時,獲得第一個時間標(biāo)記T1。當(dāng)“get”和“post”返回并且在瀏覽器上顯示Mervlet生成的回復(fù)時,獲得第二個時間標(biāo)記T2。另外,Mervlet的回復(fù)消息包括一個指示服務(wù)器計算所用時間的參數(shù)值S。因此,可以得到下列計算W=T2-T1;和W=S+C,其中S=服務(wù)時間;C=計算時間;
W=等待時間;T1=第一時間標(biāo)記;和T2=第二時間標(biāo)記。
服務(wù)器32維護(hù)分別用A(S)、A(C)、A(W)、和V(S)、V(C)和V(W)表示的服務(wù)計算時間、等待時間和通信時間均值和方差的運(yùn)行平均值。另外,為用于發(fā)出請求的客戶端和服務(wù)器之間通信的每個接入網(wǎng)絡(luò)計算參數(shù)W和C均值和方差的運(yùn)行平均值。
如果參數(shù)C和S是連續(xù)隨機(jī)變量,那么可以假設(shè)下列關(guān)系式A(W)=A(C)+A(S);和V(W)=V(C)+V(S)+Cov(V,S),其中V和S的統(tǒng)計協(xié)方差=Cov(V,S)。
此外,如果V和S是統(tǒng)計上獨(dú)立的變量,那么,可以擁有下面的關(guān)系V(W)=V(C)+V(S)因此,用于Mervlet的負(fù)載均衡策略可以通過減小A(C)和V(C)提高用戶對Mervlet的感知性能。
例如,實現(xiàn)應(yīng)用程序準(zhǔn)備優(yōu)化的算法框架可以通過驗證A(W)是否大于預(yù)定閾值來確定Mervlet的等待時間W是否不可接受。另外,通過驗證A(C)是否大于A(S)來確定通信時間C是否對等待時間W有可感覺得到的影響。如果不能接受W并且可以感覺得到C,那么算法會試圖將Mervlet重新部署到另一個設(shè)備上。相反,繼續(xù)在當(dāng)前設(shè)備上運(yùn)行Mervlet。
同樣,可以用來實現(xiàn)網(wǎng)絡(luò)切換優(yōu)化的算法框架確定Mervlet 10使用第一接入網(wǎng)絡(luò)的平均等待時間A(W-網(wǎng)絡(luò)1)是否大于使用第二接入網(wǎng)絡(luò)的平均等待時間A(W-網(wǎng)絡(luò)2)。如果是,算法會切換到第二網(wǎng)絡(luò)network2與Mervlet進(jìn)行通信。
本領(lǐng)域技術(shù)人員會識別出利用性能屬性52可以對Mervlet 10負(fù)載均衡實施其它優(yōu)化算法。負(fù)載均衡方案向應(yīng)用程序設(shè)計者提供了機(jī)會來創(chuàng)建不同算法提高用戶體驗和優(yōu)化用戶接口事件的感知性能。
3.1.2表征服務(wù)器計算時間和數(shù)據(jù)訪問如上所述,服務(wù)器計算時間S用來測量Mervlet為客戶端應(yīng)用程序的一個請求生成回復(fù)所用的全部服務(wù)時間。Mervlet可以用服務(wù)器計算時間S來執(zhí)行內(nèi)部計算和訪問外部數(shù)據(jù)文件,即S=D+I,其中S=服務(wù)時間;D=用于數(shù)據(jù)I/O的時間;和I=用于內(nèi)部計算的時間。
為了獲得表示服務(wù)器計算時間的值S,當(dāng)服務(wù)器上的Mervlet引擎為了響應(yīng)客戶端應(yīng)用程序的請求而調(diào)用Mervlet的方法“Service()”時,啟動服務(wù)器上的計時器。當(dāng)Mervlet生成對請求的回復(fù)時,計時器停止。用計時器的持續(xù)時間測量出服務(wù)器計算時間S。Mervlet引擎的I/O庫作為工具記錄用在數(shù)據(jù)I/O的時間D,和數(shù)據(jù)I/O率,DTP。可以從上面的公式計算用在內(nèi)部計算的時間I。
Mervlet引擎還可以利用服務(wù)器上的計時器記錄運(yùn)行完成時的Mervlet平均總時間,TotalTime。Mervlet的開發(fā)人員可以使用這些參數(shù)來細(xì)化下面會更詳細(xì)討論的負(fù)載均衡算法。
3.1.3性能屬性工具下面是利用J2ME庫解釋Mervlet用戶接口和文件I/O事件的API集的范例。這些API需要對java.net、java.io和java.util進(jìn)行如下修改。
為了解釋所有http請求,通過修改java.net來確定用來測量包括等待時間W、服務(wù)器計算時間S和通信時間C的Mervlet 10的用戶接口事件的性能屬性52。下面的方法用來收集有關(guān)基于表格和URL處理的HTML的信息,如上所述

利用該方法可以記錄帶表格的每個請求/回復(fù)對,并對表格中的所有事件計數(shù)。
另外,提供下面的方法用于數(shù)據(jù)文件的讀和寫

參數(shù)AccessType的數(shù)據(jù)類型可以是讀或?qū)戭愋汀T摲椒▽y量到的性能屬性寫入文件。
3.2系統(tǒng)屬性PolicyMervlet 66除了應(yīng)用程序?qū)傩?0外,還使用系統(tǒng)屬性54作負(fù)載均衡和網(wǎng)絡(luò)切換決定。系統(tǒng)屬性54通常與Mervlet應(yīng)用程序環(huán)境使用的計算設(shè)備的資源和處理能力有關(guān)。更具體地說,如圖8所示,為每個客戶端30和服務(wù)器32記錄如下屬性MIPS等級、CPU使用的均值和方差、內(nèi)存和持續(xù)存儲器的大小、以及設(shè)備所用每個網(wǎng)絡(luò)類型的網(wǎng)絡(luò)等待時間和帶寬的均值和方差。
3.2.1通過儀器操作的系統(tǒng)屬性為了測量系統(tǒng)屬性54,用于J2ME平臺的新庫java.sys.perf使用下面的方法

方法System_cpu_util(Util U)讀取UNIX上的/dev/kern,以獲得UNIX系統(tǒng)上的CPU使用信息。本領(lǐng)域技術(shù)人員會識別出其它操作系統(tǒng)上出現(xiàn)的類似調(diào)用。

方法System_network_bandwidth(bandwidth b,accessnetwork a)利用接入網(wǎng)絡(luò)“a”確定客戶端30和主服務(wù)器32之間的網(wǎng)絡(luò)帶寬。通過從客戶端30向主服務(wù)器32發(fā)送大小S已知的包,回收相同大小的包,然后用包的大小S除以它接收包的時間來計算帶寬。為了更加精確該計算,最好在操作系統(tǒng)中執(zhí)行。

方法sys_network_load_latency(accessnetwork a,latency l)利用互聯(lián)網(wǎng)控制消息協(xié)議(ICMP)確定網(wǎng)絡(luò)等待時間??蛻舳酥芷谛缘叵蚍?wù)器發(fā)送ICMP包并且利用返回值保持已過去的等待時間的平均值。系統(tǒng)管理員可以利用該操作的執(zhí)行設(shè)置頻率。

方法Network_uptime(Netuptime nu,accesslink a)確定客戶端和服務(wù)器之間的網(wǎng)絡(luò)連接有效時的時間百分比。如果ICMP包返回,那么系統(tǒng)假設(shè)網(wǎng)絡(luò)有效,否則無效。
3.3應(yīng)用程序?qū)傩缘氖占头职l(fā)為了決定負(fù)載均衡,所測量的應(yīng)用程序?qū)傩员仨殞ω?fù)載均衡算法有效。應(yīng)用程序準(zhǔn)備優(yōu)化從服務(wù)器上運(yùn)行。網(wǎng)絡(luò)切換優(yōu)化可以從服務(wù)器和客戶端運(yùn)行。有很多方法可以使服務(wù)器和客戶端動態(tài)概括應(yīng)用程序?qū)傩浴?br> 例如,可以通過服務(wù)器上的負(fù)載均衡算法從客戶端的消息獲得發(fā)出請求的客戶端的系統(tǒng)屬性。服務(wù)器可以存儲它自己的系統(tǒng)屬性。
客戶端可以根據(jù)當(dāng)前正在運(yùn)行的Mervlet應(yīng)用程序在本地保持關(guān)于A(W)、A(C)、A(S)、V(W)、V(C)和V(S)的信息。在思考期間,客戶端上另一個獨(dú)立的應(yīng)用程序可以收集不同網(wǎng)絡(luò)上的A(C)信息。這種操作最好以能量守恒方式并且不使客戶端電池過載的情況下執(zhí)行。通過跨每個網(wǎng)絡(luò)接口為Mervlet增加A(S)和V(C)來為每個網(wǎng)絡(luò)收集A(W)。每個測量到的A(W)值可以存儲在用于應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換決定的向量中。
作為選擇,客戶端可以從利用同一個基站或接入點與服務(wù)器通信的公共網(wǎng)絡(luò)上的其它客戶端收集A(C)信息。W、C和S可以按每個應(yīng)用程序或每個用戶每個應(yīng)用程序測量并且存儲在客戶端的高速緩存中??蛻舳说母咚倬彺婵梢酝ㄟ^,例如服務(wù)器與其它客戶端同步。假設(shè)服務(wù)器知道哪些客戶端共享同一個接入點或基站。服務(wù)器會匯總共享同一基站的所有客戶端的信息。然后客戶端高速緩存按照系統(tǒng)管理員設(shè)置的頻率被周期性地發(fā)送到服務(wù)器。系統(tǒng)管理員設(shè)置周期。服務(wù)器匯總數(shù)據(jù)并且當(dāng)客戶端請求時向客戶端發(fā)送該信息加平滑間隔。平滑間隔是表示后續(xù)負(fù)載均衡優(yōu)化之間必須經(jīng)過的時間的預(yù)定值。
客戶端的高速緩存還可以在客戶端之間直接同步。在這種情況下,每個客戶端通過特定網(wǎng)絡(luò),如藍(lán)牙、IRDA或802.11b向其它客戶端廣播高速緩存的信息。這種廣播信息不用通過客戶端和服務(wù)器之間的通信網(wǎng)絡(luò)傳播??蛻舳俗约簠R總數(shù)據(jù)。系統(tǒng)管理員可以修改平滑間隔或者客戶端可以實施分布式一致算法來統(tǒng)一平滑間隔。
只要Mervlet在服務(wù)器上運(yùn)行,服務(wù)器就可以獲得Mervlet的包括所測量的等待、通信和服務(wù)器時間的均值和方差的性能屬性。系統(tǒng)管理員可以選擇在有足夠多有關(guān)性能屬性的測量數(shù)據(jù)使用動態(tài)概述之前Mervlet必須運(yùn)行的次數(shù),例如10次反復(fù)。
3.3.1收集模式Mervlet的性能屬性值可以按每個用戶或每個應(yīng)用程序每個用戶或每個設(shè)備每個應(yīng)用程序每個用戶來收集。如果一個設(shè)備按照每個應(yīng)用程序測量和存儲性能屬性,那么負(fù)載均衡算法可以使用這個獨(dú)立于用戶的信息。另外,為了允許負(fù)載均衡算法調(diào)整到不同用戶的概述,一個設(shè)備可以按照每個應(yīng)用程序每個用戶測量和存儲性能屬性。
可以期望最小化與記錄事件機(jī)制關(guān)聯(lián)的額外開銷。因此,收集性能和系統(tǒng)屬性從內(nèi)存和處理角度來看應(yīng)該是非干擾的。由于用來存儲每個應(yīng)用程序?qū)傩缘臄?shù)據(jù)所需的存儲器相對很小,因此向存儲器寫入該數(shù)據(jù)和讀取系統(tǒng)時鐘應(yīng)該是非干擾的。例如,假設(shè)用戶接口事件發(fā)生在500毫秒到大約1秒,那么支持大約1毫秒粒度的系統(tǒng)時鐘的一個Mervlet應(yīng)用程序環(huán)境的Java實現(xiàn)允許測量與事件有關(guān)的用戶接口時忽略額外開銷。
3.4負(fù)載均衡算法Mervlet應(yīng)用程序環(huán)境可以根據(jù)它的應(yīng)用程序?qū)傩院拖到y(tǒng)屬性利用兩種不同的優(yōu)化應(yīng)用程序準(zhǔn)備和網(wǎng)絡(luò)切換,在應(yīng)用程序加載時和運(yùn)行時均衡加載一個Mervlet。具體地講,當(dāng)用戶請求一個Mervlet時,Mervlet引擎的PolicyMervlet模塊將決定在哪運(yùn)行Mervlet和使用哪個接入網(wǎng)絡(luò)通信。同樣,在運(yùn)行時,Mervlet引擎可以決定重新部署Mervlet或切換接入網(wǎng)絡(luò)來提高用戶的感知性能。
但是,本領(lǐng)域技術(shù)人員很容易識別出下面討論的負(fù)載均衡優(yōu)化可以用于其它移動應(yīng)用程序環(huán)境并且不僅限于Mervlet。例如,開發(fā)人員可以創(chuàng)建名叫Aglet的應(yīng)用程序來向遠(yuǎn)程瀏覽器或其它可以跨網(wǎng)絡(luò)從一臺機(jī)器移植到另一臺機(jī)器的應(yīng)用程序提供內(nèi)容。一個Aglet可以有允許Aglet將它自己發(fā)送到URL中指定的另一個機(jī)器的方法“dispatch(url)”。Aglet系統(tǒng)中的設(shè)備可以有系統(tǒng)數(shù)據(jù)庫中存儲的等待時間的均值和方差的列表。一個Aglet可以通過系統(tǒng)庫訪問該信息并且允許自己編寫任何策略來選擇運(yùn)行的機(jī)器。例如,可以為負(fù)載均衡在Aglet系統(tǒng)上實現(xiàn)下面程式化的編碼序列

在這種情況下,A(W)是Aglet的平均等待時間,URL是瀏覽器機(jī)器上Aglet運(yùn)行時的URL。利用這個方法,Aglet可以1)保留在當(dāng)前機(jī)器上,或者2)將自己轉(zhuǎn)移到瀏覽器所在的機(jī)器上。
3.4.1應(yīng)用程序準(zhǔn)備優(yōu)化接下來參見圖9,利用判定樹顯示應(yīng)用程序準(zhǔn)備優(yōu)化的實現(xiàn)實例。該應(yīng)用程序準(zhǔn)備算法從服務(wù)器上運(yùn)行并且等同于在合適的加載時和運(yùn)行時的應(yīng)用程序,如Mervlet。
應(yīng)用程序準(zhǔn)備算法是基于包括平均通信時間C和服務(wù)器計算時間S的Mervlet 10的平均等待時間W或其它可重部署的應(yīng)用程序。通過將Mervlet10從服務(wù)器32轉(zhuǎn)移到發(fā)出請求的客戶端設(shè)備30,可以將通信時間C減小到大約為0。首先,在步驟50,該算法利用從請求獲得的有關(guān)客戶端的信息確定從Mervlet請求信息的客戶端是否有足夠的存儲器來運(yùn)行。同樣,在步驟52,該算法確定客戶端是否有足夠的由它的MIPS等級衡量的處理能力來運(yùn)行應(yīng)用程序。
接下來,在步驟54,該算法決定由它的CPU使用衡量的服務(wù)器上的計算負(fù)載是否大于預(yù)定的負(fù)載閾值。另外,在步驟54,它還確定與將Mervlet從服務(wù)器轉(zhuǎn)移到客戶端關(guān)聯(lián)的重新部署的額外開銷是否小于預(yù)定的RO_Threshold值??梢岳孟到y(tǒng)管理員設(shè)置的關(guān)系根據(jù)Mervlet的大小來計算重新部署的額外開銷。如果兩個條件都滿足,那么在步驟56,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面執(zhí)行的客戶端。這個序列當(dāng)服務(wù)器變得太忙不能及時處理Mervlet時通過將Mervlet轉(zhuǎn)移到客戶端來幫助提高對Mervlet的感知性能。
否則,在步驟58,該算法確定Mervlet的平均等待時間是否大于預(yù)定的AW_Threshold值。在步驟58,如果滿足該條件,并且由平均等待時間和平均通信時間之差衡量的平均服務(wù)器計算時間小于預(yù)定的AS_Threshold值,并且重部署額外開銷小于預(yù)定的RO_Threshold值,那么在步驟60,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面執(zhí)行的客戶端。當(dāng)在客戶端上重新部署Mervlet使得Mervlet用戶接口事件的等待事件太長時,只要隨轉(zhuǎn)移的服務(wù)器計算時間不太大,該步驟就有助于提高M(jìn)ervlet的感知性能。
作為選擇,如果平均等待時間大于預(yù)定閾值并且平均通信時間大于平均服務(wù)器計算時間,那么算法可以確定重新部署Mervlet。
同樣,在步驟62,該算法確定Mervlet的等待時間的方差是否大于預(yù)定VW_Threshold值。如果滿足該條件并且按等待時間方差和通信時間方差之差衡量的服務(wù)器計算時間的方差小于預(yù)定的VS_Threshold值,并且重新部署的額外開銷小于預(yù)定RO_Threshold值,那么在步驟64,該算法指導(dǎo)服務(wù)器將Mervlet轉(zhuǎn)移到它要在上面運(yùn)行的客戶端。當(dāng)在客戶端上重新部署Mervlet使得Mervlet用戶接口事件的等待事件太長時,只要隨轉(zhuǎn)移的服務(wù)器計算時間不太大,該步驟就有助于提高M(jìn)ervlet的感知性能。否則,在步驟66,在服務(wù)器上運(yùn)行Mervlet。
作為選擇,如果A(S)比A(C)小得多,那么應(yīng)用程序準(zhǔn)備算法可以在自己的決定中忽略A(S)。否則,如果S與C幾乎相同,那么可以使用比例系數(shù)SF來估算設(shè)備上的A(S)。SF是服務(wù)器上的SpecInt除以設(shè)備上的SpecInt所得的比值,其中SpecInt是用來比較處理器速度的已知基準(zhǔn)。
本領(lǐng)域技術(shù)人員可以識別Mervlet準(zhǔn)備算法可以使用等待應(yīng)用程序的等待時間的其它實現(xiàn)方法。例如,其它方法可以省略比較等待時間均值和方差的步驟。
3.4.1.1在請求時間的應(yīng)用程序準(zhǔn)備當(dāng)在服務(wù)器32接收到來自客戶端設(shè)備30對Mervlet請求時,該請求具有下面的結(jié)構(gòu)

Mervlet 10的性能屬性存儲在客戶端30的文件中并且由Mervlet URI索引,對用戶是可選的。
然后服務(wù)器32上的PolicyMervlet模塊66查詢服務(wù)器自己的性能數(shù)據(jù)庫并且檢索下面的數(shù)據(jù)

應(yīng)用程序準(zhǔn)備算法可以利用從客戶端30或服務(wù)器32或它們的組合獲得的應(yīng)用程序?qū)傩赃x擇運(yùn)行Mervlet 10的設(shè)備。
如果服務(wù)器32試圖均衡加載一個新的Mervlet或者其性能屬性不是最新的Mervlet,那么它可以從網(wǎng)絡(luò)上最近運(yùn)行Mervlet的另一個設(shè)備獲得性能屬性的值。作為選擇,服務(wù)器32可以為存儲它的類似設(shè)備和網(wǎng)絡(luò)上類似應(yīng)用程序使用緩存的性能屬性值。系統(tǒng)管理員設(shè)置最新的標(biāo)準(zhǔn)。
3.4.1.2運(yùn)行時的應(yīng)用程序準(zhǔn)備為了均衡加載當(dāng)前運(yùn)行的Mervlet,發(fā)出請求的客戶端30確定它的性能是否已經(jīng)下降到特定閾值以下,然后將該信息發(fā)送到服務(wù)器32。具體地講,當(dāng)Mervlet 10在服務(wù)器32上執(zhí)行,并且客戶端30從遠(yuǎn)程訪問它時,客戶端監(jiān)視來自客戶端所有用戶接口事件的等待時間的均值和方差。如果A(W)或V(W)達(dá)到預(yù)定閾值,那么客戶端30向服務(wù)器32發(fā)送包含下面信息的消息

然后,服務(wù)器32確定Mervlet 10是否應(yīng)該在客戶端30上運(yùn)行。如果是,Mervlet和它的性能屬性被轉(zhuǎn)移到客戶端。服務(wù)器可以在它停止運(yùn)行和重新部署之前存儲Mervlet的狀態(tài),以便讓客戶端能夠利用存儲的狀態(tài)繼續(xù)回復(fù)它的執(zhí)行。
3.4.2網(wǎng)絡(luò)切換優(yōu)化圖10示出了利用判定樹的網(wǎng)絡(luò)切換算法的實現(xiàn)。該網(wǎng)絡(luò)切換算法可以在Mervlet應(yīng)用程序環(huán)境中的服務(wù)器32和客戶端30上運(yùn)行。假設(shè)客戶端和服務(wù)器可以利用多個接入網(wǎng)絡(luò)通信,為了降低等待時間的均值和方差,網(wǎng)絡(luò)切換算法可以切換接入網(wǎng)絡(luò)。用戶可以從服務(wù)器32或另一個設(shè)備在客戶端設(shè)備30上安裝不同的網(wǎng)絡(luò)切換算法。
首先,在步驟70,網(wǎng)絡(luò)切換算法利用當(dāng)前的接入網(wǎng)絡(luò)確定Mervlet的平均等待時間是否大于預(yù)定的AW_Threshold值,并且Mervlet的平均通信時間是否大于預(yù)定的AC_Threshold值。如果滿足這些條件并且網(wǎng)絡(luò)切換的額外開銷小于預(yù)定的SO_Threshold值,那么在步驟74-82,網(wǎng)絡(luò)切換算法將試圖切換接入網(wǎng)絡(luò)。可以利用系統(tǒng)管理員設(shè)置的關(guān)系根據(jù)Mervlet的大小計算網(wǎng)絡(luò)切換的額外開銷。否則,在步驟72保持當(dāng)前接入的網(wǎng)絡(luò)。
接下來,在步驟74,該算法為跨所有可接入網(wǎng)絡(luò)的應(yīng)用程序計算等待時間的均值和方差。然后它為可接入網(wǎng)絡(luò)組確定最小的等待時間的均值和方差。在步驟76,如果最小的平均等待時間小于預(yù)定的AW_Threshold值并且只有一個接入網(wǎng)絡(luò)NN與它匹配,那么在步驟78,該算法指導(dǎo)設(shè)備切換到接入網(wǎng)絡(luò)NN。
在步驟80,如果最小平均等待時間小于預(yù)定的平均閾值并且兩個以上的接入網(wǎng)絡(luò)與它匹配,那么在步驟82,算法從具有最低等待時間方差的確定組中選擇要接入的網(wǎng)絡(luò)。否則,在步驟84,如果切換接入網(wǎng)絡(luò)的條件都不滿足,那么仍然使用當(dāng)前的接入網(wǎng)絡(luò)。
作為選擇,如果該算法找到了其平均等待時間比當(dāng)前使用的接入網(wǎng)絡(luò)的平均等待時間小預(yù)定的閾值T-meantime的接入網(wǎng)絡(luò),那么該算法可以切換接入網(wǎng)絡(luò)。如果所有接入網(wǎng)絡(luò)的平均等待時間大致相同,但是出現(xiàn)等待時間的方差比當(dāng)前使用的網(wǎng)絡(luò)的等待時間的方差小預(yù)定閾值T-varianceMeanwait的網(wǎng)絡(luò),那么該算法可以切換到該網(wǎng)絡(luò)。
3.5利用平滑利用平滑是一種能夠在負(fù)載均衡期間防止系統(tǒng)顛簸的技術(shù)。更具體地說,Mervlet應(yīng)用程序環(huán)境只允許每個時間周期T有N個網(wǎng)絡(luò)切換事件。這些參數(shù)可以隨系統(tǒng)的個性化實現(xiàn)而改變,并且可以由網(wǎng)絡(luò)的系統(tǒng)管理員設(shè)置。下面的客戶端算法可以用來確定網(wǎng)絡(luò)切換算法的平滑間隔。
每個客戶端都有一個由與它同級的每個客戶端在時間周期T內(nèi)制作的切換列表??梢詣討B(tài)創(chuàng)建同級組并且可以從服務(wù)器請求它。每當(dāng)客戶端切換網(wǎng)絡(luò)時,它都利用特定網(wǎng)絡(luò)向鄰居廣播信息。當(dāng)且僅當(dāng)時間周期T中的切換事件次數(shù)小于N時才運(yùn)行切換算法。但是,當(dāng)鏈接本身失敗時,可以配置改算法立刻切換網(wǎng)絡(luò)。作為選擇,服務(wù)器可以存儲一張最近制作的切換列表并且將該信息發(fā)送給每個請求應(yīng)用程序?qū)傩愿碌目蛻舳恕?br> 4.容錯方案Mervlet應(yīng)用程序環(huán)境允許系統(tǒng)管理員利用下面兩種組件選擇系統(tǒng)應(yīng)該容忍的故障類型能夠從故障恢復(fù)的Mervlet引擎12和保證傳送中的消息帶至少一次語義傳遞的可靠的發(fā)消息系統(tǒng)20。可靠的發(fā)消息系統(tǒng)20可以配置如下不容錯、可以從客戶端和網(wǎng)絡(luò)故障恢復(fù)、和可以從客戶端、網(wǎng)絡(luò)和服務(wù)器故障恢復(fù)。
例如,在處理多個客戶端請求或服務(wù)器的響應(yīng)時,可能會丟失服務(wù)器和UCD之間的網(wǎng)絡(luò)連接。在重新連接時,如果需要,服務(wù)器會自動運(yùn)行決定算法來確定在哪運(yùn)行Mervlet。另外,系統(tǒng)管理員能夠選擇是否需要容錯的系統(tǒng)組件。容錯具有的性能影響必須與所需的可靠性權(quán)衡。根據(jù)本發(fā)明的容錯方法表現(xiàn)了移動系統(tǒng)中基于與組件恢復(fù)關(guān)聯(lián)的代價的各種故障以及它關(guān)聯(lián)的代價。然后,它允許系統(tǒng)管理員選擇恢復(fù)的組件。
本領(lǐng)域的技術(shù)人員很容易識別出可以利用具有可恢復(fù)應(yīng)用程序引擎和下面要討論的可靠的發(fā)消息系統(tǒng)的其它移動應(yīng)用程序環(huán)境來實現(xiàn)本發(fā)明的容錯方案。
4.1可恢復(fù)的Mervlet引擎Mervlet引擎12周期性地在持續(xù)存儲器上存儲它的狀態(tài),包括所有當(dāng)前正在執(zhí)行的Mervlet 10的列表和每個Mervlet 10最近的Mervlet環(huán)境。這個列表還包括每個應(yīng)用程序的優(yōu)先級。另外,為了在持續(xù)存儲器中存儲Mervlet應(yīng)用程序的狀態(tài),引擎12可以在任何時候調(diào)用Mervlet 10上的方法Save()。
為了重新啟動發(fā)生故障時在設(shè)備上正在執(zhí)行Mervlet集,Mervlet引擎12可以恢復(fù)它自己的狀態(tài)。Mervlet引擎12一次重新啟動在它的列表中的一個Mervlet 10。Mervlet的重新啟動順序可以取決于它們的優(yōu)先級。當(dāng)Mervlet在設(shè)備故障后重新啟動時,Mervlet 10可以利用運(yùn)行時引擎12注冊該方法Restore(ApplicationContext)。數(shù)據(jù)對象ApplicationContext包括來自確定應(yīng)用程序的運(yùn)行時引擎列表的數(shù)據(jù)和它的環(huán)境。該方法Restore(ApplicationContext)可以實現(xiàn)Mervlet指定的恢復(fù)操作,包括讀取本地通信緩存器的狀態(tài)來確定客戶端30上用于Mervlet的可靠的發(fā)消息系統(tǒng)20的通信狀態(tài)。它還可以查詢服務(wù)器32上用于Mervlet的可靠的發(fā)消息系統(tǒng)20的通信狀態(tài)。當(dāng)Mervlet 10已經(jīng)恢復(fù)后,該方法可以把控制還給Mervlet引擎12。
4.2可靠的發(fā)消息系統(tǒng)Mervlet應(yīng)用程序環(huán)境的發(fā)消息系統(tǒng)20可以利用各種消息收發(fā)協(xié)議幫助網(wǎng)絡(luò)上Mervlet之間的通信和Mervlet本身的傳輸。例如,已經(jīng)發(fā)現(xiàn)有用的消息收發(fā)協(xié)議的類型包括單向和可以是同步或異步的請求回復(fù)協(xié)議。為了保證進(jìn)行中的事務(wù)得到保持,發(fā)消息系統(tǒng)20可以是容錯的。但是可靠的發(fā)消息系統(tǒng)不負(fù)責(zé)設(shè)備故障之后對Mervlet自己的恢復(fù)。
更具體地說,圖11所示的可靠的發(fā)消息系統(tǒng)70包括在客戶端一側(cè)用來緩存所有從客戶端30向外通信的隊列72。用戶可以配置緩存器大小。另外,每個消息用唯一的序列號標(biāo)記并且為每個元素尋找回復(fù)。如果沒有收到回復(fù),那么重新發(fā)送消息直到收到回復(fù)。當(dāng)收到回復(fù)后,從系統(tǒng)中釋放相應(yīng)的緩沖消息。
可靠的發(fā)消息系統(tǒng)70可以這樣實現(xiàn),回復(fù)可以依附于設(shè)備的底層操作軟件或Mervlet 10的高層事件。對于通常的應(yīng)用程序通信,在回復(fù)依附于底層軟件時使用普通的形式。對于系統(tǒng)層可靠的通信,為了降低額外開銷,緩存器機(jī)制被依附在由Mervlet引擎接收到的請求上。
為了實現(xiàn)可靠的發(fā)消息系統(tǒng)70,提供下面的API

“to”字段標(biāo)識接收方。“from”字段標(biāo)識發(fā)送方。“data”字段是要發(fā)送的連續(xù)數(shù)據(jù)?!皌ype”是應(yīng)用程序?qū)踊蛳到y(tǒng)層。當(dāng)收到確認(rèn)后調(diào)用回調(diào)方法。利用這個API,系統(tǒng)能夠保證一個消息的至少一次傳遞。
圖12示出了可靠的發(fā)消息系統(tǒng)70的消息格式。它一共有6個字段,前4個的大小是固定的,數(shù)據(jù)段的大小是可變的,檢驗和是可變的并且計算所有的字段??梢岳每煽康陌l(fā)消息系統(tǒng)70通過將Mervlet自己包含在單個消息的數(shù)據(jù)有效負(fù)荷中在網(wǎng)絡(luò)上重新部署Mervlet。
如圖13所示的操作中,在步驟102,每次客戶端應(yīng)用程序通過調(diào)用方法Reliable_async_send向服務(wù)器上的Mervlet發(fā)送一條消息時,在步驟104,客戶端30上可靠的發(fā)消息系統(tǒng)70就查看在客戶端的持續(xù)存儲器,如閃存或微驅(qū)是否有可用的緩存空間。系統(tǒng)管理員設(shè)置最大緩存空間為預(yù)定值MAX_BUF。如果緩存空間足夠可用,那么在步驟106,消息被緩存并且可靠的發(fā)消息系統(tǒng)70的緩存器管理器為消息附加一個序列號。所有消息和唯一的序列號一起在兩對機(jī)器之間發(fā)送。一旦消息被緩存,調(diào)用可以返回到客戶端應(yīng)用程序。調(diào)用直到消息被緩存在持續(xù)存儲器后才返回到客戶端應(yīng)用程序。當(dāng)調(diào)用返回后,客戶端應(yīng)用程序保證即使客戶端設(shè)備或網(wǎng)絡(luò)故障也能夠?qū)⑾l(fā)送到相應(yīng)的Mervlet。
在步驟108,緩存器管理線程周期性地喚醒和向服務(wù)器32發(fā)送緩存的消息并且等待前面所發(fā)送消息的回復(fù)。每個消息都有與它關(guān)聯(lián)的預(yù)定的超時值。如果在超時期間沒有收到消息回復(fù),那么重發(fā)消息。繼續(xù)該過程直到接收到回復(fù)。只有當(dāng)接入網(wǎng)絡(luò)連通并且已經(jīng)建立了到主服務(wù)器32的通路才觸發(fā)緩存器管理線程。
在步驟110,在服務(wù)器上接收到請求消息后,系統(tǒng)管理員可以選擇可靠的發(fā)消息系統(tǒng)70如何處理和向服務(wù)器上的Mervlet傳遞消息。例如,在步驟112,系統(tǒng)可以立即向Mervlet傳遞消息,然后在步驟114,在持續(xù)存儲器,如硬盤上存儲消息。這樣增加了消息不在“安全”狀態(tài)的時間,但是使得Mervlet可以快速訪問消息。作為選擇,在接收到消息后,在步驟116,服務(wù)器32上的可靠的發(fā)消息系統(tǒng)70可以將它記錄到持續(xù)存儲器,然后在步驟118將它傳遞到Mervlet。接著,Mervlet處理該消息(步驟122)并且生成回復(fù)(步驟124)。它還向可靠的發(fā)消息系統(tǒng)70發(fā)出它已經(jīng)響應(yīng)了的信號。在步驟126系統(tǒng)記錄回復(fù),然后在步驟128試圖將它發(fā)送到發(fā)出請求的客戶端。此時,在步驟130,從服務(wù)器上持續(xù)存儲器的緩存器清除請求消息。
客戶端在接收到回復(fù)后(步驟132)立即將回復(fù)存儲在持續(xù)存儲器的緩存器中(步驟134)。然后,在步驟136,它尋找匹配發(fā)送到服務(wù)器的請求消息并且從緩存器中將它清除。接下來,在步驟138,客戶端試圖從客戶端應(yīng)用程序向相應(yīng)的回收方法傳遞回復(fù)。一旦調(diào)用回收方法,就在步驟140釋放回復(fù)。在步驟120,當(dāng)從相同的客戶端接收到序列號較大的下一個消息時,在服務(wù)器上釋放回復(fù)所用的緩存器。如果服務(wù)器收到的消息是重復(fù)的,那么就刪除它。系統(tǒng)管理員設(shè)置確認(rèn)緩存器的大小為ACK_BUF。
4.2.1尋找到主服務(wù)器的連接可靠的發(fā)消息系統(tǒng)70管理客戶端設(shè)備30和服務(wù)器32之間的連接。系統(tǒng)周期性地喚醒和執(zhí)行下列任務(wù)。它查看是否可以通過任何客戶端接入網(wǎng)絡(luò),如藍(lán)牙、無線802.11b(Wi-Fi)、IRDA和通用分組無線服務(wù)(GPRS)移動電話網(wǎng)802.11b來聯(lián)系主服務(wù)器32。它是通過向主服務(wù)器32發(fā)送ICMPPing來完成的。提供匹配的第一接入網(wǎng)絡(luò)用于客戶端30和服務(wù)器32之間的進(jìn)一步通信??煽康陌l(fā)消息系統(tǒng)70還喚醒它的緩存器管理線程并且告訴它使用哪種協(xié)議與服務(wù)器32通信。
4.2.2可配置性容錯的代價在于所有寫盤都耗費(fèi)時間和磁盤空間。接下來參見圖14,它示出了實現(xiàn)可靠的發(fā)消息系統(tǒng)70的幾種配置。第一行描述了消息記錄到服務(wù)器32和客戶端30的技術(shù),第二行描述了只在客戶端30記錄的消息,第三行描述了不記錄消息的技術(shù)。前兩個選擇提供下面可替換的容錯。如果一個用戶希望降低運(yùn)行時間的消耗并且想把更多的時間用在恢復(fù)應(yīng)用程序上,那么可以考慮第二種選擇。第一種選擇由于要將消息記錄客戶端和服務(wù)器,因此消耗的時間較高,但是對用戶的好處是利用可靠的發(fā)消息系統(tǒng)恢復(fù)應(yīng)用程序更加強(qiáng)健。
4.3處理故障當(dāng)服務(wù)器32從故障中恢復(fù)后,它查看圖13中所示在步驟106存儲在自己持續(xù)存儲器上的緩存器列表。可靠的發(fā)消息系統(tǒng)70假設(shè)設(shè)備持續(xù)存儲器上的數(shù)據(jù)沒有被破壞,但是在設(shè)備主存儲器上的數(shù)據(jù)被破壞了。如果列表中包含來自客戶端30的消息,那么可靠的發(fā)消息系統(tǒng)70假設(shè)請求還沒有被處理,并且試圖將消息傳遞到服務(wù)器上相應(yīng)的Mervlet。同樣,如果服務(wù)器32在故障恢復(fù)找到了緩存的回復(fù),那么系統(tǒng)將它發(fā)送到相應(yīng)的目標(biāo)客戶端30。
為了從故障中成功地恢復(fù)整個Mervlet應(yīng)用程序環(huán)境,使用下面的恢復(fù)操作順序1)可靠的發(fā)消息系統(tǒng)70達(dá)到一致的狀態(tài)。
2)下面要描述的高速緩存基礎(chǔ)結(jié)構(gòu)恢復(fù)到一致的狀態(tài)。
3)Mervlet引擎12達(dá)到一致的狀態(tài)。
4)每個Mervlet 10依次恢復(fù)到一致的狀態(tài)。
5.中斷模式計算客戶端設(shè)備30可能由于兩種原因與服務(wù)器32或其它設(shè)備發(fā)生斷開網(wǎng)絡(luò)故障或系統(tǒng)管理員或用戶主動采取行動,例如,為了降低網(wǎng)絡(luò)的帶寬使用。Mervlet應(yīng)用程序環(huán)境提供兩種特征來支持中斷操作異步可靠的消息收發(fā)和Mervlet高速緩存。
異步可靠的消息收發(fā)允許當(dāng)客戶端和服務(wù)器之間不存在網(wǎng)絡(luò)連接時在客戶端30或者服務(wù)器32將消息排隊。當(dāng)應(yīng)用程序發(fā)送消息時,如上所述在本地緩存或者排隊。只有當(dāng)建立了網(wǎng)絡(luò)連接后才發(fā)送消息。當(dāng)重新建立了網(wǎng)絡(luò)連接后,異步可靠的發(fā)消息系統(tǒng)重新發(fā)送在緩沖隊列中等待的消息??煽康陌l(fā)消息系統(tǒng)70還可以在持續(xù)存儲器中存儲消息隊列,因此可以如上所述容忍設(shè)備和服務(wù)器的故障。
第二個用于斷開模式計算的機(jī)制要求在客戶端設(shè)備30的本地高速緩存中存儲Mervlet。如圖1所示,高速存儲器由高速緩存管理器22管理。即使沒有網(wǎng)絡(luò)連接,高速緩存也可以訪問瀏覽器或其它客戶端應(yīng)用程序。如果客戶端30的連接中斷,高速緩存上的Mervlet仍然可以服務(wù)本地瀏覽器。另外,本地瀏覽器仍然可以從本地高速緩存請求Mervlet。
可以用各種方法管理高速緩存,但是最好能允許使用象貯藏(hoarding)之類的技術(shù)的智能預(yù)取。當(dāng)服務(wù)器對未來Mervlet的訪問有更多了解的情況下,Mervlet高速緩存機(jī)制允許客戶端30向服務(wù)器32委托各種高速緩存管理決定,例如合作設(shè)置或信息被前攝地(proactively)推進(jìn)到客戶端設(shè)備30時設(shè)置。因此,可以由客戶端30、服務(wù)器32或兩者結(jié)合來設(shè)置高速緩存管理策略。在運(yùn)行時,服務(wù)器32可以更新高速緩存的替換,并且為存儲在客戶端設(shè)備30中高速緩存上的每個Mervlet編寫策略。
此外,本領(lǐng)域技術(shù)人員會識別出如果希望將代碼和數(shù)據(jù)分開對待,那么高速緩存管理器22有能夠?qū)崿F(xiàn)它的高速緩存算法。另外,高速緩存可以在高速緩存管理算法中考慮設(shè)備特征和個人用戶使用概述。
高速緩存管理器22的一種實施是調(diào)用pre_fetch類上的方法來實現(xiàn)預(yù)取,調(diào)用cache_miss類上的方法來實現(xiàn)對高速緩存失敗的處理,以及調(diào)用cache_write類上的方法來實現(xiàn)向高速緩存寫數(shù)據(jù)。
預(yù)取操作可以是服務(wù)器初始化或客戶端初始化的。對于服務(wù)器初始化的預(yù)取,服務(wù)器32向回送高速緩存狀態(tài)向量的客戶端30發(fā)送一條預(yù)取通知。然后服務(wù)器向客戶端發(fā)送一套新的文檔集和可選的新的替換策略。服務(wù)器32還請求在客戶端設(shè)備30上運(yùn)行Mervlet 10。當(dāng)Mervlet 10在客戶端30上執(zhí)行后,它向服務(wù)器32回送高速緩存狀態(tài)向量。然后服務(wù)器32向Mervlet 10發(fā)送一套高速緩存對象集和一個替換策略。接著,Mervlet10回調(diào)服務(wù)器32為新的替換策略加載類。
為了處理高速緩存丟失,客戶端30上的高速緩存管理器22向主服務(wù)器32發(fā)送一個表示文檔丟失和當(dāng)丟失發(fā)生時本地高速緩存狀態(tài)向量的請求。向量包括高速緩存的大小和自從服務(wù)器上次更新后高速緩存散列表的任何變化。主服務(wù)器32回送被請求的文檔。它還可以回送其它預(yù)取文檔和一個替換策略??蛻舳?0在它的高速緩存上使用這個新的替換策略。下面是說明該方法的偽碼

如果客戶端30為它的高速緩存請求一個新Mervlet 10的列表,那么,服務(wù)器32將它們回送并且提供一個可選的替換策略。客戶端將再次前攝下載實現(xiàn)替換的新類。
可以利用從服務(wù)器22下載的新類由高速緩存管理器22修改客戶端30上用于本地高速緩存的寫策略。對于高速緩存中的每個元素,服務(wù)器32可以附加一個當(dāng)對象被迫離開高速緩存時如何處理臟的或所寫對象的策略。因此,高速緩存系統(tǒng)的配置可以選擇系統(tǒng)是否執(zhí)行高速緩存。這是一個動態(tài)或運(yùn)行時的選擇。另外,高速緩存系統(tǒng)本身在三個區(qū)域是動態(tài)可擴(kuò)展的替換策略、預(yù)取策略和修改的數(shù)據(jù)管理策略。
雖然在此參考特定的實施利描述和解釋本發(fā)明,但是本發(fā)明不局限于這些說明性的實施例。在不脫離所附權(quán)利要求定義的本發(fā)明的真正范圍和精神的前提下,本領(lǐng)域技術(shù)人員認(rèn)識到各種變化和修改。因此所有這些變化和修改都將包括在本發(fā)明的所附權(quán)利要求范圍內(nèi)。
權(quán)利要求
1.一種在與用于設(shè)備之間通信的至少一個接入網(wǎng)絡(luò)耦合的多個計算設(shè)備間進(jìn)行負(fù)載均衡的方法,該方法包括在與所述至少一個接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲所述應(yīng)用程序;衡量與所述應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约鰧傩园ū碚魉鰬?yīng)用程序的用戶感知性能的至少一個性能屬性;從與所述至少一個接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對所述應(yīng)用程序的請求;響應(yīng)所述請求,根據(jù)所述應(yīng)用程序?qū)傩约谒隹蛻舳撕头?wù)器設(shè)備之一上準(zhǔn)備執(zhí)行所述應(yīng)用程序;以及響應(yīng)所述準(zhǔn)備,在所述客戶端和服務(wù)器設(shè)備之一上執(zhí)行所述應(yīng)用程序。
2.根據(jù)權(quán)利要求1所述的方法,還包括當(dāng)執(zhí)行所述應(yīng)用程序時,監(jiān)視所述應(yīng)用程序?qū)傩约?;和根?jù)在執(zhí)行所述應(yīng)用程序時所述監(jiān)視到的應(yīng)用程序?qū)傩约_定是否從所述服務(wù)器設(shè)備向所述客戶端設(shè)備重新部署所述應(yīng)用程序。
3.根據(jù)權(quán)利要求1所述的方法,還包括根據(jù)所述的應(yīng)用程序?qū)傩约x擇用于在所述服務(wù)器設(shè)備和所述客戶端設(shè)備之間通信的第一接入網(wǎng)絡(luò)。
4.根據(jù)權(quán)利要求3所述的方法,還包括當(dāng)執(zhí)行所述應(yīng)用程序時,監(jiān)視所述應(yīng)用程序?qū)傩约?;和根?jù)在執(zhí)行所述應(yīng)用程序時所述監(jiān)視到的應(yīng)用程序?qū)傩约?,確定是否切換到用于所述服務(wù)器設(shè)備和客戶端設(shè)備之間通信的第二接入網(wǎng)絡(luò)。
5.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個性能屬性包括至少一個與所述應(yīng)用程序的用戶接口事件的等待時間有關(guān)的至少一個參數(shù),所述等待時間包括服務(wù)器計算時間和通信時間。
6.根據(jù)權(quán)利要求5所述的方法,其中與等待時間有關(guān)的所述至少一個參數(shù)包括所述等待時間、所述服務(wù)器計算時間和所述通信時間的平均值和所述等待時間、所述服務(wù)器計算時間和所述通信時間的方差中的至少一個。
7.根據(jù)權(quán)利要求6所述的方法,其中所述服務(wù)器計算時間包括內(nèi)部計算時間和數(shù)據(jù)I/O時間。
8.根據(jù)權(quán)利要求6所述的方法,其中所述至少一個性能屬性還包括所述應(yīng)用程序運(yùn)行完成的總時間。
9.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個性能屬性按每個應(yīng)用程序來衡量。
10.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個性能屬性按每個設(shè)備的每個應(yīng)用程序來衡量。
11.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個性能屬性按每個用戶的每個設(shè)備的每個應(yīng)用程序來衡量。
12.根據(jù)權(quán)利要求1所述的方法,其中所述至少一個性能屬性按每個接入網(wǎng)絡(luò)的每個用戶的每個設(shè)備上的每個應(yīng)用程序來衡量。
13.根據(jù)權(quán)利要求1所述的方法,其中所述應(yīng)用程序?qū)傩越M還包括用來表征至少一個所述客戶端設(shè)備、所述服務(wù)器設(shè)備和所述至少一個接入網(wǎng)絡(luò)的性能的至少一個系統(tǒng)屬性。
14.根據(jù)權(quán)利要求13所述的方法,其中表征所述客戶端設(shè)備性能的系統(tǒng)屬性包括與所述客戶端設(shè)備處理器的使用衡量、所述客戶端設(shè)備的所述處理器的MIPS等級、存儲器大小和持續(xù)存儲器數(shù)量有關(guān)的至少一個參數(shù)。
15.根據(jù)權(quán)利要求13所述的方法,其中表征所述服務(wù)器設(shè)備性能的系統(tǒng)屬性包括與所述服務(wù)器設(shè)備處理器的使用衡量、所述服務(wù)器設(shè)備的所述處理器的MIPS等級、存儲器大小和持續(xù)存儲器數(shù)量有關(guān)的至少一個參數(shù)。
16.根據(jù)權(quán)利要求13所述的方法,其中表征所述至少一個接入網(wǎng)絡(luò)的性能的系統(tǒng)屬性包括網(wǎng)絡(luò)帶寬、網(wǎng)絡(luò)等待時間和網(wǎng)絡(luò)狀態(tài)中的至少一個。
17.一種對形成至少一個網(wǎng)絡(luò)的一部分的應(yīng)用程序進(jìn)行負(fù)載均衡的系統(tǒng),該系統(tǒng)包括與所述至少一個網(wǎng)絡(luò)耦合的多個執(zhí)行模塊,所述執(zhí)行模塊為所述應(yīng)用程序提供不同的執(zhí)行環(huán)境;至少一個與所述至少一個網(wǎng)絡(luò)耦合的收集模塊,所述收集模塊測量與所述應(yīng)用程序關(guān)聯(lián)的應(yīng)用程序?qū)傩约?,所述?yīng)用程序?qū)傩约ū碚魉鰬?yīng)用程序的用戶感知性能的至少一個性能屬性;至少一個與所述至少一個網(wǎng)絡(luò)耦合的策略模塊,所述策略模塊根據(jù)所述應(yīng)用程序?qū)傩源_定滿足用于確定所述應(yīng)用程序執(zhí)行環(huán)境的至少一個策略的第一執(zhí)行模塊;以及在所述第一執(zhí)行模塊上分配所述應(yīng)用程序的至少一個程序分配模塊。
18.根據(jù)權(quán)利要求17所述的系統(tǒng),還包括至少一個根據(jù)所述應(yīng)用程序?qū)傩约x擇滿足用于確定所述應(yīng)用程序的通信環(huán)境的至少一個策略的接入網(wǎng)絡(luò)的網(wǎng)絡(luò)分配模塊。
19.根據(jù)權(quán)利要求18所述的系統(tǒng),其中所述至少一個性能屬性包括至少一個與所述應(yīng)用程序的用戶接口事件的等待時間有關(guān)的至少一個參數(shù),所述等待時間包括服務(wù)器計算時間和通信時間。
20.根據(jù)權(quán)利要求19所述的系統(tǒng),其中與等待時間有關(guān)的至少一個參數(shù)包括所述等待時間、所述服務(wù)器計算時間和所述通信時間的平均值和所述等待時間、所述服務(wù)器計算時間和所述通信時間的方差中的至少一個。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其中所述服務(wù)器計算時間包括內(nèi)部計算時間和數(shù)據(jù)I/O時間。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其中所述至少一個性能屬性還包括所述應(yīng)用程序運(yùn)行完成的總時間。
23.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述至少一個性能屬性按每個應(yīng)用程序來衡量。
24.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述至少一個性能屬性按每個設(shè)備的每個應(yīng)用程序來衡量。
25.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述至少一個性能屬性按每個用戶的每個設(shè)備的每個應(yīng)用程序來衡量。
26.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述至少一個性能屬性按每個接入網(wǎng)絡(luò)的每個用戶的每個設(shè)備的每個應(yīng)用程序來衡量。
27.根據(jù)權(quán)利要求17所述的系統(tǒng),其中所述應(yīng)用程序?qū)傩约€包括用來表征至少一個所述客戶端設(shè)備、所述服務(wù)器設(shè)備和所述至少一個接入網(wǎng)絡(luò)的性能的至少一個系統(tǒng)屬性。
28.根據(jù)權(quán)利要求27所述的系統(tǒng),其中表征所述客戶端設(shè)備性能的系統(tǒng)屬性包括與所述客戶端設(shè)備處理器的使用衡量、所述客戶端設(shè)備的所述處理器的MIPS等級、存儲器大小和持續(xù)存儲器數(shù)量有關(guān)的至少一個參數(shù)。
29.根據(jù)權(quán)利要求27所述的系統(tǒng),其中表征所述服務(wù)器設(shè)備性能的系統(tǒng)屬性包括與所述服務(wù)器設(shè)備處理器的使用衡量、所述服務(wù)器設(shè)備的所述處理器的MIPS等級、存儲器大小和持續(xù)存儲器數(shù)量有關(guān)的至少一個參數(shù)。
30.根據(jù)權(quán)利要求27所述的系統(tǒng),其中表征所述至少一個接入網(wǎng)絡(luò)的性能的系統(tǒng)屬性包括網(wǎng)絡(luò)帶寬、網(wǎng)絡(luò)等待時間和網(wǎng)絡(luò)狀態(tài)中的至少一個。
31.一種對與用于設(shè)備之間通信的至少一個接入網(wǎng)絡(luò)耦合的多個計算設(shè)備間進(jìn)行應(yīng)用程序負(fù)載均衡的系統(tǒng),該系統(tǒng)包括在與所述至少一個接入網(wǎng)絡(luò)耦合的服務(wù)器設(shè)備上存儲所述應(yīng)用程序的裝置;衡量應(yīng)用程序?qū)傩约难b置,所述應(yīng)用程序?qū)傩约ㄓ糜诒碚魉鰬?yīng)用程序的客戶感知性能的至少一個性能屬性;從與所述至少一個接入網(wǎng)絡(luò)耦合的客戶端設(shè)備發(fā)出對所述應(yīng)用程序的請求的裝置;響應(yīng)所述請求,根據(jù)所述應(yīng)用程序?qū)傩约乃稣埱?,在所述服?wù)器設(shè)備和客戶端設(shè)備之一上準(zhǔn)備執(zhí)行所述應(yīng)用程序的裝置;以及響應(yīng)所述準(zhǔn)備,在所述客戶端和服務(wù)器設(shè)備之一上執(zhí)行所述應(yīng)用程序的裝置。
32.根據(jù)權(quán)利要求31所述的系統(tǒng),還包括在所述應(yīng)用程序執(zhí)行期間,用來監(jiān)視所述應(yīng)用程序?qū)傩约难b置;和根據(jù)在所述應(yīng)用程序執(zhí)行期間所述監(jiān)視到的應(yīng)用程序?qū)傩约?,確定是否從所述服務(wù)器設(shè)備向所述客戶端設(shè)備重新部署所述應(yīng)用程序的裝置。
33.根據(jù)權(quán)利要求31所述的系統(tǒng),還包括根據(jù)所述的應(yīng)用程序?qū)傩约脕磉x擇用于在所述服務(wù)器設(shè)備和所述客戶端設(shè)備之間通信的第一接入網(wǎng)絡(luò)的裝置。
34.根據(jù)權(quán)利要求33所述的系統(tǒng),還包括在所述應(yīng)用程序執(zhí)行期間,用于監(jiān)視所述應(yīng)用程序?qū)傩约难b置;和根據(jù)在所述應(yīng)用程序執(zhí)行期間所述監(jiān)視到的應(yīng)用程序?qū)傩约?,確定是否切換到第二接入網(wǎng)絡(luò)以便在所述服務(wù)器設(shè)備和客戶端設(shè)備之間通信的裝置。
全文摘要
在本發(fā)明的一個方面中,提供了一種形成至少一個接入網(wǎng)絡(luò)的一部分的移動應(yīng)用環(huán)境。該環(huán)境包括含有一套創(chuàng)建動態(tài)web頁面的指令的mervlet應(yīng)用集。響應(yīng)來自在本地節(jié)點執(zhí)行的客戶端應(yīng)用程序的請求,Mervlet能夠在各與接入網(wǎng)絡(luò)耦合的本地節(jié)點或服務(wù)器節(jié)點上執(zhí)行,以便在本地節(jié)點上顯示動態(tài)web頁面來。該環(huán)境還包括至少一個與mervlet關(guān)聯(lián)的應(yīng)用程序?qū)傩?。該?yīng)用程序?qū)傩园ㄖ辽僖粋€用來表征mervlet的用戶感知性能的性能屬性。該環(huán)境還包括與mervlet關(guān)聯(lián)的mervlet引擎。引擎包括具有根據(jù)應(yīng)用程序的屬性操作在本地和服務(wù)器節(jié)點之間準(zhǔn)備執(zhí)行mervlet的第一指令集的策略模塊。
文檔編號H04L12/28GK101039331SQ20071008547
公開日2007年9月19日 申請日期2003年3月31日 優(yōu)先權(quán)日2002年6月24日
發(fā)明者奈依姆·伊斯蘭, 沙希德·肖艾比 申請人:株式會社Ntt都科摩
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
郎溪县| 嘉鱼县| 临城县| 吉隆县| 和林格尔县| 阳西县| 固阳县| 怀宁县| 马公市| 双柏县| 苍山县| 荃湾区| 全南县| 龙州县| 富平县| 农安县| 沾益县| 邻水| 清镇市| 宜良县| 洛隆县| 临武县| 和顺县| 皮山县| 望城县| 黎城县| 汕尾市| 河曲县| 长垣县| 定边县| 商洛市| 罗甸县| 体育| 共和县| 五大连池市| 越西县| 铅山县| 盘锦市| 织金县| 峨边| 建阳市|