專利名稱:一種應(yīng)用開發(fā)方法和運(yùn)行該方法所開發(fā)應(yīng)用的平臺(tái)系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種應(yīng)用開發(fā)方法和運(yùn)行該方法所開發(fā)應(yīng)用的平臺(tái)系統(tǒng)。
背景技術(shù):
目前,大部分互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用都會(huì)遇到系統(tǒng)規(guī)模變得日益復(fù)雜并且系統(tǒng)規(guī)模增大后,應(yīng)用的開發(fā)也變得異常復(fù)雜。例如,現(xiàn)有的應(yīng)用的開發(fā)模式需要關(guān)心復(fù)雜的服務(wù)器端的分層結(jié)構(gòu)、者數(shù)據(jù)的拆分、訪問其他服務(wù)的接口、負(fù)載等等。因此有必要提出一種應(yīng)用開發(fā)模式,來使應(yīng)用的開發(fā)變得簡(jiǎn)單輕松。
發(fā)明內(nèi)容
本發(fā)明提供了一種應(yīng)用開發(fā)方法和運(yùn)行該方法所開發(fā)應(yīng)用的平臺(tái)系統(tǒng),以解決現(xiàn)有的應(yīng)用開發(fā)過程復(fù)雜的問題為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開了一種應(yīng)用開發(fā)方法,其特征在于,該方法包括將應(yīng)用開發(fā)拆分到單個(gè)信令級(jí)別,并且基于如下層次結(jié)構(gòu)進(jìn)行應(yīng)用開發(fā)開發(fā)基礎(chǔ)框架類庫(kù),所述基礎(chǔ)框架類庫(kù)中定義多種應(yīng)用組件AppBean基礎(chǔ)類型、應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的 AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于處理不同類型的信令;根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫(kù)的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(kù);基于基礎(chǔ)框架類庫(kù)和業(yè)務(wù)框架類庫(kù),開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用;其中,該開發(fā)的應(yīng)用基于應(yīng)用上下文進(jìn)行資源訪問。本發(fā)明還公開了一種運(yùn)行根據(jù)上述方法開發(fā)的應(yīng)用的平臺(tái)系統(tǒng),該系統(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é)果,并返回給客戶端;應(yīng)用服務(wù)器集群中的應(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é)果。由上述可見,針對(duì)大部分互聯(lián)網(wǎng)應(yīng)用和企業(yè)應(yīng)用都會(huì)遇到系統(tǒng)規(guī)模變得日益復(fù)雜,并且規(guī)模日益增大后,應(yīng)用的開發(fā)也變得異常復(fù)雜的問題,本發(fā)明通將普遍的現(xiàn)有后臺(tái)軟件解決方案中按照服務(wù)角色進(jìn)行拆分的方式,改為以細(xì)粒度的信令級(jí)別進(jìn)行應(yīng)用拆分, 并且進(jìn)行應(yīng)用開發(fā)的簡(jiǎn)單方式,降低了開發(fā)的復(fù)雜度;另外,本發(fā)明通過引入應(yīng)用上下文的概念,將復(fù)雜的資源定位與應(yīng)用問的路由從開發(fā)者視角上隔離開,即支持了簡(jiǎn)潔的開發(fā)方式,又能夠使平臺(tái)適用于超大規(guī)模的服務(wù)器集群。
圖1是本發(fā)明實(shí)施例中的運(yùn)行應(yīng)用的平臺(tái)系統(tǒng)的邏輯結(jié)構(gòu)示意圖;圖2是本發(fā)明實(shí)施例中的運(yùn)行應(yīng)用的平臺(tái)系統(tǒng)的一個(gè)實(shí)際組網(wǎng)示意圖;圖3是本發(fā)明實(shí)施例中的應(yīng)用開發(fā)的層次結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明中的應(yīng)用開發(fā)方法包括將應(yīng)用開發(fā)拆分到單個(gè)信令級(jí)別,并且基于如下層次結(jié)構(gòu)進(jìn)行應(yīng)用開發(fā)開發(fā)基礎(chǔ)框架類庫(kù),所述基礎(chǔ)框架類庫(kù)中定義多種應(yīng)用組件AppBean基礎(chǔ)類型、應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的 AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于處理不同類型的信令;根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫(kù)的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(kù);基于基礎(chǔ)框架類庫(kù)和業(yè)務(wù)框架類庫(kù),開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用;其中,該開發(fā)的應(yīng)用基于應(yīng)用上下文進(jìn)行資源訪問。在本發(fā)明中,將應(yīng)用開發(fā)拆分到單個(gè)信令的級(jí)別,并且設(shè)計(jì)出應(yīng)用上下文的概念, 將應(yīng)用中的資源訪問及應(yīng)用的路由綁定在應(yīng)用上下文上,簡(jiǎn)化了應(yīng)用的難度。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。圖1是本發(fā)明實(shí)施例中的運(yùn)行應(yīng)用的平臺(tái)系統(tǒng)的邏輯結(jié)構(gòu)示意圖。在應(yīng)用服務(wù)平臺(tái)系統(tǒng)中設(shè)置代理服務(wù)器和云計(jì)算應(yīng)用服務(wù)系統(tǒng),其中,代理服務(wù)器中設(shè)置代理邏輯部分, 云計(jì)算應(yīng)用服務(wù)系統(tǒng)中設(shè)置應(yīng)用服務(wù)器集群、基礎(chǔ)服務(wù)、資源、中心等邏輯部分。在圖1中, 各邏輯部分的描述如下※代理(Proxy)-用于分發(fā)客戶端的消息,并維護(hù)客戶端狀態(tài)(如長(zhǎng)連接);-代理服務(wù)· SIP Proxy 維護(hù)與客戶端的SIP長(zhǎng)連接;· HTTP Proxy 負(fù)責(zé)分發(fā) Http 應(yīng)用;· SMS Proxy 負(fù)責(zé)分發(fā)短信上行應(yīng)用;※應(yīng)用服務(wù)器集群(AppEngine Hosts)-負(fù)載實(shí)際的應(yīng)用服務(wù)運(yùn)行,可進(jìn)行服務(wù)器分組;※基礎(chǔ)服務(wù)(Basic Service)-平臺(tái)內(nèi)部需求的一些核心應(yīng)用或獨(dú)立應(yīng)用;※資源(Resource)-提供給平臺(tái)使用的系統(tǒng)資源,如
·數(shù)據(jù)庫(kù)(Database) ·文件(File) ·內(nèi)存對(duì)象緩沖服務(wù)器(Memcache)※中心(Center)-整個(gè)系統(tǒng)的管控中心,用于看管所用應(yīng)用服務(wù)的部署、分發(fā)、更新等系統(tǒng)管理操作。圖2是本發(fā)明實(shí)施例中的運(yùn)行應(yīng)用的平臺(tái)系統(tǒng)的一個(gè)實(shí)際組網(wǎng)示意圖。如圖2所示,該平臺(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)系。針對(duì)上述圖1所示邏輯架構(gòu),本發(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ù)庫(kù)服務(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長(zhǎng)連接,SMS代理服務(wù)器負(fù)責(zé)分發(fā)短信上行應(yīng)用。此外,云計(jì)算應(yīng)用服務(wù)系統(tǒng)還包括與應(yīng)用服務(wù)器集群連接的基礎(chǔ)服務(wù)服務(wù)器(在圖2中未畫出該基礎(chǔ)服務(wù)服務(wù)器),用于提供平臺(tái)內(nèi)部需求的一些核心應(yīng)用或獨(dú)立應(yīng)用。在圖2所示的應(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ù)上下文。在圖2所示的應(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)行資源定位??梢姡景l(fā)明這種由上述代理服務(wù)器、應(yīng)用服務(wù)器集群、中心服務(wù)器和資源服務(wù)器構(gòu)成的應(yīng)用服務(wù)平臺(tái)系統(tǒng),將分散的服務(wù)器資源在邏輯上整合到一起,極大降低了應(yīng)用的開發(fā)難度,提高了部署的靈活性并降低了部署的難度。圖3是本發(fā)明實(shí)施例中的應(yīng)用開發(fā)的層次結(jié)構(gòu)示意圖。如圖3所示,代理服務(wù)器上代理服務(wù)器、基礎(chǔ)服務(wù)及負(fù)載運(yùn)行于應(yīng)用服務(wù)器集群上的應(yīng)用都基于如下層次結(jié)構(gòu)進(jìn)行開發(fā)開發(fā)基礎(chǔ)框架類庫(kù)(Framework)基礎(chǔ)框架類庫(kù)提供基礎(chǔ)核心功能與用于在特定業(yè)務(wù)領(lǐng)域進(jìn)行定制的擴(kuò)展接口 ;在基礎(chǔ)框架類庫(kù)中定義并實(shí)現(xiàn)多種應(yīng)用組件AppBean基礎(chǔ)類型,并且基礎(chǔ)框架類庫(kù)中預(yù)定義了應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于不同類型信令的處理;基礎(chǔ)框架類庫(kù)提供的擴(kuò)展接口具體用來在業(yè)務(wù)框架類庫(kù)BizLibrary中擴(kuò)展的新的AppBean基礎(chǔ)類型和新的應(yīng)用上下文。
根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫(kù)的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(kù) (BizLibrary)。業(yè)務(wù)框架類庫(kù)還提供業(yè)務(wù)相關(guān)的擴(kuò)展接口,用于擴(kuò)展新的應(yīng)用;基于基礎(chǔ)框架類庫(kù)和業(yè)務(wù)框架類庫(kù),開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用、基礎(chǔ)服務(wù)以及代理服務(wù)器。應(yīng)用依賴于Framework禾口 Biz Library,實(shí)現(xiàn)業(yè)務(wù)需求。基礎(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ǔ)類型不局限于上述的幾種,在 BizLibrary的層面上可以擴(kuò)展特定類型的BaseAppBeanType,并且實(shí)現(xiàn)特定類型處理的 Proxy。本發(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ù)庫(kù),文件,緩存)都必須通過當(dāng)前的AppContext,這樣開發(fā)者可以不用管理數(shù)據(jù)庫(kù),文件,緩存等的拆分問題,甚至用戶數(shù)據(jù)的跨機(jī)房問題,只關(guān)基于當(dāng)前用戶進(jìn)行開發(fā)即可,極大的簡(jiǎn)化了開發(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)用,在長(zhǎ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ù)庫(kù)存儲(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ù)庫(kù)存儲(chǔ)位置;· Data 部分-群組的會(huì)話參數(shù);-群組的授權(quán)等;當(dāng)定制了基于群組的GroupContext后,該系統(tǒng)內(nèi)基于群組進(jìn)行操作的所有 AppBean 都會(huì)用 GroupContext 作為 AppBean 的 C 參數(shù),如
10
-設(shè)置群組名稱;-更新群組權(quán)限;-獲取群離線消息等。在發(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 “);這里@ΧΧΧ為Java語(yǔ)言對(duì)程序元數(shù)據(jù)的標(biāo)注?!?Category -.name 全局唯一;· category 可以用于 AppBean 的分類;-方便運(yùn)維人員進(jìn)行配置與分類;-在一個(gè)Category中,如果允許一個(gè)AppBean能夠被其他Category中的AppBean 訪問,必須將這個(gè)AppBean聲明成為公開,或友好;· iPubIicO允許所有的 AppBean 訪問;· OFriendlly( “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)用均視為無(wú)狀態(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. OHttpPrefix (HTTP 前綴 / 事件名稱)HttpPrefix (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中必須提供處理業(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è)用于最簡(jiǎn)單的HttpAppBean的步驟大致如下1.從 HttpAppBean 的基類派生OHttpPrefix( “/Hello”)OAppName (category =,,example,,name =" hello")class HellofforldAppBean 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. /ARemoteAppBean 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(coron =,,φ/5氺氺氺氺,,)iJobResource (resource =,,USERDB,,,parallel = true)OAppName (category,,= example,,,name =" GetUserInfo")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)行。基于AppContext的資源訪問定位在本發(fā)明中,定義并實(shí)現(xiàn)一個(gè)具有某種業(yè)務(wù)功能的應(yīng)用后,這個(gè)應(yīng)用勢(shì)必要訪問各種資源,如數(shù)據(jù)庫(kù)、文件服務(wù)器、內(nèi)存對(duì)象緩沖服務(wù)器或其他提供的服務(wù)等。本發(fā)明中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)是大型分布式系統(tǒng),所以這些資源都不是單點(diǎn)服務(wù),也就是同一個(gè)類型的數(shù)據(jù)庫(kù)可能存在多個(gè)縱向拆分(Siarding)的實(shí)例。本發(fā)明中將一個(gè)應(yīng)用能夠訪問的資源綁定在了其應(yīng)用上下文AppContext上。比如,聲明一個(gè)獲取用戶信息的應(yīng)用,名為GetheHnfoApp,在應(yīng)用的實(shí)現(xiàn)環(huán)節(jié)讀取用戶數(shù)據(jù)庫(kù)⑴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)求是Ge^seHnfoApp的請(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ā)到GetUserlnfoApp所在的應(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)用開發(fā)方法,其特征在于,該方法包括將應(yīng)用開發(fā)拆分到單個(gè)信令級(jí)別,并且基于如下層次結(jié)構(gòu)進(jìn)行應(yīng)用開發(fā)開發(fā)基礎(chǔ)框架類庫(kù),所述基礎(chǔ)框架類庫(kù)中定義多種應(yīng)用組件AppBean基礎(chǔ)類型、應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于處理不同類型的信令;根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫(kù)的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(kù); 基于基礎(chǔ)框架類庫(kù)和業(yè)務(wù)框架類庫(kù),開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用;其中,該開發(fā)的應(yīng)用基于應(yīng)用上下文進(jìn)行資源訪問。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)需要開發(fā)新類型應(yīng)用時(shí),該方法還包括利用基礎(chǔ)框架類庫(kù)提供的擴(kuò)展接口,在業(yè)務(wù)框架類庫(kù)中擴(kuò)展與該新類型應(yīng)用對(duì)應(yīng)的 AppBean基礎(chǔ)類型,以及在業(yè)務(wù)框架類庫(kù)中擴(kuò)展針對(duì)該新類型應(yīng)用的應(yīng)用上下文; 利用業(yè)務(wù)框架類庫(kù)提供的擴(kuò)展接口,擴(kuò)展新類型的應(yīng)用。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述應(yīng)用上下文在數(shù)據(jù)構(gòu)成上包括兩部分通用資源標(biāo)志符URI 包括用戶的索引信息,負(fù)責(zé)后續(xù)的資源定位; 附加數(shù)據(jù)包括該應(yīng)用的屬性信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述AppBean基礎(chǔ)類型包括處理超文本傳輸協(xié)議HTTP請(qǐng)求的超文本傳輸協(xié)議應(yīng)用組件HttpAppBean、處理遠(yuǎn)程過程調(diào)用協(xié)議RPC 請(qǐng)求的遠(yuǎn)程調(diào)用應(yīng)用組件RemoteAppBean、和處理定時(shí)任務(wù)的任務(wù)應(yīng)用組件JobAppBean。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法還包括開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用包括令該應(yīng)用的元數(shù)據(jù)標(biāo)注包括以下的一種或多種應(yīng)用的名字和分類名、應(yīng)用的狀態(tài)信息、HTTP前綴/事件名稱、加載應(yīng)用服務(wù)上下文信息。
6.一種運(yùn)行根據(jù)權(quán)利要求1至5中任一項(xiàng)所述方法開發(fā)的應(yīng)用的平臺(tái)系統(tǒng),其特征在于,該系統(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é)果,并返回給客戶端;應(yīng)用服務(wù)器集群中的應(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é)果。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述云計(jì)算應(yīng)用服務(wù)系統(tǒng)包括中心服務(wù)器、資源服務(wù)器和由多個(gè)應(yīng)用服務(wù)器組成的應(yīng)用服務(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)用元數(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ù)資源;代理服務(wù)器,在接收到客戶端請(qǐng)求消息時(shí),用于通過查詢中心服務(wù)器上的應(yīng)用配置信息列表識(shí)別所述客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù),然后通過查詢中心服務(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ù)器。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述中心服務(wù)器,進(jìn)一步用于保存資源列表;資源列表包括如下信息資源名稱、資源類型、應(yīng)用上下文類型、定位算法名稱和定位算法參數(shù);應(yīng)用在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過程中根據(jù)應(yīng)用上下文以及資源列表中的對(duì)應(yīng)信息進(jìn)行資源定位。
9.根據(jù)權(quán)利要求7所述的系統(tǒ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ù)器,用于根據(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ù)地址信息,并根據(jù)所述應(yīng)用的服務(wù)地址信息將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用所在的應(yīng)用服務(wù)器;所述代理服務(wù)器,用于根據(jù)所查找出的應(yīng)用配置信息列表項(xiàng)中的應(yīng)用元數(shù)據(jù)標(biāo)注字段中的關(guān)于加載應(yīng)用上下文的信息,創(chuàng)建應(yīng)用上下文。
10.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述應(yīng)用服務(wù)器集群中的多個(gè)應(yīng)用服務(wù)器被分為多個(gè)不同組;所述中心服務(wù)器上保存有應(yīng)用服務(wù)器列表和應(yīng)用服務(wù)器分組列表;應(yīng)用服務(wù)器列表包括如下信息應(yīng)用服務(wù)器名稱、應(yīng)用服務(wù)器所屬的分組名稱和應(yīng)用服務(wù)器地址;應(yīng)用服務(wù)器分組列表包括應(yīng)用服務(wù)器分組名稱和分組中的應(yīng)用服務(wù)器描述信息;中心服務(wù)器,用于在接收到外部上傳的應(yīng)用時(shí),根據(jù)外部指令將該應(yīng)用部署到單個(gè)應(yīng)用服務(wù)器上,或者部署到屬于同一組的多個(gè)服務(wù)器上。
全文摘要
本發(fā)明公開了一種應(yīng)用開發(fā)方法和運(yùn)行該方法所開發(fā)應(yīng)用的平臺(tái)系統(tǒng)。該方法包括將應(yīng)用開發(fā)拆分到單個(gè)信令級(jí)別,并且基于如下層次結(jié)構(gòu)進(jìn)行應(yīng)用開發(fā)開發(fā)基礎(chǔ)框架類庫(kù),所述基礎(chǔ)框架類庫(kù)中定義多種應(yīng)用組件AppBean基礎(chǔ)類型、應(yīng)用上下文接口及基本應(yīng)用上下文類型的實(shí)現(xiàn),以提供基礎(chǔ)核心功能;其中不同的AppBean基礎(chǔ)類型對(duì)應(yīng)不同類型的應(yīng)用,用于處理不同類型的信令;根據(jù)業(yè)務(wù)特性,在基礎(chǔ)框架類庫(kù)的基礎(chǔ)上開發(fā)為業(yè)務(wù)定制的業(yè)務(wù)框架類庫(kù);基于基礎(chǔ)框架類庫(kù)和業(yè)務(wù)框架類庫(kù),開發(fā)實(shí)現(xiàn)業(yè)務(wù)需求的應(yīng)用;其中,該開發(fā)的應(yīng)用基于應(yīng)用上下文進(jìn)行資源訪問。本發(fā)明的技術(shù)方案解決的應(yīng)用開發(fā)過程復(fù)雜的問題。
文檔編號(hào)H04L29/08GK102523308SQ201110460349
公開日2012年6月27日 申請(qǐng)日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者高磊 申請(qǐng)人:北京新媒傳信科技有限公司