亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法

文檔序號(hào):7815775閱讀:204來源:國知局
專利名稱:一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法
技術(shù)領(lǐng)域
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法。
背景技術(shù)
在后臺(tái)服務(wù)開發(fā)領(lǐng)域,大部分互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用都會(huì)遇到系統(tǒng)規(guī)模變得日益復(fù)雜,并且系統(tǒng)規(guī)模日益增大后,開發(fā)成本和運(yùn)維成本都急劇增高。迫切需要一種解決方案,降低應(yīng)用服務(wù)平臺(tái)的開發(fā)難度,提高其部署的靈活性并降低部署的難度。

發(fā)明內(nèi)容
本發(fā)明提供了一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法,本發(fā)明的技術(shù)方案能降低多應(yīng)用平臺(tái)系統(tǒng)的開發(fā)難度,提高部署的靈活性并降低部署的難度。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開了一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法,實(shí)現(xiàn)多個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng),在每個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)中設(shè)置代理服務(wù)器、計(jì)算應(yīng)用服務(wù)系統(tǒng)和網(wǎng)關(guān),且在云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存應(yīng)用的描述信息以及應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系,該方法包括在一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)代理服務(wù)器接收客戶端請(qǐng)求消息,對(duì)客戶端請(qǐng)求消息進(jìn)行解析,確定對(duì)應(yīng)的應(yīng)用, 根據(jù)該應(yīng)用的描述信息創(chuàng)建應(yīng)用上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用上下文后,根據(jù)所述應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;所述云計(jì)算應(yīng)用服務(wù)系統(tǒng)中的所述應(yīng)用服務(wù)器在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用進(jìn)行處理;所述對(duì)應(yīng)的應(yīng)用處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),根據(jù)所述應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位,得出處理結(jié)果;應(yīng)用服務(wù)器將所述處理結(jié)果經(jīng)代理服務(wù)器返回給客戶端;在各應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)對(duì)應(yīng)用進(jìn)行跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。由上述可見,針對(duì)大部分互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用都會(huì)遇到系統(tǒng)規(guī)模變得日益復(fù)雜,并且規(guī)模日益增大后,開發(fā)成本和運(yùn)維成本急劇增高的問題,本發(fā)明通過構(gòu)建平臺(tái)即服務(wù)的軟件平臺(tái),將普遍的現(xiàn)有后臺(tái)軟件解決方案中按照服務(wù)角色進(jìn)行拆分的方式,改為以細(xì)粒度的信令級(jí)別進(jìn)行應(yīng)用拆分,并且進(jìn)行應(yīng)用開發(fā)與部署的簡單方式,降低了開發(fā)與部署的復(fù)雜度;另外,本發(fā)明通過引入應(yīng)用上下文的概念,將復(fù)雜的資源定位與應(yīng)用間的路由從開發(fā)者視角上隔離開,即支持了簡潔的開發(fā)方式,又能夠使平臺(tái)適用于超大規(guī)模的服務(wù)器集群。并且通過增加網(wǎng)關(guān)的方案實(shí)現(xiàn)了應(yīng)用的跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。


