午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

一種應(yīng)用服務(wù)平臺(tái)系統(tǒng)和一種開(kāi)發(fā)應(yīng)用服務(wù)的方法

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

發(fā)明內(nèi)容
本發(fā)明提供了一種應(yīng)用服務(wù)平臺(tái)系統(tǒng),該系統(tǒng)降低了應(yīng)用開(kāi)的難度,提高了部署的靈活性并降低了部署的難度。本發(fā)明還提供了一種開(kāi)發(fā)應(yīng)用服務(wù)平臺(tái)的方法。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的本發(fā)明公開(kāi)了一種應(yīng)用服務(wù)平臺(tái)系統(tǒng),該系統(tǒng)包括代理服務(wù)器、由多個(gè)應(yīng)用服務(wù)器組成的服務(wù)器集群、中心服務(wù)器和資源服務(wù)器,其中代理服務(wù)器,用于接收客戶端請(qǐng)求消息,通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表識(shí)別該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù),然后通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表和應(yīng)用服務(wù)運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用服務(wù)的路徑,根據(jù)所獲得的路徑將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)所在的應(yīng)用服務(wù)器;接收應(yīng)用服務(wù)器端返回的處理結(jié)果,并返回給客戶端;其中,應(yīng)用服務(wù)配置信息列表包括如下信息應(yīng)用服務(wù)ID、應(yīng)用服務(wù)名稱、應(yīng)用服務(wù)類型、應(yīng)用進(jìn)程名、應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注;應(yīng)用服務(wù)運(yùn)行列表包括如下信息應(yīng)用進(jìn)程名稱、應(yīng)用服務(wù)路徑;每個(gè)應(yīng)用服務(wù)器,用于負(fù)載應(yīng)用服務(wù)并運(yùn)行,將應(yīng)用服務(wù)的運(yùn)行信息寫(xiě)入中心服務(wù)器上的應(yīng)用服務(wù)運(yùn)行信息列表中;用于在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí), 將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用服務(wù)進(jìn)行處理;應(yīng)用服務(wù)處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),并將處理結(jié)果返回給代理服務(wù)器;中心服務(wù)器,用于接收外部上傳的應(yīng)用服務(wù),將外部傳入的該應(yīng)用服務(wù)的描述信息保存到應(yīng)用服務(wù)配置信息列表中,并在對(duì)應(yīng)的應(yīng)用服務(wù)器上部署該應(yīng)用服務(wù);資源服務(wù)器,用于保存應(yīng)用服務(wù)器上的各應(yīng)用服務(wù)需要訪問(wèn)的數(shù)據(jù)資源。本發(fā)明還公開(kāi)了一種運(yùn)行于上述的應(yīng)用服務(wù)平臺(tái)系統(tǒng)的應(yīng)用服務(wù)的方法,該方法包括基于應(yīng)用組件AppBean開(kāi)發(fā)應(yīng)用服務(wù),一種AppBean處理一種類型的業(yè)務(wù)請(qǐng)求;在基于一種AppBean開(kāi)發(fā)一個(gè)應(yīng)用服務(wù)時(shí),需要確定的參數(shù)包括應(yīng)用服務(wù)上下文。
由上述可見(jiàn),本發(fā)明這種由上述代理服務(wù)器、應(yīng)用服務(wù)器集群、中心服務(wù)器和資源服務(wù)器構(gòu)成的應(yīng)用服務(wù)平臺(tái)系統(tǒng),將分散的服務(wù)器資源在邏輯上整合到一起,極大降低了應(yīng)用的開(kāi)發(fā)難度,提高了部署的靈活性并降低了部署的難度。


圖1是本發(fā)明實(shí)施例中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)的邏輯結(jié)構(gòu)示意圖;圖2是本發(fā)明實(shí)施例中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)的一個(gè)實(shí)際組網(wǎng)示意圖;圖3是本發(fā)明實(shí)施例中的單個(gè)應(yīng)用服務(wù)器的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。圖1是本發(fā)明實(shí)施例中的應(yīng)用服務(wù)平臺(tái)系統(tǒng)的邏輯結(jié)構(gòu)示意圖。在圖1中,各邏輯部分的描述如下※代理(Proxy)-用于分發(fā)客戶端的消息,并維護(hù)客戶端狀態(tài)(如長(zhǎng)連接);-服務(wù)· SAP 維護(hù)與客戶端的SIP長(zhǎng)連接;· HAP 負(fù)責(zé)分發(fā)Http應(yīng)用;· SMSP 負(fù)責(zé)分發(fā)短信上行應(yīng)用;※應(yīng)用主機(jī)集群(AppEngineHosts)-負(fù)載實(shí)際的應(yīng)用服務(wù)運(yùn)行,可進(jìn)行服務(wù)器分組;※基礎(chǔ)服務(wù)(Base 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īng)用服務(wù)平臺(tái)系統(tǒng)的一個(gè)實(shí)際組網(wǎng)示意圖。如圖2所示, 該應(yīng)用服務(wù)平臺(tái)系統(tǒng)包括代理服務(wù)器、由多個(gè)應(yīng)用服務(wù)器組成的服務(wù)器集群、中心服務(wù)器和資源服務(wù)器,其中代理服務(wù)器,用于接收客戶端請(qǐng)求消息,通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表識(shí)別該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù),然后通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表和應(yīng)用服務(wù)運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用服務(wù)的路徑,根據(jù)所獲得的路徑將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)所在的應(yīng)用服務(wù)器;接收應(yīng)用服務(wù)器端返回的處理結(jié)果,并返回給客戶端;其中,應(yīng)用服務(wù)配置信息列表至少包括如下信息應(yīng)用服務(wù)ID、應(yīng)用服務(wù)名稱、應(yīng)用服務(wù)類型、應(yīng)用進(jìn)程名、應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注;應(yīng)用服務(wù)運(yùn)行列表至少包括如下信息應(yīng)用進(jìn)程名稱、應(yīng)用服務(wù)路徑;在本實(shí)施例中,代理服務(wù)器包括超文本傳輸協(xié)議HTTP代理服務(wù)器、初始會(huì)話SIP 代理服務(wù)器和短信系統(tǒng)SMS代理服務(wù)器。其中,HTTP代理服務(wù)器負(fù)責(zé)分發(fā)HTTP應(yīng)用服務(wù), SIP代理服務(wù)器負(fù)責(zé)與客戶端的SIP長(zhǎng)連接,SMS代理服務(wù)器負(fù)責(zé)分發(fā)短信上行應(yīng)用服務(wù)。每個(gè)應(yīng)用服務(wù)器,用于負(fù)載應(yīng)用服務(wù)并運(yùn)行,將應(yīng)用服務(wù)的運(yùn)行信息寫(xiě)入中心服務(wù)器上的應(yīng)用服務(wù)運(yùn)行信息列表中;用于在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí), 將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用服務(wù)進(jìn)行處理;應(yīng)用服務(wù)處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),并將處理結(jié)果返回給代理服務(wù)器;中心服務(wù)器,用于接收外部上傳的應(yīng)用服務(wù),將外部傳入的該應(yīng)用服務(wù)的描述信息保存到應(yīng)用服務(wù)配置信息列表中,并在對(duì)應(yīng)的應(yīng)用服務(wù)器上部署該應(yīng)用服務(wù);資源服務(wù)器,用于保存應(yīng)用服務(wù)器上的各應(yīng)用服務(wù)需要訪問(wèn)的數(shù)據(jù)資源。在本實(shí)施例中,資源服務(wù)器包括數(shù)據(jù)庫(kù)服務(wù)器、文件服務(wù)器和內(nèi)存對(duì)象緩沖服務(wù)器。在圖2所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,代理服務(wù)器,進(jìn)一步用于在接收到客戶端請(qǐng)求消息時(shí),根據(jù)客戶端請(qǐng)求消息中的信息以及中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表,創(chuàng)建應(yīng)用服務(wù)上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用服務(wù)上下文后分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)器上的應(yīng)用服務(wù);應(yīng)用服務(wù)在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過(guò)程中,根據(jù)應(yīng)用服務(wù)上下文進(jìn)行數(shù)據(jù)資源定位。在圖2所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,所述代理服務(wù)器,用于在接收到客戶端請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的統(tǒng)一資源定位符URL,查找出中心服務(wù)器上的應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注字段包含與所述URL —致信息的應(yīng)用服務(wù)配置信息列表,根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的應(yīng)用服務(wù)名稱識(shí)別出該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù);所述代理服務(wù)器,用于根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的應(yīng)用進(jìn)程名,查找出中心服務(wù)器上的應(yīng)用進(jìn)程名稱字段包含與所述應(yīng)用進(jìn)程名一致信息的應(yīng)用服務(wù)運(yùn)行信息列表,從所查找出的應(yīng)用服務(wù)運(yùn)行信息列表中獲取應(yīng)用服務(wù)的路徑信息。所述代理服務(wù)器,根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的元數(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)用服務(wù)在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過(guò)程中根據(jù)應(yīng)用服務(wù)上下文以及資源列表中的對(duì)應(yīng)信息進(jìn)行資源定位。在圖2所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng)中,服務(wù)器集群中的多個(gè)應(yīng)用服務(wù)器被分為多個(gè)不同的組,每組包含一臺(tái)到多臺(tái)服務(wù)器;中心服務(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)用服務(wù)時(shí),根據(jù)外部指令將該應(yīng)用服務(wù)部署到單個(gè)應(yīng)用服務(wù)器上,或者部署到屬于同一組的多個(gè)服務(wù)器上。這樣,一個(gè)應(yīng)用服務(wù)可以選擇性地負(fù)載在某個(gè)組當(dāng)中,也就是可以將核心的應(yīng)用服務(wù)單獨(dú)使用一組服務(wù)器,保證核心應(yīng)用的資源使用及穩(wěn)定性;而對(duì)剛上線的不穩(wěn)定的應(yīng)用服務(wù)使用一組單獨(dú)的服務(wù)器,以剝離其中的影響,降低整個(gè)系統(tǒng)的風(fēng)險(xiǎn)。這種做法有利于進(jìn)行整體資源的分配及網(wǎng)絡(luò)策略的調(diào)整。圖3是本發(fā)明實(shí)施例中的單個(gè)應(yīng)用服務(wù)器的結(jié)構(gòu)示意圖。如圖3所示,主機(jī)進(jìn)程是部署在每臺(tái)應(yīng)用服務(wù)器上的后臺(tái)監(jiān)控進(jìn)程,負(fù)責(zé)進(jìn)行應(yīng)用服務(wù)的下載運(yùn)行與部署。主機(jī)進(jìn)程會(huì)與中心服務(wù)器建立一個(gè)長(zhǎng)連接,通過(guò)這個(gè)長(zhǎng)連接接受部署、更新、監(jiān)控等系統(tǒng)指令。在一個(gè)應(yīng)用服務(wù)器中幾個(gè)應(yīng)用服務(wù)可以運(yùn)行在一個(gè)應(yīng)用進(jìn)程中,該應(yīng)用進(jìn)程也可以稱為服務(wù)外殼。一個(gè)應(yīng)用服務(wù)器上可以有多個(gè)應(yīng)用進(jìn)程。在本發(fā)明中,基于圖1和圖2所示的應(yīng)用服務(wù)平臺(tái)系統(tǒng),提供了基于應(yīng)用組件 (AppBean)的應(yīng)用服務(wù)開(kāi)發(fā)模式。在本發(fā)明中,應(yīng)用服務(wù)的開(kāi)發(fā)需要通過(guò)擴(kuò)展定制好的幾種 AppBean進(jìn)行,一種AppBean用于處理一種類型的業(yè)務(wù)請(qǐng)求,業(yè)務(wù)請(qǐng)求可能來(lái)自用戶的客戶端軟件、瀏覽器、內(nèi)部引用、或外部信令調(diào)用。在應(yīng)用服務(wù)的開(kāi)發(fā)時(shí)刻,AppBean可以認(rèn)為是一個(gè)抽象基類,所有的應(yīng)用服務(wù)都會(huì)從AppBean這個(gè)基類派生。下面對(duì)AppBean進(jìn)行介紹。· AppBean 的抽象接口-setup ()實(shí)現(xiàn)自安裝-prepare ()實(shí)現(xiàn)資源初始化-run ()實(shí)現(xiàn)運(yùn)行· AppBean的幾個(gè)子類,每個(gè)子類可能會(huì)處理不同形式的信令,應(yīng)用開(kāi)發(fā)人員需要選擇合適的子類去實(shí)現(xiàn)自己的應(yīng)用,其中主要的子類有如下幾種-RemoteAppBean 每個(gè) RemoteAppBean 處理一條特定的 Rpc 請(qǐng)求;-HttpAppBean 處理一條特定的 Http 請(qǐng)求;-MessageAppBean 處理一個(gè)特定的消息事務(wù);下面對(duì)以上的幾種AppBean進(jìn)行舉例說(shuō)明RemoteAppBean·處理一個(gè)特定的Rpc請(qǐng)求,可能來(lái)源于下列幾個(gè)場(chǎng)景-來(lái)源于其他AppBean的引用;-來(lái)源于proxy ;-來(lái)源于其他的系統(tǒng)外部服務(wù);·參數(shù)解釋-<A>請(qǐng)求參數(shù),強(qiáng)類型定義;-<R>應(yīng)答參數(shù),強(qiáng)類型定義;-<C>特定類型的應(yīng)用服務(wù)上下文AppContext ;調(diào)用一個(gè)從RemoteAppBean派生的應(yīng)用服務(wù)時(shí),必須提供這個(gè)應(yīng)用服務(wù)在實(shí)現(xiàn)時(shí)所聲明的特定類型的應(yīng)用服務(wù)上下文(AppContext),例如
—個(gè)獲取用戶信息的應(yīng)用服務(wù)會(huì)如下聲明1.從 RemoteAppBearKGetOption, Userlnfo, UserContext)中派生;a.請(qǐng)求參數(shù)<A>為GetOption,為獲取用戶的一些選項(xiàng)參數(shù)b.應(yīng)答參數(shù)<R>為Userlnfo,為用戶信息的集合c.應(yīng)用服務(wù)上下文<C>為herContext,為當(dāng)前上下文的用戶信息,UserContext 用于標(biāo)識(shí)用戶ID2.實(shí)現(xiàn)process方法處理業(yè)務(wù)邏輯HttpAppBean· HttpAppBea用于處理一條特定的Http請(qǐng)求,Http請(qǐng)求可能來(lái)自于-來(lái)自用戶客戶端和瀏覽器的直接請(qǐng)求,請(qǐng)求會(huì)通過(guò)HAP的智能7層負(fù)載進(jìn)行反向代理轉(zhuǎn)換-直接來(lái)源于其他服務(wù)器的請(qǐng)求·實(shí)現(xiàn)一個(gè)特定的基于HttpAppBean的應(yīng)用服務(wù)需要定制如下參數(shù)-應(yīng)用服務(wù)上下文<C>特定類型的上下文;-Context來(lái)源從何處獲取上下文<C> ;-URL前綴此應(yīng)用服務(wù)處理的URL前綴。(URL前綴通過(guò)OHttpPrefix元數(shù)據(jù)標(biāo)注處理,后續(xù)會(huì)提到)例如開(kāi)發(fā)一個(gè)用于用戶統(tǒng)一登錄認(rèn)證的應(yīng)用服務(wù)的流程為1.從 HttpAppBean 的基類派生;2.指定應(yīng)用服務(wù)上下文類型<C>為kssionContext ;3.指定Context來(lái)源為cookie中的ssic字段;4.實(shí)現(xiàn)process方法,讀取HttpRequest,處理后返回HttpResponse給客戶端。MessageAppBean'MessageAppBean用于處理松耦合的消息事務(wù),一個(gè)MessageAppBean處理一個(gè)特定類型的Message,MessageAppBean會(huì)監(jiān)聽(tīng)此類型的消息隊(duì)列,并在消息隊(duì)列到達(dá)時(shí)開(kāi)始處理;·實(shí)現(xiàn)一個(gè)特定的MessageAppBean需要指定如下參數(shù)-應(yīng)用服務(wù)上下文<C>特定類型的上下文;-消息類型<A>指定強(qiáng)類型Message ;-事件名稱(MessageName)一個(gè)用于標(biāo)記一類消息的全局唯一名稱;· MessageAppBean采用生產(chǎn)者/消費(fèi)者模式-生產(chǎn)者會(huì)將產(chǎn)生的Message壓入消息隊(duì)列MessageQueueService. Enqueue(context,entity);-作為消費(fèi)者的MessageAppBean會(huì)在啟動(dòng)的時(shí)候回到消息隊(duì)列服務(wù)中注冊(cè),并訂閱特定類型的Queue,開(kāi)始接受Queue中的內(nèi)容;-生產(chǎn)者和消費(fèi)者,允許一對(duì)多,多對(duì)多的映射關(guān)系。以上對(duì)三種AppBean進(jìn)行了舉例介紹。由上述的舉例說(shuō)明可以看出,各AppBean的參數(shù)都不太一樣,但都包括 AppContext這個(gè)參數(shù)。
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來(lái)實(shí)現(xiàn)目標(biāo)應(yīng)用服務(wù)的定位。AppContext從數(shù)據(jù)構(gòu)成上分為兩部分-Uri 為字符串格式,包含了用戶的索引信息,負(fù)責(zé)定位,例如-id :230302023-session :13910000001.Data:附加數(shù)據(jù)-預(yù)定義好的強(qiáng)類型數(shù)據(jù)結(jié)構(gòu);-在某些場(chǎng)合,附加數(shù)據(jù)會(huì)由Proxy提供給后面的應(yīng)用服務(wù)。在本發(fā)明的系統(tǒng)中有一些預(yù)先定義好的上下文-NullContext 預(yù)定義的空上下文,用在不需要上下文的場(chǎng)合;-SessionContext 預(yù)定義的只保存會(huì)話ID的上下文。除標(biāo)準(zhǔn)AppContext,在使用本發(fā)明的應(yīng)用服務(wù)系統(tǒng)平臺(tái)進(jìn)行擴(kuò)展開(kāi)發(fā)的時(shí)候,需要先定制業(yè)務(wù)相關(guān)的一些基礎(chǔ),AppContext就是其中之一。下面例舉一個(gè)關(guān)于AppContext 的具體實(shí)施例。例如使用本發(fā)明的應(yīng)用服務(wù)平臺(tái)系統(tǒng)開(kāi)個(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,那么通過(guò)這個(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ù)類型,開(kāi)發(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,那么通過(guò)這個(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ù),如-設(shè)置群組名稱;-更新群組權(quán)限;-獲取群離線消息等。應(yīng)用元數(shù)據(jù)標(biāo)注在本發(fā)明中,一個(gè)應(yīng)用服務(wù)可能會(huì)包含如下的元數(shù)據(jù)標(biāo)注1. AppName (應(yīng)用服務(wù)的名字和分類名)·聲明AppBean的名字以及分類名;-OAppName (category = 〃 Core “ ,name=" AddBuddy “)這里@ΧΧΧ為Java語(yǔ)言對(duì)程序元數(shù)據(jù)的標(biāo)注。· Category :name 全局唯一;· Category 可以用于 AppBean 的分類;-方便運(yùn)維人員進(jìn)行配置與分類;-在一個(gè)Category中,如果允許一個(gè)AppBean能夠被其他Category中的AppBean 訪問(wèn),必須將這個(gè)AppBean聲明成為公開(kāi)或友好;· iPubIicO 允許所有的 AppBean 訪問(wèn);· iFriendlly( “Core,,)只允許指定 Category 訪問(wèn);· OFriendlly( "Core =AddBuddy")只允許指定應(yīng)用訪問(wèn);2. Stateful (應(yīng)用服務(wù)的狀態(tài)信息)OStateful(〃 Presence")·當(dāng)聲明一個(gè)AppBean為有狀態(tài)的,則此個(gè)AppBean可以將狀態(tài)保存在本機(jī)內(nèi)存中;·沒(mé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的訪問(wèn)會(huì)采用這個(gè) AppBean的AppContext綁定的一致性Hash的方式進(jìn)行路由;3. BeforeHandler (前置業(yè)務(wù)處理項(xiàng))·在某個(gè)AppBean接管控制之前優(yōu)先處理前置業(yè)務(wù),比如配額判斷,日志記錄,安全審核等;·這個(gè)Handler可以中斷業(yè)務(wù)的運(yùn)行,修改業(yè)務(wù)的入口參數(shù),可以異步處理;iBeforeHandler (type = SecurityQuotaHandler. class, params = ("AddBuddy “));·實(shí)現(xiàn)一個(gè) BeforeHandler 需要實(shí)現(xiàn) emoteAppBeanHandler<A, R,C> 接口 ;-void run (RemoteAppHandlerTx<A, R, C>tx);
4. AfterHandler (后置業(yè)務(wù)處理項(xiàng))·可以指定在業(yè)務(wù)成功后進(jìn)行處理,或失敗后進(jìn)行,或不管成功失敗都進(jìn)行;OAfterHandler (type = OperationLogHandler. class,result = OpResults. All, params = (〃 AddBuddy “));· Handler能夠拿到完整的請(qǐng)求參數(shù),及應(yīng)用在context中添加的上下文數(shù)據(jù);· Handler的處理結(jié)果不會(huì)再影響到AppBean的返回結(jié)果·實(shí)現(xiàn)方法與BeforeHandler相同。5.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 Name6. ContextLoader (加載應(yīng)用服務(wù)上下文信息) 用于標(biāo)注一個(gè)AppBean如何加載AppContext 如@ContextLoader (name = 〃 CookieParser〃 )-表示通過(guò)名為CookieParser的程序去處理處理Context;-CookieParser程序內(nèi)置在Proxy當(dāng)中,通過(guò)處理HttpRequest中的Cookie字段去加載用戶相關(guān)信息。前面介紹了基于AppBean的應(yīng)用服務(wù)開(kāi)發(fā)過(guò)程??梢钥闯鲈诒景l(fā)明中應(yīng)用服務(wù)開(kāi)發(fā)的最小粒度為AppBean。接下來(lái)介紹開(kāi)發(fā)完成的應(yīng)用服務(wù)如何在應(yīng)用服務(wù)系統(tǒng)平臺(tái)上部署以及運(yùn)行的過(guò)程。前面提到應(yīng)用服務(wù)系統(tǒng)平臺(tái)中的服務(wù)器集群中的應(yīng)用服務(wù)器可以分成多個(gè)組,一個(gè)應(yīng)用服務(wù)可以部署在一組應(yīng)用服務(wù)器上,因此首先介紹一下本發(fā)明中的應(yīng)用服務(wù)器的分組配置情況。在本發(fā)明中,能夠運(yùn)行應(yīng)用服務(wù)的應(yīng)用服務(wù)器需要在全局統(tǒng)一配置,具體來(lái)說(shuō)在中心服務(wù)上配置全局的應(yīng)用服務(wù)器列表和應(yīng)用服務(wù)器分組列表。應(yīng)用服務(wù)器列表如表1所示
權(quán)利要求
1.一種應(yīng)用服務(wù)平臺(tái)系統(tǒng),其特征在于,該系統(tǒng)包括代理服務(wù)器、由多個(gè)應(yīng)用服務(wù)器組成的服務(wù)器集群、中心服務(wù)器和資源服務(wù)器,其中代理服務(wù)器,用于接收客戶端請(qǐng)求消息,通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表識(shí)別該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù),然后通過(guò)查詢中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表和應(yīng)用服務(wù)運(yùn)行信息列表獲得對(duì)應(yīng)的應(yīng)用服務(wù)的路徑,根據(jù)所獲得的路徑將客戶端請(qǐng)求消息分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)所在的應(yīng)用服務(wù)器;接收應(yīng)用服務(wù)器端返回的處理結(jié)果,并返回給客戶端;其中,應(yīng)用服務(wù)配置信息列表包括如下信息應(yīng)用服務(wù)ID、應(yīng)用服務(wù)名稱、應(yīng)用服務(wù)類型、應(yīng)用進(jìn)程名、應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注;應(yīng)用服務(wù)運(yùn)行列表包括如下信息應(yīng)用進(jìn)程名稱、 應(yīng)用服務(wù)路徑;每個(gè)應(yīng)用服務(wù)器,用于負(fù)載應(yīng)用服務(wù)并運(yùn)行,將應(yīng)用服務(wù)的運(yùn)行信息寫(xiě)入中心服務(wù)器上的應(yīng)用服務(wù)運(yùn)行信息列表中;用于在接收到代理服務(wù)器發(fā)送的客戶端請(qǐng)求消息時(shí),將該客戶端請(qǐng)求消息交給對(duì)應(yīng)的應(yīng)用服務(wù)進(jìn)行處理;應(yīng)用服務(wù)處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù),并將處理結(jié)果返回給代理服務(wù)器;中心服務(wù)器,用于接收外部上傳的應(yīng)用服務(wù),將外部傳入的該應(yīng)用服務(wù)的描述信息保存到應(yīng)用服務(wù)配置信息列表中,并在對(duì)應(yīng)的應(yīng)用服務(wù)器上部署該應(yīng)用服務(wù); 資源服務(wù)器,用于保存應(yīng)用服務(wù)器上的各應(yīng)用服務(wù)需要訪問(wèn)的數(shù)據(jù)資源。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,代理服務(wù)器,進(jìn)一步用于在接收到客戶端請(qǐng)求消息時(shí),根據(jù)客戶端請(qǐng)求消息中的信息以及中心服務(wù)器上的應(yīng)用服務(wù)配置信息列表,創(chuàng)建應(yīng)用服務(wù)上下文,在所述客戶端請(qǐng)求消息中添加應(yīng)用服務(wù)上下文后分發(fā)給對(duì)應(yīng)的應(yīng)用服務(wù)器上的應(yīng)用服務(wù);應(yīng)用服務(wù)在接收到客戶端請(qǐng)求消息后,在處理該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過(guò)程中,根據(jù)應(yīng)用服務(wù)上下文進(jìn)行數(shù)據(jù)資源定位。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,中心服務(wù)器,進(jìn)一步用于保存資源列表;資源列表包括如下信息資源名稱、資源類型、應(yīng)用服務(wù)上下文類型、定位算法名稱、定位算法參數(shù);應(yīng)用服務(wù)在接收到客戶端請(qǐng)求消息后,在完成該客戶端請(qǐng)求消息所請(qǐng)求的任務(wù)的過(guò)程中根據(jù)應(yīng)用服務(wù)上下文以及資源列表中的對(duì)應(yīng)信息進(jìn)行資源定位。
4.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述多個(gè)代理服務(wù)器包括超文本傳輸協(xié)議HTTP代理服務(wù)器、初始會(huì)話SIP代理服務(wù)器和短信系統(tǒng)SMS代理服務(wù)器;所述資源服務(wù)器包括數(shù)據(jù)庫(kù)服務(wù)器、文件服務(wù)器和內(nèi)存對(duì)象緩沖服務(wù)器。
5.根據(jù)權(quán)利要求1所述的系統(tǒ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)用服務(wù)時(shí),根據(jù)外部指令將該應(yīng)用服務(wù)部署到單個(gè)應(yīng)用服務(wù)器上,或者部署到屬于同一組的多個(gè)服務(wù)器上。
6.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述代理服務(wù)器,用于在接收到客戶端請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的統(tǒng)一資源定位符URL,查找出中心服務(wù)器上的應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注字段包含與所述URL —致信息的應(yīng)用服務(wù)配置信息列表,根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的應(yīng)用服務(wù)名稱識(shí)別出該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù);或者,用于在接收到客戶端的請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的遠(yuǎn)程調(diào)用服務(wù)名稱,查找出中心服務(wù)器上應(yīng)用服務(wù)名稱字段與所述遠(yuǎn)程調(diào)用服務(wù)名稱一致的應(yīng)用服務(wù)配置信息列表, 根據(jù)所查找出的應(yīng)用服務(wù)名稱字段識(shí)別出該請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù);或者,用于在接收到客戶端的請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的事件名稱,查找出中心服務(wù)器上的應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注字段包含與所述事件名稱一致信息的應(yīng)用服務(wù)配置信息列表, 根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的應(yīng)用服務(wù)名稱識(shí)別出該客戶端請(qǐng)求消息所對(duì)應(yīng)的應(yīng)用服務(wù);所述代理服務(wù)器,用于根據(jù)所查找出的應(yīng)用服務(wù)配置信息列表中的應(yīng)用進(jìn)程名,查找出中心服務(wù)器上的應(yīng)用進(jìn)程名稱字段包含與所述應(yīng)用進(jìn)程名一致信息的應(yīng)用服務(wù)運(yùn)行信息列表,從所查找出的應(yīng)用服務(wù)運(yùn)行信息列表中獲取應(yīng)用服務(wù)的路徑信息。
7.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述代理服務(wù)器,用于在接收到客戶端請(qǐng)求消息時(shí),根據(jù)該請(qǐng)求消息中的統(tǒng)一資源定位符URL,查找出中心服務(wù)器上的應(yīng)用服務(wù)元數(shù)據(jù)標(biāo)注字段包含與所述URL —致信息的應(yīng)用服務(wù)配置信息列表,然后根據(jù)該應(yīng)用服務(wù)配置信息列表中的元數(shù)據(jù)標(biāo)注字段中的關(guān)于加載應(yīng)用服務(wù)上下文的信息,創(chuàng)建應(yīng)用服務(wù)上下文。
8.一種開(kāi)發(fā)運(yùn)行于權(quán)利要求1至6中任一項(xiàng)所述的應(yīng)用服務(wù)平臺(tái)系統(tǒng)的應(yīng)用服務(wù)的方法,其特征在于,該方法包括基于應(yīng)用組件AppBean開(kāi)發(fā)應(yīng)用服務(wù),一種AppBean處理一種類型的業(yè)務(wù)請(qǐng)求;在基于一種AppBean開(kāi)發(fā)一個(gè)應(yīng)用服務(wù)時(shí),需要確定的參數(shù)包括應(yīng)用服務(wù)上下文。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,該方法進(jìn)一步包括在基于一種AppBean開(kāi)發(fā)一個(gè)應(yīng)用服務(wù)時(shí),令該應(yīng)用服務(wù)的元數(shù)據(jù)標(biāo)注包括應(yīng)用服務(wù)的名字和分類名、應(yīng)用服務(wù)的狀態(tài)信息、前置業(yè)務(wù)處理項(xiàng)、后置業(yè)務(wù)處理項(xiàng)、HTTP前綴/ 事件名稱、加載應(yīng)用服務(wù)上下文信息。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述應(yīng)用服務(wù)上下文在數(shù)據(jù)構(gòu)成上包括兩部分字符串格式的通用資源標(biāo)志符URI和附加數(shù)據(jù)部分。
全文摘要
本發(fā)明公開(kāi)了一種應(yīng)用服務(wù)平臺(tái)系統(tǒng)和一種開(kāi)發(fā)應(yīng)用服務(wù)的方法。所述系統(tǒng)包括代理服務(wù)器、由多個(gè)應(yīng)用服務(wù)器組成的服務(wù)器集群、中心服務(wù)器和資源服務(wù)器,其中代理服務(wù)器,用于向各應(yīng)用服務(wù)器分發(fā)客戶端請(qǐng)求;每個(gè)應(yīng)用服務(wù)器,用于負(fù)載應(yīng)用服務(wù)并運(yùn)行;中心服務(wù)器,用于接收外部上傳的應(yīng)用服務(wù),并在對(duì)應(yīng)的應(yīng)用服務(wù)器上部署該應(yīng)用服務(wù);資源服務(wù)器,用于保存應(yīng)用服務(wù)器上的各應(yīng)用服務(wù)需要訪問(wèn)的數(shù)據(jù)資源。本發(fā)明的技術(shù)方案降低了應(yīng)用開(kāi)發(fā)的難度,提高了部署的靈活性并降低了部署的難度。
文檔編號(hào)H04L29/08GK102185900SQ20111009715
公開(kāi)日2011年9月14日 申請(qǐng)日期2011年4月18日 優(yōu)先權(quán)日2011年4月18日
發(fā)明者高磊 申請(qǐng)人:北京新媒傳信科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1