圖1是本發(fā)明實(shí)施例中的一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)的組網(wǎng)示意圖;圖2是本發(fā)明實(shí)施例中的多應(yīng)用服務(wù)平臺(tái)系統(tǒng)的組網(wǎng)示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。圖1是本發(fā)明實(shí)施例中的一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)的組網(wǎng)示意圖。圖2是本發(fā)明實(shí)施例中的多應(yīng)用服務(wù)平臺(tái)系統(tǒng)的組網(wǎng)示意圖。在實(shí)際應(yīng)用中,在跨IDC機(jī)房的環(huán)境下,每個(gè)機(jī)房中的部署結(jié)構(gòu)均與前述的圖1所示的結(jié)構(gòu)一致。即每個(gè)IDC機(jī)房中都有一個(gè)圖1所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)。這里每個(gè)IDC 稱為一個(gè)Site。各機(jī)房中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)進(jìn)行通信,如圖2所示。則本發(fā)明中的多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法包括實(shí)現(xiàn)多個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng),在每個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)中設(shè)置代理服務(wù)器、計(jì)算應(yīng)用服務(wù)系統(tǒng)和網(wǎng)關(guān),且在云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存應(yīng)用的描述信息以及應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系;在一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)代理服務(wù)器接收客戶端請(qǐng)求消息,對(duì)客戶端請(qǐng)求消息進(jìn)行解析,確定對(duì)應(yīng)的應(yīng)用, 根據(jù)該應(yīng)用的描述信息創(chuàng)建應(yīng)用上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用上下文后,根據(jù)所述應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;所述云計(jì)算應(yīng)用服務(wù)系統(tǒng)中的所述應(yīng)用服務(wù)器在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用進(jìn)行處理;所述對(duì)應(yīng)的應(yīng)用處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),根據(jù)所述應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位,得出處理結(jié)果;應(yīng)用服務(wù)器將所述處理結(jié)果經(jīng)代理服務(wù)器返回給客戶端;在各應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)對(duì)應(yīng)用進(jìn)行跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。以下對(duì)本發(fā)明中的應(yīng)用訪問方法進(jìn)行詳細(xì)說明。應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)的應(yīng)用訪問如圖1所示,一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)包括代理服務(wù)器和云計(jì)算應(yīng)用服務(wù)系統(tǒng),其中,云計(jì)算應(yīng)用服務(wù)系統(tǒng)中的應(yīng)用服務(wù)器集群上負(fù)載并運(yùn)行應(yīng)用,并且云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存有應(yīng)用的描述信息以及應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系;代理服務(wù)器,用于接收客戶端請(qǐng)求消息,對(duì)客戶端請(qǐng)求消息進(jìn)行解析,確定對(duì)應(yīng)的應(yīng)用,根據(jù)該應(yīng)用的描述信息創(chuàng)建應(yīng)用上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用上下文后,根據(jù)所述應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;接收應(yīng)用服務(wù)器端返回的處理結(jié)果,并返回給客戶端;所述云計(jì)算應(yīng)用服務(wù)系統(tǒng)中的所述應(yīng)用服務(wù)器,用于在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用進(jìn)行處理,并將處理結(jié)果返回給代理服務(wù)器;所述對(duì)應(yīng)的應(yīng)用處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),根據(jù)所述應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位,得出處理結(jié)果。應(yīng)用服務(wù)器將所述處理結(jié)果經(jīng)代理服務(wù)器返回給客戶端。上述云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存的應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系,采用表格保存,其中記錄有應(yīng)用進(jìn)程名稱和應(yīng)用服務(wù)路徑,即應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系。本發(fā)明實(shí)施例中,云計(jì)算應(yīng)用服務(wù)系統(tǒng)包括中心服務(wù)器、資源服務(wù)器和由多個(gè)應(yīng)用服務(wù)器組成的服務(wù)器集群,其中中心服務(wù)器,用于接收外部上傳的應(yīng)用,將應(yīng)用的描述信息保存到應(yīng)用配置信息列表中,創(chuàng)建所述應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系,并在對(duì)應(yīng)的應(yīng)用服務(wù)器上部署該應(yīng)用,保存用于保存應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系的應(yīng)用運(yùn)行信息列表;每個(gè)應(yīng)用服務(wù)器,用于將所負(fù)載的應(yīng)用的運(yùn)行信息上傳到中心服務(wù)器上的用于保存應(yīng)用與應(yīng)用服務(wù)器之間對(duì)應(yīng)關(guān)系的應(yīng)用運(yùn)行信息列表中;其中,應(yīng)用配置信息列表包括如下信息應(yīng)用ID、應(yīng)用名稱、應(yīng)用服務(wù)類型、應(yīng)用進(jìn)程名、應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注;應(yīng)用運(yùn)行信息列表包括如下信息應(yīng)用進(jìn)程名稱、應(yīng)用的服務(wù)地址;資源服務(wù)器,用于保存應(yīng)用服務(wù)器上的各應(yīng)用處理客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)時(shí)需要訪問的數(shù)據(jù)資源;在本實(shí)施例中,資源服務(wù)器包括數(shù)據(jù)庫服務(wù)器、文件服務(wù)器和內(nèi)存對(duì)象緩沖服務(wù)器。代理服務(wù)器,用于接收客戶端請(qǐng)求消息,通過查詢中心服務(wù)器上的應(yīng)用配置信息列表識(shí)別該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用,然后通過查詢中心服務(wù)器上的應(yīng)用配置信息列表和應(yīng)用運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用的服務(wù)地址,根據(jù)所獲得的服務(wù)地址將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;接收應(yīng)用服務(wù)器端返回的處理結(jié)果,并返回給客戶端;在本發(fā)明的一個(gè)實(shí)施例中,代理服務(wù)器包括超文本傳輸協(xié)議HTTP代理服務(wù)器、 初始會(huì)話SIP代理服務(wù)器和短信系統(tǒng)SMS代理服務(wù)器。其中,HTTP代理服務(wù)器負(fù)責(zé)分發(fā) HTTP應(yīng)用,SIP代理服務(wù)器負(fù)責(zé)與客戶端的SIP長連接,SMS代理服務(wù)器負(fù)責(zé)分發(fā)短信上行應(yīng)用。此外,云計(jì)算應(yīng)用服務(wù)系統(tǒng)還包括與應(yīng)用服務(wù)器集群連接的基礎(chǔ)服務(wù)服務(wù)器(在圖1中未畫出該基礎(chǔ)服務(wù)服務(wù)器),用于提供平臺(tái)內(nèi)部需求的一些核心應(yīng)用或獨(dú)立應(yīng)用。在圖1所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,所述代理服務(wù)器,用于在接收到客戶端請(qǐng)求消息時(shí),從客戶端請(qǐng)求消息中提取請(qǐng)求參數(shù),查詢中心服務(wù)器中的應(yīng)用配置信息列表,查找出請(qǐng)求參數(shù)與元數(shù)據(jù)標(biāo)注字段符合的應(yīng)用配置信息列表項(xiàng),進(jìn)而識(shí)別出對(duì)應(yīng)的應(yīng)用。例如當(dāng)接收到HTTP請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的統(tǒng)一資源定位符URL,查詢中心服務(wù)器上的應(yīng)用配置信息列表,查找出應(yīng)用元數(shù)據(jù)標(biāo)注字段包含有與所述URL —致信息的應(yīng)用配置信息列表項(xiàng),根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用名稱識(shí)別出該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用;或者,代理服務(wù)器在接收到與遠(yuǎn)程調(diào)用應(yīng)用組件RemoteAppBean對(duì)應(yīng)的遠(yuǎn)程調(diào)用過程協(xié)議Rpc請(qǐng)求時(shí),根據(jù)該請(qǐng)求消息中的遠(yuǎn)程調(diào)用服務(wù)名稱(RemoteAppName),查找出中心服務(wù)器上應(yīng)用名稱(AppName)字段與所述遠(yuǎn)程調(diào)用服務(wù)名稱一致的應(yīng)用配置信息列表項(xiàng),根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用名稱字段識(shí)別出該請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用;所述代理服務(wù)器,用于根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用進(jìn)程名,查找出中心服務(wù)器上的應(yīng)用進(jìn)程名稱字段包含與所述應(yīng)用進(jìn)程名一致信息的應(yīng)用運(yùn)行信息列表項(xiàng),從所查找出的應(yīng)用運(yùn)行信息列表項(xiàng)中獲取應(yīng)用服務(wù)的服務(wù)地址信息。并根據(jù)所述應(yīng)用的服務(wù)地址信息將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器。所述代理服務(wù)器,根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的元數(shù)據(jù)標(biāo)注字段中的關(guān)于加載應(yīng)用服務(wù)上下文信息,創(chuàng)建應(yīng)用服務(wù)上下文。在圖1所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,中心服務(wù)器,進(jìn)一步用于保存資源列表;資源列表包括如下信息資源名稱、資源類型、應(yīng)用服務(wù)上下文類型、定位算法名稱和定位算法參數(shù);應(yīng)用在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過程中根據(jù)應(yīng)用上下文以及資源列表中的對(duì)應(yīng)信息進(jìn)行資源定位??梢?,本發(fā)明這種由上述代理服務(wù)器、應(yīng)用服務(wù)器集群、中心服務(wù)器和資源服務(wù)器構(gòu)成的應(yīng)用服務(wù)平臺(tái)系統(tǒng),將分散的服務(wù)器資源在邏輯上整合到一起,極大降低了應(yīng)用的開發(fā)難度,提高了部署的靈活性并降低了部署的難度。應(yīng)用服務(wù)平臺(tái)系統(tǒng)基于如下層次結(jié)構(gòu)進(jìn)行開發(fā),具體來說代理服務(wù)器上代理服務(wù)器、基礎(chǔ)服務(wù)及負(fù)載運(yùn)行于應(yīng)用服務(wù)器集群上的應(yīng)用都基于如下層次結(jié)構(gòu)進(jìn)行開發(fā)開發(fā)基礎(chǔ)框架類庫(Framework)基礎(chǔ)框架類庫提供基礎(chǔ)核心功能與用于在特定業(yè)務(wù)領(lǐng)域進(jìn)行定制的擴(kuò)展接口 ;在基礎(chǔ)框架類庫中定義并實(shí)現(xiàn)多種應(yīng)用組件AppBean基礎(chǔ)類型,并且基礎(chǔ)框架類庫中預(yù)定義了應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于不同類型信令的處理;基礎(chǔ)框架類庫提供的擴(kuò)展接口具體用來在業(yè)務(wù)框架類庫BizLibrary中擴(kuò)展的新的AppBean基礎(chǔ)類型和新的應(yīng)用上下文。根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(Biz Library)。業(yè)務(wù)框架類庫還提供業(yè)務(wù)相關(guān)的擴(kuò)展接口,用于擴(kuò)展新的應(yīng)用;基于基礎(chǔ)框架類庫和業(yè)務(wù)框架類庫,開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用、基礎(chǔ)服務(wù)以及代理服務(wù)器。應(yīng)用依賴于Framework禾口 Biz Library,實(shí)現(xiàn)業(yè)務(wù)需求?;A(chǔ)服務(wù)依賴于Framework和Biz Library,提供基礎(chǔ)服務(wù)。代理服務(wù)器依賴于Framework和Biz Library,實(shí)現(xiàn)基于業(yè)務(wù)的路由與負(fù)載功能。在本發(fā)明實(shí)施例中,提供了基于應(yīng)用組件(AppBean)的應(yīng)用開發(fā)模式。這里定義最小的開發(fā)及負(fù)載的粒度為AppBean,一個(gè)AppBean定義為實(shí)現(xiàn)一個(gè)微小粒度功能的應(yīng)用程序。一般情況下將應(yīng)用定義到信令級(jí)別,定義到信令級(jí)別的應(yīng)用的具體表現(xiàn)形式根據(jù)業(yè)務(wù)的不同,可以有多種,比如可以是一個(gè)特定的Http請(qǐng)求(如GET/default. do),或一條特定的上行短信(FROM :13800138000 ;TO :10658000032 ;TEXT :HELL0),或一條特定的 SIP 指令,或一條RPC指令(一個(gè)方法,不是一個(gè)接口 )等等。本發(fā)明實(shí)施例中,處理一條或者多條指令的應(yīng)用,定義為AppBean,應(yīng)用能夠開發(fā)和部署的最小單位為AppBean,能夠針對(duì)一條信令或多條信令開發(fā)AppBean,并將其部署到平臺(tái)系統(tǒng)中,接受用戶的請(qǐng)求,請(qǐng)求可能來自用戶的客戶端軟件,瀏覽器,內(nèi)部引用,或外部信令調(diào)用。本發(fā)明實(shí)施例中,基于Java實(shí)現(xiàn)部分應(yīng)用,AppBean被描述為一個(gè)接口 (interface),所有特定的AppBean都會(huì)從本接口派生,用以實(shí)現(xiàn)特定的方法,比如自安裝機(jī)制、配置初始化、服務(wù)加載及服務(wù)卸載等。AppBean是一個(gè)抽象接口,但應(yīng)用開發(fā)時(shí),必須從為特定信令處理設(shè)計(jì)的AppBean 基礎(chǔ)類型(BaseAppBeanTypes)進(jìn)行派生。在本發(fā)明實(shí)施例中,已實(shí)現(xiàn)的AppBean基礎(chǔ)類型包括處理HTTP請(qǐng)求的 HttpAppBean、處理RPC請(qǐng)求的RemoteAppBean和處理定時(shí)任務(wù)的JobAppBean等。每個(gè)特定的AppBean基礎(chǔ)類型會(huì)處理特定形式的信令,應(yīng)用開發(fā)人員需要選擇合適的AppBean基礎(chǔ)類型去實(shí)現(xiàn)自己的應(yīng)用。AppBean基礎(chǔ)類型不局限于上述的幾種,在 Biz Library的層面上可以擴(kuò)展特定類型的BaseAppBeanType,并且實(shí)現(xiàn)特定類型處理的 Proxy。關(guān)于應(yīng)用上下文(稱為AppContext)本發(fā)明中不僅將開發(fā)模式拆分為面向單獨(dú)信令,并且將信令與應(yīng)用上下文綁定在一起,應(yīng)用上下文稱為AppContext。在本發(fā)明的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,應(yīng)用服務(wù)上下文 (AppContext)是應(yīng)用調(diào)用及資源定位的關(guān)鍵。這里應(yīng)用調(diào)用包括代理服務(wù)器調(diào)用應(yīng)用服務(wù),以及應(yīng)用服務(wù)內(nèi)調(diào)用其他的應(yīng)用服務(wù),這兩種應(yīng)用都需要AppContext來實(shí)現(xiàn)目標(biāo)應(yīng)用服務(wù)的定位。AppContext可以這樣理解=AppContext綁定一個(gè)當(dāng)前應(yīng)用運(yùn)行的所在環(huán)境身份, 比如當(dāng)前用戶,這樣做,開發(fā)人員在開發(fā)時(shí)刻是基于AppContext (當(dāng)前用戶)進(jìn)行開發(fā),訪問資源(數(shù)據(jù)庫,文件,緩存)都必須通過當(dāng)前的AppContext,這樣開發(fā)者可以不用管理數(shù)據(jù)庫,文件,緩存等的拆分問題,甚至用戶數(shù)據(jù)的跨機(jī)房問題,只關(guān)基于當(dāng)前用戶進(jìn)行開發(fā)即可,極大的簡化了開發(fā)模式,將系統(tǒng)部署結(jié)構(gòu)與開發(fā)過程隔離開來,實(shí)現(xiàn)高效,便捷的 PaaS平臺(tái)。AppContext從數(shù)據(jù)構(gòu)成上分為兩部分,AppContext是可序列化與反序列化的(1)通用資源標(biāo)志符URI (Context Uri)為字符串格式,包括用戶的索引信息,負(fù)責(zé)后續(xù)的定位,如 id :230302023 ;session 13910000001。(2)附加數(shù)據(jù)(ContextData):是預(yù)定義好的強(qiáng)類型數(shù)據(jù)結(jié)構(gòu),可以包含多個(gè)字段;其包括該應(yīng)用的屬性信息;應(yīng)用的屬性信息包括會(huì)話參數(shù)、授權(quán)信息等;在某些場(chǎng)合,附加數(shù)據(jù)會(huì)由Proxy產(chǎn)生提供給后面應(yīng)用,在長連接的Proxy服務(wù)器場(chǎng)景(參見ftOxys章節(jié))。支持getNamedValue (String fieldName)方法,可以獲取到一個(gè)特定字段名的數(shù)據(jù),此方法被用于灰度發(fā)布場(chǎng)合(見后文)。AppContext是抽象基類,在Framework中預(yù)定義了以下的AppContext子類NullContext 預(yù)定義的空上下文,用在不需要上下文的場(chǎng)合;SessionContext 預(yù)定義的只保存會(huì)話Id的上下文。在復(fù)雜應(yīng)用中,一般會(huì)在Biz Library中擴(kuò)展特定的AppContext,比如一個(gè)IM系統(tǒng),在SIP Proxy上會(huì)保存用戶的kssion,那么我們可以擴(kuò)展herContext,那么每個(gè)應(yīng)用處理的時(shí)候都會(huì)接收到Proxy上保存的kssion信息。除標(biāo)準(zhǔn)AppContext,在使用本發(fā)明的應(yīng)用服務(wù)系統(tǒng)平臺(tái)進(jìn)行擴(kuò)展開發(fā)的時(shí)候,需要先定制業(yè)務(wù)相關(guān)的一些基礎(chǔ),AppContext就是其中之一。下面例舉一個(gè)關(guān)于AppContext 的具體實(shí)施例。例如使用本發(fā)明的應(yīng)用服務(wù)平臺(tái)系統(tǒng)開個(gè)一個(gè)即時(shí)消息(IM)系統(tǒng),這個(gè)IM 系統(tǒng)中的用戶都采用一個(gè)整數(shù)id進(jìn)行定位,那么可以根據(jù)如下方式定制這個(gè)IM系統(tǒng)的 AppContex,從 AppContext 派生,命名為 UserContext · Uri部分:"id :230302023”,表示用戶的id,那么通過這個(gè)用戶的id,可以定位用戶的應(yīng)用服務(wù)位置與數(shù)據(jù)庫存儲(chǔ)位置;· Data 部分-用戶的登錄網(wǎng)絡(luò)地址;-客戶端類型等;當(dāng)定制了用戶的herContext,所有該系統(tǒng)內(nèi)基于用戶進(jìn)行操作的AppBean都會(huì)用UserContext作為AppBean的C參數(shù),如-獲取用戶資料;-設(shè)置用戶資料;-獲取好友列表等;此外,在本發(fā)明的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,除了提供基于單個(gè)用戶的AppContext 外,還提供了基于群組的業(yè)務(wù)類型,開發(fā)基于群組的應(yīng)用服務(wù),也需要定制基于群組的AppContext,IM系統(tǒng)使用一個(gè)整數(shù)用于標(biāo)識(shí)群組,從AppContext派生,命名為 GroupContext, GroupContext 的結(jié)構(gòu)如下· Uri部分“group 123123”,標(biāo)識(shí)群組id,表示用戶的id,那么通過這個(gè)群組的 id,我們可以定位群組的應(yīng)用服務(wù)位置,與數(shù)據(jù)庫存儲(chǔ)位置;· Data 部分-群組的會(huì)話參數(shù);-群組的授權(quán)等;當(dāng)定制了基于群組的GroupContext后,該系統(tǒng)內(nèi)基于群組進(jìn)行操作的所有 AppBean 都會(huì)用 GroupContext 作為 AppBean 的 C 參數(shù),如-設(shè)置群組名稱;-更新群組權(quán)限;-獲取群離線消息等。應(yīng)用的元數(shù)據(jù)標(biāo)注(Annotations)信息在發(fā)明中,開發(fā)一個(gè)應(yīng)用AppBean及擴(kuò)展AppBean時(shí),會(huì)通過Java元數(shù)據(jù)標(biāo)注 (Annotation)標(biāo)注應(yīng)用的負(fù)載方式,運(yùn)行方式等數(shù)據(jù),此數(shù)據(jù)編譯后,可以在運(yùn)行期加載, 或從編譯后的二進(jìn)制包中將數(shù)據(jù)從反射中提取出來。 在本發(fā)明的實(shí)施例中,一些預(yù)定義的Annotations如下文描述,擴(kuò)展的AppBean都會(huì)定義自己特定的Annotation。1. OAppName (應(yīng)用的名字和分類名)·聲明AppBean的名字以及分類名;-OAppName (category = 〃 Core" ,name=" GetUserInfo");這里fexx為Java語言對(duì)程序元數(shù)據(jù)的標(biāo)注。· Category :name 全局唯一;· category 可以用于 AppBean 的分類;-方便運(yùn)維人員進(jìn)行配置與分類;
10
-在一個(gè)Category中,如果允許一個(gè)AppBean能夠被其他Category中的AppBean 訪問,必須將這個(gè)AppBean聲明成為公開,或友好;· iPubIicO 允許所有的 AppBean 訪問;· iFriendlly( “Core,,)只允許指定 Category 訪問;· OFriendlly( "Core =AddBuddy")只允許指定應(yīng)用訪問。2. OStateful (應(yīng)用的狀態(tài)信息)·當(dāng)聲明一個(gè)AppBean為有狀態(tài)的,則此個(gè)AppBean可以將狀態(tài)保存在本機(jī)內(nèi)存中;·沒有標(biāo)注OStateful的應(yīng)用均視為無狀態(tài)應(yīng)用,禁止使用本機(jī)內(nèi)存進(jìn)行狀態(tài)的保存; 如果一個(gè)Category 中的多個(gè)AppBean聲明的 Stateful 參數(shù)一樣(“Presence”), 則這個(gè)幾個(gè)AppBean啟動(dòng)到一個(gè)進(jìn)程中,并且不允許單獨(dú)熱更新;· iStateful的應(yīng)用在熱更新的時(shí)候會(huì)丟失狀態(tài),所以盡量用memcache方式去代替,建議僅在某些性能要求很高的領(lǐng)域啟動(dòng);·當(dāng)某個(gè)AppBean被聲明為Stateful時(shí),針對(duì)這個(gè)AppBean的訪問會(huì)采用這個(gè) AppBean的AppContext綁定的一致性Hash的方式進(jìn)行路由。3. OHttpPrefixHttpPrefix (HTTP 前綴,只針對(duì) HttpAppBean)·用于標(biāo)注一個(gè)HttpAppBean處理的Http請(qǐng)求范圍;.^niOHttpPrefixr /login, do");-表示該HttpAppBean處理以login,do為起始的http請(qǐng)求。Message Name (事件名稱,只針對(duì) MessageAppBean)·用于標(biāo)注一個(gè)MessageAppBean的名稱;·如@Message Name4. iContextLoader (加載應(yīng)用服務(wù)上下文信息) 用于標(biāo)注一個(gè)AppBean如何加載AppContext 如@ContextLoader (name = 〃 CookieParser〃 )-表示通過名為CookieParser的程序去處理處理Context;-CookieParser程序內(nèi)置在Proxy當(dāng)中,通過處理Http Request中的Cookie字段去加載用戶相關(guān)信息。在本發(fā)明的實(shí)施例中,一些預(yù)定義的Annotations不限于如上的幾種,可以根據(jù)實(shí)際業(yè)務(wù)需求增加其他的標(biāo)注,如后文中會(huì)提到的OPeersSite。基礎(chǔ) AppBean 類型(AppBeanBaseType)在Framework中,實(shí)現(xiàn)一個(gè)AppBeanBaseType的步驟如下描述一個(gè)AppBeanBaseType包括以下組件及特性· AppBeanBaseType 是一個(gè)抽象基類'AppBeanBaseType 必須添力口標(biāo)注 OAppBeanBaseType,這樣才能被 AppLoader 識(shí)別到 在AppBean中并沒有定義處理業(yè)務(wù)的方法,但是在AppBeanBaseType中必須提供
11處理業(yè)務(wù)的抽象方法,提供給應(yīng)用子類去實(shí)現(xiàn)·應(yīng)用時(shí)刻,AppBeanBaseType是單件,業(yè)務(wù)處理抽象方法中會(huì)傳入本次業(yè)務(wù)運(yùn)行的全部請(qǐng)求參數(shù),與應(yīng)答方法的事務(wù)抽象類,我們稱之為AppTx· AppTx 一般情況下會(huì)綁定在一個(gè)AppContext上·必須實(shí)現(xiàn)相應(yīng)的AppHost類,AppHost類會(huì)實(shí)際觸發(fā)AppBean的業(yè)務(wù)處理方法, AppHost 會(huì)與 AppBeanBaseType 一起派生· 一般情況下需要實(shí)現(xiàn)負(fù)責(zé)分發(fā)此請(qǐng)求的AppBeanRouteManager以及處理應(yīng)用的 ftOxy (獨(dú)立代理服務(wù))在Framework中實(shí)現(xiàn)了幾個(gè)基礎(chǔ)的AppBeanBaseType,但是應(yīng)用可使用的AppBean 并不限于下面的幾個(gè)類型,還可以在Biz Library層次上進(jìn)行擴(kuò)展。1. HttpAppBean (超文本傳輸協(xié)議應(yīng)用組件)HttpAppBean用于處理一條特定的Http請(qǐng)求,Http請(qǐng)求可能來自于來自用戶客戶端瀏覽器或程序的直接請(qǐng)求,請(qǐng)求會(huì)通過Http Proxy的智能7層負(fù)載轉(zhuǎn)發(fā)到應(yīng)用進(jìn)程上。 Http請(qǐng)求也可能來源于其他服務(wù)器的請(qǐng)求。HttpAppBearKC extends AppContext〉是一個(gè)泛型類,其中泛型參數(shù)解釋如下·上下文<C> 特定類型的上下文· Context來源從何處獲取上下文C ;-URL前綴此應(yīng)用處理的URL前綴(URL前綴通過OHttpPrefix元數(shù)據(jù)標(biāo)注處理)HttpAppBean通過標(biāo)注來指明自己所處理的請(qǐng)求tolPrefix (前綴),例如,開發(fā)一個(gè)用于最簡單的HttpAppBean的步驟大致如下1.從 HttpAppBean 的基類派生OHttpPrefix( “/Hello”)OAppName (category =,,example,,name ="hello")class Hello WorldAppBean extends HttpAppBean<NullContext>()2.指定上下文類型<C>,為NullContext,即不需要上下文;3.通過OHttpPrefix標(biāo)注,表示用于處理發(fā)到OHttpPrefix標(biāo)注的地址的請(qǐng)求;4.通過OAppName標(biāo)注,表示本應(yīng)用的目錄為example,名稱為hello ;5.實(shí)現(xiàn)process ()方法,process ()方法為HttpAppBean中定義的抽象方法,讀取上HttpRequest,處理后,返回HttpResponse給客戶端。例如開發(fā)一個(gè)用于用戶統(tǒng)一登錄認(rèn)證的應(yīng)用的流程為1.從 HttpAppBean 的基類派生;2.指定應(yīng)用服務(wù)上下文類型C為kssionContext ;3.指定Context來源為cookie中的ssic字段;4.實(shí)現(xiàn)process方法,讀取HttpRequest,處理后返回HttpResponse給客戶端。2. RemoteAppBean (遠(yuǎn)程調(diào)用應(yīng)用組件)RemoteAppBean從AppBean派生,用來處理一個(gè)特定的Rpc請(qǐng)求,Rpc請(qǐng)求可能來源于下列幾個(gè)場(chǎng)景·來源于其他AppBean的調(diào)用,可能是任意來源類型; 來源于其 proxy;
·來源于其他外部服務(wù)調(diào)用。RemoteAppBean是一個(gè)泛型類,其中泛型參數(shù)解釋如下· <A> 請(qǐng)求參數(shù),強(qiáng)類型定義,可序列化;· <R> 應(yīng)答參數(shù),強(qiáng)類型定義,可序列化;· <C> 特定類型的應(yīng)用上下文。實(shí)現(xiàn)一個(gè)RemoteAppBean必須提供確定的下述類型,例如開發(fā)一個(gè)處理獲取用戶資料的RemoteAppBean的步驟如下1.從 RemoteAppBean 的基類派生OAppName (category =,,example,,,name = “ GetUserInfο“)class GetUserInfo extends RemoteAppBean<GetOption, UserInfο, NullContext〉2.定義請(qǐng)求參數(shù)類型<A>為GetOption,GetOption為可序列化類,保存獲取用戶的id及選項(xiàng)參數(shù);3.定義應(yīng)答參數(shù)類型<R>為Userlnfo,UserInfo為可序列化類,保存用戶信息;4.定義上下文<C>為NullContext,本案例中不需要上下文;5.繼承后實(shí)現(xiàn)process ()方法用于處理業(yè)務(wù)邏輯,繼承l(wèi)oad ()方法用與初始化, 繼承imloadO方法卸載,繼承setupO方法實(shí)現(xiàn)自安裝。 當(dāng)調(diào)用一個(gè)RemoteAppBean時(shí)必須提供這個(gè)RemoteAppBean在實(shí)現(xiàn)時(shí)所聲明的特定類型的應(yīng)用上下文(AppContext)。一個(gè)獲取用戶信息的應(yīng)用會(huì)如下聲明1.從 RemoteAppBean GetOption, Userlnfo, UserContext 中派生;a.請(qǐng)求參數(shù)A為GetOption,為獲取用戶的一些選項(xiàng)參數(shù)b.應(yīng)答參數(shù)R為Userlnfo,為用戶信息的集合c.應(yīng)用上下文C SherContext,為當(dāng)前上下文的用戶信息,UserContext用于標(biāo)識(shí)用戶ID2.實(shí)現(xiàn)process方法處理業(yè)務(wù)邏輯3. JobAppBean (任務(wù)應(yīng)用組件)JobAppBean從AppBean派生,用來處理一個(gè)定時(shí)任務(wù),并且可以在全局中保證定時(shí)任務(wù)在某個(gè)資源上獨(dú)占運(yùn)行。實(shí)現(xiàn)一個(gè)JobAppBean的步驟如下1.從JobAppBean的基類派生iJobSchedule(cron =,,φ/5氺氺氺氺,,)iJobResource (resource = "USERDB", parallel true)OAppName (category =,,example,,,name = " GetUserInfο")class GetUserJobApp extends JobAppBean2.定義Job的運(yùn)行時(shí)間,其中Job的運(yùn)行時(shí)間按照Corn表達(dá)式中表述的時(shí)間運(yùn)行3.定義Job將要獨(dú)占的資源,關(guān)于資源的定義請(qǐng)見下一節(jié),綁定資源后,平臺(tái)系統(tǒng)中的JobAppBean在針對(duì)此資源時(shí)將不會(huì)重復(fù)運(yùn)行?;贏ppContext的資源訪問定位
在本發(fā)明中,定義并實(shí)現(xiàn)一個(gè)具有某種業(yè)務(wù)功能的應(yīng)用后,這個(gè)應(yīng)用勢(shì)必要訪問各種資源,如數(shù)據(jù)庫、文件服務(wù)器、內(nèi)存對(duì)象緩沖服務(wù)器或其他提供的服務(wù)等。本發(fā)明中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)是大型分布式系統(tǒng),所以這些資源都不是單點(diǎn)服務(wù),也就是同一個(gè)類型的數(shù)據(jù)庫可能存在多個(gè)縱向拆分(Siarding)的實(shí)例。本發(fā)明中將一個(gè)應(yīng)用能夠訪問的資源綁定在了其應(yīng)用上下文AppContext上。比如,聲明一個(gè)獲取用戶信息的應(yīng)用,名為GetheHnfo App,在應(yīng)用的實(shí)現(xiàn)環(huán)節(jié)讀取用戶數(shù)據(jù)庫⑴serDB),將結(jié)果返回。其中^erDB存在多個(gè)通過用戶id進(jìn)行取模后進(jìn)行縱向拆分的實(shí)例。那么具體過程如下1.代理服務(wù)器Http Proxy接收到來自于客戶端的Http請(qǐng)求;2. Http Proxy通過Http請(qǐng)求的URL判斷該請(qǐng)求對(duì)應(yīng)的應(yīng)用;具體為Http Proxy 通過訪問中心服務(wù)器上的應(yīng)用配置信息列表,找到元數(shù)據(jù)標(biāo)注Annotations字段中的@ HttpPrefix與Http請(qǐng)求的URL —致的應(yīng)用配置信息列表項(xiàng),該表項(xiàng)對(duì)應(yīng)的應(yīng)用即為該 Http請(qǐng)求所對(duì)應(yīng)的應(yīng)用;3. Http Proxy通過步驟2識(shí)別該請(qǐng)求是GetUserInfoApp的請(qǐng)求,并需要 UserContext作為上下文參數(shù);4. Http Prorxy根據(jù)應(yīng)用配置信息表項(xiàng)中的Annotations字段中的0 ContextLoader,以及Http請(qǐng)求報(bào)文中提取的相關(guān)信息創(chuàng)建^erContext ;5. Http Proxy在來自客戶端的Http請(qǐng)求中添加了 UserContext數(shù)據(jù)后將Http 請(qǐng)求轉(zhuǎn)發(fā)到Ge切seHnfoApp所在的應(yīng)用服務(wù)器;這里通過查詢應(yīng)用運(yùn)行信息列表獲得 GetUserInfoAPP的服務(wù)地址。6.應(yīng)用服務(wù)器上的運(yùn)行GetUserInf0App的應(yīng)用進(jìn)程接收到Http請(qǐng)求,提取 UserContext,并交給 GetUserInfoApp 處理;7. GetUserInfoApp 讀取 UserDB,在讀取 UserDB 的時(shí)候,通過 UserContext 中的 id 信息,進(jìn)行^erDB的定位;8. GetUserInfoApp 組織返回報(bào)文,并返回給 Http Proxy ;9. Http Proxy將返回報(bào)文返回給客戶端。在上述過程的步驟7中,通過資源(Resource)表進(jìn)行定位。在本發(fā)明的一個(gè)實(shí)施例中的資源表如表1所示
權(quán)利要求
1.一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法,其特征在于,實(shí)現(xiàn)多個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng),在每個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)中設(shè)置代理服務(wù)器、計(jì)算應(yīng)用服務(wù)系統(tǒng)和網(wǎng)關(guān),且在云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存應(yīng)用的描述信息以及應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系,該方法包括在一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)代理服務(wù)器接收客戶端請(qǐng)求消息,對(duì)客戶端請(qǐng)求消息進(jìn)行解析,確定對(duì)應(yīng)的應(yīng)用,根據(jù)該應(yīng)用的描述信息創(chuàng)建應(yīng)用上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用上下文后,根據(jù)所述應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;所述云計(jì)算應(yīng)用服務(wù)系統(tǒng)中的所述應(yīng)用服務(wù)器在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用進(jìn)行處理;所述對(duì)應(yīng)的應(yīng)用處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),根據(jù)所述應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位,得出處理結(jié)果;應(yīng)用服務(wù)器將所述處理結(jié)果經(jīng)代理服務(wù)器返回給客戶端;在各應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)對(duì)應(yīng)用進(jìn)行跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在每個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)中云計(jì)算應(yīng)用服務(wù)系統(tǒng)包括中心服務(wù)器、資源服務(wù)器和由多個(gè)應(yīng)用服務(wù)器組成的應(yīng)用服務(wù)器集群;其中,在資源服務(wù)器上保存應(yīng)用服務(wù)器上的各應(yīng)用處理客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)時(shí)需要訪問的數(shù)據(jù)資源;應(yīng)用服務(wù)器集群上負(fù)載并運(yùn)行應(yīng)用;所述在云計(jì)算應(yīng)用服務(wù)系統(tǒng)中保存應(yīng)用的描述信息以及應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系包括中心服務(wù)器接收外部上傳的應(yīng)用,將應(yīng)用的描述信息保存到應(yīng)用配置信息列表中,并將應(yīng)用部署到應(yīng)用服務(wù)器集群中的應(yīng)用服務(wù)器上;應(yīng)用服務(wù)器集群中的應(yīng)用服務(wù)器將所負(fù)載的應(yīng)用的運(yùn)行信息上傳到中心服務(wù)器上的用于保存應(yīng)用與應(yīng)用服務(wù)器之間對(duì)應(yīng)關(guān)系的應(yīng)用運(yùn)行信息列表中;其中,應(yīng)用配置信息列表包括如下信息應(yīng)用ID、應(yīng)用名稱、應(yīng)用類型、應(yīng)用進(jìn)程名和應(yīng)用元數(shù)據(jù)標(biāo)注;應(yīng)用運(yùn)行信息列表包括如下信息應(yīng)用進(jìn)程名稱和應(yīng)用的服務(wù)地址;所述代理服務(wù)器接收客戶端請(qǐng)求消息,對(duì)客戶端請(qǐng)求消息進(jìn)行解析,確定對(duì)應(yīng)的應(yīng)用, 以及所述根據(jù)應(yīng)用與應(yīng)用服務(wù)器之間的對(duì)應(yīng)關(guān)系將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器包括代理服務(wù)器在接收到客戶端請(qǐng)求消息時(shí),對(duì)客戶端請(qǐng)求消息進(jìn)行解析,通過查詢中心服務(wù)器上的應(yīng)用配置信息列表識(shí)別所述客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用, 通過查詢中心服務(wù)器上的應(yīng)用配置信息列表和應(yīng)用運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用的服務(wù)地址,根據(jù)所獲得的服務(wù)地址將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)所在的應(yīng)用服務(wù)ο
3.根據(jù)權(quán)利要求2所述的方法,其特征在于, 各應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)進(jìn)行通信;將只承載與本應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)的用戶相關(guān)的數(shù)據(jù)和應(yīng)用的應(yīng)用服務(wù)平臺(tái)系統(tǒng)定義為對(duì)等系統(tǒng);將承載本應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)的用戶以及其他用戶的數(shù)據(jù)和應(yīng)用的應(yīng)用服務(wù)平臺(tái)系統(tǒng)定義為非對(duì)等系統(tǒng)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述通過網(wǎng)關(guān)對(duì)應(yīng)用進(jìn)行跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問包括如果一個(gè)應(yīng)用只與一個(gè)對(duì)等系統(tǒng)中的用戶相關(guān),則在該應(yīng)用的應(yīng)用元數(shù)據(jù)標(biāo)注中增加對(duì)等系統(tǒng)標(biāo)注;如果一個(gè)應(yīng)用不與特定對(duì)等系統(tǒng)中的用戶相關(guān),則該應(yīng)用的應(yīng)用元數(shù)據(jù)標(biāo)注中不增加對(duì)等系統(tǒng)標(biāo)注;通過網(wǎng)關(guān)將不與特定對(duì)等系統(tǒng)中的用戶相關(guān)的各應(yīng)用的路由信息在各個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)間進(jìn)行同步;根據(jù)所同步的路由信息實(shí)現(xiàn)不與特定對(duì)等系統(tǒng)中的用戶相關(guān)的應(yīng)用的跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述通過網(wǎng)關(guān)將不與特定對(duì)等系統(tǒng)中的用戶相關(guān)的各應(yīng)用的路由信息在各個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)間進(jìn)行同步包括每個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的中心服務(wù)器查找出本應(yīng)用服務(wù)平臺(tái)系統(tǒng)中部署的應(yīng)用元數(shù)據(jù)標(biāo)注中不包括對(duì)等系統(tǒng)標(biāo)注的應(yīng)用,作為需要同步的應(yīng)用,并將需要同步的應(yīng)用的對(duì)應(yīng)應(yīng)用配置信息列表項(xiàng)發(fā)送給本應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān),本應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān)將所接收的對(duì)應(yīng)應(yīng)用配置信息列表項(xiàng)信息發(fā)送給其他各應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的網(wǎng)關(guān);接收到所述對(duì)應(yīng)應(yīng)用配置信息列表項(xiàng)的網(wǎng)關(guān)做如下處理對(duì)于所接收的每個(gè)應(yīng)用配置信息列表項(xiàng),如果本地的應(yīng)用配置信息列表中存在對(duì)應(yīng)的項(xiàng),且其中的應(yīng)用進(jìn)程名稱不為網(wǎng)關(guān),則忽略,如果本地的應(yīng)用配置信息列表中不存在對(duì)應(yīng)的項(xiàng)或者存在但其中的應(yīng)用進(jìn)程名為網(wǎng)關(guān),則用接收的應(yīng)用配置信息列表項(xiàng)更新本地的應(yīng)用配置信息列表,并在更新后的應(yīng)用配置信息列表項(xiàng)中增加遠(yuǎn)程系統(tǒng)字段,將該字段的值設(shè)置為所接收應(yīng)用配置信息列表項(xiàng)的來源系統(tǒng)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)所同步的路由信息實(shí)現(xiàn)不與特定對(duì)等系統(tǒng)中的用戶相關(guān)的應(yīng)用的跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問包括當(dāng)要訪問不與特定對(duì)等系統(tǒng)中的用戶相關(guān)的應(yīng)用時(shí),首先從本應(yīng)用服務(wù)平臺(tái)系統(tǒng)的中心服務(wù)器獲取對(duì)應(yīng)的應(yīng)用配置信息列表項(xiàng);查看對(duì)應(yīng)的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用元數(shù)據(jù)標(biāo)注中是否包含對(duì)等系統(tǒng)標(biāo)注;如果包含對(duì)等系統(tǒng)標(biāo)注,則通過根據(jù)該應(yīng)用的應(yīng)用上下文確定目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng);如果不包含對(duì)等系統(tǒng)標(biāo)注,則通過該對(duì)應(yīng)的應(yīng)用配置信息列表項(xiàng)中的遠(yuǎn)程系統(tǒng)字段確定目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng);根據(jù)所確定的目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng)獲知該目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān)的地址,并將訪問請(qǐng)求通過本應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān)轉(zhuǎn)發(fā)到目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān);目標(biāo)應(yīng)用服務(wù)平臺(tái)系統(tǒng)的網(wǎng)關(guān)接收到所述訪問請(qǐng)求后根據(jù)本系統(tǒng)內(nèi)的中心服務(wù)器上的應(yīng)用配置信息列表和應(yīng)用運(yùn)行信息列表,將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的應(yīng)用。
7.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的方法,其特征在于,所述代理服務(wù)器根據(jù)應(yīng)用的描述信息創(chuàng)建應(yīng)用上下文包括代理服務(wù)器在接收到客戶端請(qǐng)求消息時(shí),從客戶端請(qǐng)求消息中提取請(qǐng)求參數(shù),查詢中心服務(wù)器中的應(yīng)用配置信息列表,查找出請(qǐng)求參數(shù)與元數(shù)據(jù)標(biāo)注字段符合的應(yīng)用配置信息列表項(xiàng),然后根據(jù)該應(yīng)用配置信息列表項(xiàng)中的元數(shù)據(jù)標(biāo)注字段中的關(guān)于加載應(yīng)用上下文的信息,創(chuàng)建應(yīng)用上下文。
8.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的方法,其特征在于,所述中心服務(wù)器上還保存資源列表;資源列表包括如下信息資源名稱、資源類型、應(yīng)用上下文類型、定位算法名稱和定位算法參數(shù);所述應(yīng)用處理客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),根據(jù)所述應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位包括應(yīng)用在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過程中根據(jù)應(yīng)用上下文以及資源列表中的對(duì)應(yīng)信息進(jìn)行資源定位。
9.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的方法,其特征在于,所述代理服務(wù)器在接收到客戶端請(qǐng)求消息時(shí),對(duì)客戶端請(qǐng)求消息進(jìn)行解析,通過查詢中心服務(wù)器上的應(yīng)用配置信息列表識(shí)別所述客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用包括代理服務(wù)器在接收到HTTP請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的統(tǒng)一資源定位符URL,查找出中心服務(wù)器上的應(yīng)用元數(shù)據(jù)標(biāo)注字段包括有與所述URL—致信息的應(yīng)用配置信息列表項(xiàng),根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用名稱識(shí)別出該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用;或者,代理服務(wù)器在接收到Rpc請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的遠(yuǎn)程調(diào)用服務(wù)名稱,查找出中心服務(wù)器上應(yīng)用名稱字段與所述遠(yuǎn)程調(diào)用服務(wù)名稱一致的應(yīng)用配置信息列表項(xiàng),根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中應(yīng)用名稱字段識(shí)別出該請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用;所述通過查詢中心服務(wù)器上的應(yīng)用配置信息列表和應(yīng)用運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用的服務(wù)地址包括代理服務(wù)器根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用進(jìn)程名,查找出中心服務(wù)器上的應(yīng)用進(jìn)程名稱字段包含與所述應(yīng)用進(jìn)程名一致信息的應(yīng)用運(yùn)行信息列表項(xiàng),從所查找出的應(yīng)用運(yùn)行信息列表項(xiàng)中獲取應(yīng)用的服務(wù)地址信息。
10.根據(jù)權(quán)利要求2至6中任一項(xiàng)所述的方法,其特征在于,所述應(yīng)用服務(wù)平臺(tái)系統(tǒng)基于如下層次結(jié)構(gòu)進(jìn)行開發(fā)開發(fā)基礎(chǔ)框架類庫,所述基礎(chǔ)框架類庫中定義多種應(yīng)用組件AppBean基礎(chǔ)類型、應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于處理不同類型的信令;根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫;基于基礎(chǔ)框架類庫和業(yè)務(wù)框架類庫,開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用;以及,基于基礎(chǔ)框架類庫和業(yè)務(wù)框架類庫,實(shí)現(xiàn)代理服務(wù)器基于業(yè)務(wù)的路由與負(fù)載功能。
全文摘要
本發(fā)明公開了一種多應(yīng)用服務(wù)平臺(tái)系統(tǒng)中的應(yīng)用訪問方法。在一個(gè)應(yīng)用服務(wù)平臺(tái)系統(tǒng)內(nèi)代理服務(wù)器接收客戶端請(qǐng)求消息,確定對(duì)應(yīng)的應(yīng)用,創(chuàng)建應(yīng)用上下文,在客戶端請(qǐng)求消息中添加應(yīng)用上下文后,將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;應(yīng)用服務(wù)器在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),交給對(duì)應(yīng)的應(yīng)用進(jìn)行處理;對(duì)應(yīng)的應(yīng)用處理該客戶端請(qǐng)求消息,根據(jù)應(yīng)用上下文進(jìn)行數(shù)據(jù)資源定位,得出處理結(jié)果;應(yīng)用服務(wù)器將處理結(jié)果經(jīng)代理服務(wù)器返回給客戶端;在各應(yīng)用服務(wù)平臺(tái)系統(tǒng)之間通過網(wǎng)關(guān)對(duì)應(yīng)用進(jìn)行跨應(yīng)用服務(wù)平臺(tái)系統(tǒng)的訪問。本發(fā)明的技術(shù)方案能降低應(yīng)用平臺(tái)系統(tǒng)的開發(fā)難度,提高部署的靈活性并降低部署的難度。
文檔編號(hào)H04L29/06GK102427480SQ20111046037
公開日2012年4月25日 申請(qǐng)日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者李春雷, 高磊 申請(qǐng)人:北京新媒傳信科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1