專利名稱:客戶端代理定位系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及互聯(lián)網(wǎng)通訊技術(shù)領(lǐng)域,特別涉及一種客戶端代理定位系統(tǒng)和方法。
背景技術(shù):
在互聯(lián)網(wǎng)的很多應(yīng)用中,為了便于處理客戶端的請(qǐng)求,通常在服務(wù)的接入層設(shè)置客戶端代理,通過客戶端代理,實(shí)現(xiàn)客戶端與服務(wù)器上核心服務(wù)之間的交互。在大型互聯(lián)網(wǎng)系統(tǒng)中,為了避免單點(diǎn)故障和分流服務(wù)壓力,在接入層中會(huì)設(shè)置多個(gè)接入服務(wù),每個(gè)接入服務(wù)可以生成多個(gè)客戶端代理。在這種架構(gòu)下,客戶端登錄接入服務(wù)且接入服務(wù)生成該客戶端的客戶端代理后,會(huì)在一個(gè)全局索引服務(wù)上進(jìn)行注冊(cè),生成一個(gè)客戶端和接入服務(wù)的映射關(guān)系。當(dāng)核心服務(wù)想要將信令發(fā)送至客戶端時(shí),需要查找到客戶端的客戶端代理,具體方法如下:核心服務(wù)根據(jù)全局索引服務(wù)中所保存的映射關(guān)系獲取客戶端代理所在接入服務(wù)的地址,將信令發(fā)送該地址下的接入服務(wù);然后,接入服務(wù)在自身的映射列表中查找出客戶端的客戶端代理,由該客戶端代理將信令下發(fā)至客戶端,通過該信令將相應(yīng)信息通知給客戶端?,F(xiàn)有的客戶端代理查詢方案至少具有如下缺陷:在訪問量較大時(shí),核心服務(wù)需要頻繁向全局索引服務(wù)發(fā)送請(qǐng)求,造成系統(tǒng)負(fù)擔(dān)過大,系統(tǒng)響應(yīng)速度降低;并且,接入服務(wù)在自身的映射列表中查找客戶端代理時(shí),采用通過客戶端標(biāo)識(shí)(ID)在映射列表中逐條順序查找的方式,查詢效率較低,加重了系統(tǒng)響應(yīng)性能的惡化。
發(fā)明內(nèi)容
本發(fā)明提供了一種客戶端代理定位系統(tǒng)和方法,以解決現(xiàn)有方案中查詢效率較低以及系統(tǒng)性能較差的問題。為達(dá)到上述目的,本發(fā)明實(shí)施例采用了如下技術(shù)方案:本發(fā)明實(shí)施例提供了一種客戶端代理定位系統(tǒng),所述系統(tǒng)包括接入服務(wù)、客戶端代理和核心服務(wù),所述核心服務(wù),從本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的PID,所述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量,以及,根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后發(fā)送至該接入服務(wù);所述接入服務(wù),根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,啟動(dòng)所定位到的客戶端代理并去除信令中的PID ;所述定位到的客戶端代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。本發(fā)明實(shí)施例還提供了一種客戶端代理定位方法,所述方法包括:從核心服務(wù)的本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的用戶登錄身份唯一標(biāo)識(shí)PID,所述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量,根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后從核心服務(wù)發(fā)送至該接入服務(wù);根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,利用接入服務(wù)啟動(dòng)所定位到的客戶端代理并去除信令中的PID ;通過所定位到的客戶端代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。本發(fā)明實(shí)施例的有益效果是:本發(fā)明實(shí)施例通過設(shè)置用戶登錄身份唯一標(biāo)識(shí)PID,并在核心服務(wù)的本地緩存中維護(hù)該P(yáng)ID或者從客戶端請(qǐng)求中得到該P(yáng)ID,顯著減少了對(duì)全局索引服務(wù)的訪問請(qǐng)求;并且,本發(fā)明實(shí)施例在PID中直接設(shè)置客戶端代理的地址偏移量,提高了信息的查詢效率。本發(fā)明實(shí)施例提供了一種快速定位用戶代理的方法,能夠有效地降低全局索引服務(wù)的壓力,提聞系統(tǒng)的響應(yīng)性能。
圖1為本發(fā)明實(shí)施例一提供的一種客戶端代理定位系統(tǒng)工作流程圖;圖2為本發(fā)明實(shí)施例一提供的另一種客戶端代理定位系統(tǒng)工作流程圖;圖3為本發(fā)明實(shí)施例一提供的又一種客戶端代理定位系統(tǒng)工作流程圖;圖4為本發(fā)明實(shí)施例一提供的又一種客戶端代理定位系統(tǒng)工作流程圖;圖5為本發(fā)明實(shí)施例二提供的一種客戶端代理定位方法流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。本發(fā)明實(shí)施例一提供了一種客戶端代理定位系統(tǒng),參見圖1,所述系統(tǒng)包括接入服務(wù)、客戶端代理和核心服務(wù),具體工作流程如下:1:核心服務(wù)獲取客戶端的用戶登錄身份唯一標(biāo)識(shí)(PersonallD,PID)。根據(jù)核心服務(wù)類型的不同,核心服務(wù)獲取PID的具體方式也不同,可以包括如下兩種操作:Ia:核心服務(wù),如有狀態(tài)的核心服務(wù),從本地緩存中獲取客戶端的PID。在步驟Ia中,有狀態(tài)的核心服務(wù)根據(jù)客戶端標(biāo)識(shí)(UserId)在本地緩存中查找PID,則在查找之前,核心服務(wù)可以通過來自客戶端的請(qǐng)求得到該UserId。其中,有狀態(tài)的核心服務(wù)維護(hù)客戶端標(biāo)識(shí)與PID的對(duì)應(yīng)關(guān)系,該對(duì)應(yīng)關(guān)系可以為哈希映射關(guān)系。Ib:核心服務(wù),如無(wú)狀態(tài)的核心服務(wù),從來自客戶端的請(qǐng)求中獲取客戶端的PID。其中,對(duì)核心服務(wù)的狀態(tài)可以通過兩個(gè)來自相同發(fā)起者的請(qǐng)求在服務(wù)器端是否具備上下文關(guān)系來判斷。如果是有狀態(tài)的核心服務(wù),那么服務(wù)器端一般都要保存請(qǐng)求的相關(guān)信息,每個(gè)請(qǐng)求可以默認(rèn)地使用以前的請(qǐng)求信息。而無(wú)狀態(tài)的核心服務(wù)則不能保存相關(guān)信息,服務(wù)器端所能夠處理的處理信息必須全部來自于請(qǐng)求所攜帶的信息以及其他服務(wù)器端所保存的、并且可以被所有請(qǐng)求所使用的公共信息。所以本實(shí)施例中,針對(duì)不同類型的核心服務(wù)設(shè)置了不同的PID獲取方式。上述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量。該首地址為接入服務(wù)中存儲(chǔ)客戶端代理的首地址。進(jìn)一步的,上述PID中還可以包含時(shí)間戳信息。2:核心服務(wù)根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后發(fā)送至該接入服務(wù)。3:接入服務(wù)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理。4:接入服務(wù)啟動(dòng)或調(diào)用所定位到的客戶端代理并去除信令中的PID。5:客戶端代理將信令轉(zhuǎn)發(fā)至客戶端。上述所定位到的客戶端代理將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。下面結(jié)合圖2具體說明本實(shí)施例的中各設(shè)備或功能的具體交互方式。圖2主要以核心服務(wù)為有狀態(tài)的核心服務(wù)的場(chǎng)景為例進(jìn)行說明,包括了客戶端的注冊(cè)流程和核心服務(wù)將信令下發(fā)至客戶端的流程。1:客戶端向接入服務(wù)發(fā)送登錄請(qǐng)求。2:接入服務(wù)為客戶端生成客戶端代理和PID。接入服務(wù)對(duì)每個(gè)客戶端的每次登錄都會(huì)生成相應(yīng)于該客戶端的客戶端代理和PID, PID中包含接入服務(wù)地址、客戶端代理地址標(biāo)識(shí)(ID)和時(shí)間戳信息,該時(shí)間戳信息指示PID的創(chuàng)建時(shí)間,即客戶端的登錄時(shí)間。接入服務(wù)為客戶端代理也加蓋時(shí)間戳信息,在一個(gè)客戶端的一次登錄中,客戶端代理的時(shí)間戳信息和PID中的時(shí)間戳信息保持一致。進(jìn)一步的,本實(shí)施例中所述接入服務(wù)按照數(shù)組的形式保存所生成的PID,其中,所述數(shù)組中的一個(gè)數(shù)組元素表示一個(gè)PID,所述PID中的客戶端代理地址標(biāo)識(shí)由數(shù)組元素的標(biāo)號(hào)構(gòu)成。即PID中的客戶端代理地址標(biāo)識(shí)指示了一種相對(duì)于首地址的地址偏移量信息,利用該偏移量信息可以直接定位到客戶端代理,提高了查詢效率;且本實(shí)施例采用數(shù)組和數(shù)組標(biāo)號(hào)的方式來實(shí)現(xiàn),操作簡(jiǎn)單、方便。3:接入服務(wù)向全局索引服務(wù)發(fā)送注冊(cè)請(qǐng)求。接入服務(wù)將PID添加在注冊(cè)請(qǐng)求中,發(fā)送至全局索引服務(wù),全局索引服務(wù)接收并保存客戶端的PID。注冊(cè)成功后,全局索引服務(wù)向接入服務(wù)返回注冊(cè)成功消息,接入服務(wù)向客戶端返回登錄成功消息。4:接入服務(wù)將PID發(fā)送至核心服務(wù)(有狀態(tài)的核心服務(wù))。5:核心服務(wù)將PID保存在本地緩存中。對(duì)于有狀態(tài)的核心服務(wù),在核心服務(wù)上設(shè)置一個(gè)本地緩存容器用于存儲(chǔ)客戶端的PID,以減少核心服務(wù)對(duì)全局索引服務(wù)的訪問頻率,降低全局索引服務(wù)的壓力,提高系統(tǒng)的性能。通過上述步驟I至5完成了在有狀態(tài)的核心服務(wù)下客戶端的注冊(cè)過程。對(duì)無(wú)狀態(tài)的核心服務(wù)的場(chǎng)景,相比于有狀態(tài)的核心服務(wù)下客戶端的注冊(cè)過程,區(qū)別在于無(wú)需執(zhí)行步驟4和5。6:核心服務(wù)從本地緩存中查找PID。
當(dāng)核心服務(wù)需要向客戶端下發(fā)信令時(shí),核心服務(wù)首先從本地緩存中查找到PID。進(jìn)一步的,核心服務(wù)根據(jù)所獲知的客戶端標(biāo)識(shí)(UserId)從本地緩存中獲取客戶端的PID。核心服務(wù)在執(zhí)行不同業(yè)務(wù)時(shí),獲知UserId的具體方式也不同,例如,對(duì)于即時(shí)通信中好友添加業(yè)務(wù),核心服務(wù)可以從服務(wù)器所保存的好友列表中獲知客戶端的Userid;對(duì)于兩個(gè)客戶端的交互業(yè)務(wù),核心服務(wù)可以從一方客戶端的消息中獲知另一方客戶端的UserId,并利用該UserId向另一方客戶端下發(fā)信令。7:核心服務(wù)向接入服務(wù)發(fā)送信令。核心服務(wù)在查找到的PID中得到接入服務(wù)地址,獲知當(dāng)前所使用的接入服務(wù),將查找到的PID添加在信令(如業(yè)務(wù)請(qǐng)求信令)中后,發(fā)送至接入服務(wù)。進(jìn)一步的,本實(shí)施例中核心服務(wù)將PID添加至信令的信令頭部。8:接入服務(wù)上的客戶端代理將信令轉(zhuǎn)發(fā)至客戶端。接入服務(wù)接收到核心服務(wù)發(fā)送的信令后,根據(jù)信令內(nèi)PID中的客戶端代理地址ID,查找所使用的客戶端代理。接入服務(wù)去除信令中的PID,如接入服務(wù)去除信令頭部中的PID,并由客戶端代理將信令轉(zhuǎn)發(fā)至客戶端??蛻舳嗽诮邮盏叫帕詈?,通過客戶端代理向接入服務(wù)返回響應(yīng)信息,接入服務(wù)再將該響應(yīng)信息發(fā)送至核心服務(wù),告知核心服務(wù)信令下發(fā)成功。由上述步驟6至8完成有狀態(tài)的核心服務(wù)向客戶端的信令下發(fā)流程。對(duì)于無(wú)狀態(tài)的核心服務(wù),區(qū)別點(diǎn)主要在于,步驟6中無(wú)狀態(tài)的核心服務(wù)不是從本地緩存中查找PID,而是從客戶端發(fā)送的請(qǐng)求中得到PID??蛻舳嗽谙掳l(fā)信令前需要先接收到來自客戶端的請(qǐng)求,當(dāng)客戶端通過接入服務(wù)上的客戶端代理向核心服務(wù)發(fā)送請(qǐng)求時(shí),接入服務(wù)在該請(qǐng)求中加入PID,從而使核心服務(wù)在接收到請(qǐng)求時(shí)能夠獲知PID。參見圖3,顯示了核心服務(wù)將信令下發(fā)至客戶端的又一種流程示意圖。圖3仍以核心服務(wù)為有狀態(tài)的核心服務(wù)的場(chǎng)景為例進(jìn)行說明,在此略去了客戶端的注冊(cè)流程。對(duì)無(wú)狀態(tài)的核心服務(wù),由于PID隨著客戶端的請(qǐng)求上報(bào)至核心服務(wù),該P(yáng)ID是當(dāng)前操作所使用的有效PID,所以通常無(wú)需采用圖3所示的處理方式。1:核心服務(wù)從本地緩存中查找PID。當(dāng)核心服務(wù)需要向客戶端下發(fā)信令時(shí),核心服務(wù)首先從本地緩存中查找到PID。進(jìn)一步的,核心服務(wù)根據(jù)所獲知的客戶端標(biāo)識(shí)(UserId)從本地緩存中獲取客戶端的PID。核心服務(wù)在執(zhí)行不同業(yè)務(wù)時(shí),獲知UserId的具體方式也不同,例如,對(duì)于即時(shí)通信中好友添加業(yè)務(wù),核心服務(wù)可以從客戶端發(fā)送的請(qǐng)求中的好友列表中獲知客戶端的Userid;對(duì)于兩個(gè)客戶端的交互業(yè)務(wù),核心服務(wù)可以從一方客戶端的請(qǐng)求消息中獲知另一方客戶端的UserId,并利用該UserId向另一方客戶端下發(fā)信令。2:核心服務(wù)向接入服務(wù)發(fā)送信令。核心服務(wù)在查找到的PID中得到接入服務(wù)地址,獲知當(dāng)前所使用的接入服務(wù),將查找到的PID添加在信令(如業(yè)務(wù)請(qǐng)求信令)中后,發(fā)送至接入服務(wù)。進(jìn)一步的,本實(shí)施例中核心服務(wù)將PID添加至信令的信令頭部。3:接入服務(wù)判斷PID是否有效?!N情況下,客戶端一段時(shí)間內(nèi)在同一接入服務(wù)上多次登錄,則接入服務(wù)中所保存的客戶端的PID與核心服務(wù)上所保存的客戶端的PID會(huì)出現(xiàn)不一致的情況,這時(shí),利用PID中的時(shí)間戳信息判斷PID是否有效,即是否為當(dāng)前操作中所應(yīng)使用的PID。所述接入服務(wù),在根據(jù)信令中PID的客戶端代理地址標(biāo)識(shí)查找到客戶端代理時(shí),比較所述PID中的時(shí)間戳信息和查找到的客戶端代理的時(shí)間戳信息是否一致,若一致,將查找到的客戶端代理作為所定位得到的客戶端代理,若不一致,執(zhí)行步驟4。另一種情況下,客戶端在接入服務(wù)I上登錄,一段時(shí)間后從接入服務(wù)I上退出,又在接入服務(wù)2上登錄,而核心服務(wù)上所保存的是客戶端在接入服務(wù)I上登錄時(shí)的PID,而接入服務(wù)I上已經(jīng)沒有為客戶端所生成的客戶端代理,則當(dāng)根據(jù)信令中PID的客戶端代理地址標(biāo)識(shí)無(wú)法查找到客戶端代理,即判斷出該P(yáng)ID是無(wú)效的,執(zhí)行步驟4。4:接入服務(wù)向核心服務(wù)發(fā)送獲取請(qǐng)求,請(qǐng)求核心服務(wù)重新獲取PID。5:核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID。6:全局索引服務(wù)將新的PID返回至核心服務(wù)。7:核心服務(wù)將新的PID添加信令中,如業(yè)務(wù)請(qǐng)求信令,將信令下發(fā)至接入服務(wù)。8:接入服務(wù)上的客戶端代理將信令轉(zhuǎn)發(fā)至客戶端。接入服務(wù)接收到核心服務(wù)發(fā)送的信令后,根據(jù)信令內(nèi)PID中的客戶端代理地址ID,查找所使用的客戶端代理。接入服務(wù)去除信令中的PID,如接入服務(wù)去除信令頭部中的PID,并由客戶端代理將信令轉(zhuǎn)發(fā)至客戶端??蛻舳嗽诮邮盏叫帕詈螅ㄟ^客戶端代理向接入服務(wù)返回響應(yīng)信息,接入服務(wù)再將該響應(yīng)信息發(fā)送至核心服務(wù),告知核心服務(wù)信令下發(fā)成功。參見圖4,顯示了核心服務(wù)將信令下發(fā)至客戶端的又一種流程示意圖。圖4仍以核心服務(wù)為有狀態(tài)的核心服務(wù)的場(chǎng)景為例進(jìn)行說明,在此略去了客戶端的注冊(cè)流程。對(duì)無(wú)狀態(tài)的核心服務(wù),由于PID隨著客戶端的請(qǐng)求上報(bào)至核心服務(wù),該P(yáng)ID是當(dāng)前操作所使用的有效PID,所以通常無(wú)需采用圖4所示的處理方式。1:核心服務(wù)從本地緩存中查找PID。當(dāng)核心服務(wù)需要向客戶端下發(fā)信令時(shí),核心服務(wù)首先從本地緩存中查找到PID。進(jìn)一步的,核心服務(wù)根據(jù)所獲知的客戶端標(biāo)識(shí)(UserId)從本地緩存中獲取客戶端的PID。2:接入服務(wù)向核心服務(wù)發(fā)送獲取請(qǐng)求,請(qǐng)求核心服務(wù)重新獲取PID。核心服務(wù)查找不到PID時(shí),向全局索引服務(wù)發(fā)送請(qǐng)求。當(dāng)核心服務(wù)在本地緩存中查找不到PID時(shí),例如,若當(dāng)前核心服務(wù)和客戶端登錄時(shí)所關(guān)聯(lián)的核心服務(wù)不一致時(shí),當(dāng)前核心服務(wù)無(wú)法在本地緩存中查找到客戶端的PID,這時(shí),從全局索引服務(wù)獲取PID。3:核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID。4:核心服務(wù)向接入服務(wù)發(fā)送信令。核心服務(wù)在新獲取的PID中得到接入服務(wù)地址,獲知當(dāng)前所使用的接入服務(wù),將查找到的PID添加在信令(如業(yè)務(wù)請(qǐng)求信令)中后,發(fā)送至接入服務(wù)。進(jìn)一步的,本實(shí)施例中核心服務(wù)將PID添加至信令的信令頭部。5:接入服務(wù)上的客戶端代理將信令轉(zhuǎn)發(fā)至客戶端。接入服務(wù)接收到核心服務(wù)發(fā)送的信令后,根據(jù)信令內(nèi)PID中的客戶端代理地址ID,查找所使用的客戶端代理。接入服務(wù)去除信令中的PID,如接入服務(wù)去除信令頭部中的PID,并由客戶端代理將信令轉(zhuǎn)發(fā)至客戶端??蛻舳嗽诮邮盏叫帕詈螅ㄟ^客戶端代理向接入服務(wù)返回響應(yīng)信息,接入服務(wù)再將該響應(yīng)信息發(fā)送至核心服務(wù),告知核心服務(wù)信令下發(fā)成功。由上所述,本發(fā)明實(shí)施例通過設(shè)置用戶登錄身份唯一標(biāo)識(shí)PID,并在核心服務(wù)的本地緩存中維護(hù)該P(yáng)ID或者從客戶端請(qǐng)求中得到該P(yáng)ID,顯著減少了對(duì)全局索引服務(wù)的訪問請(qǐng)求;并且,本發(fā)明實(shí)施例在PID中直接設(shè)置客戶端代理的地址偏移量,提高了信息的查詢效率。本發(fā)明實(shí)施例提供了一種快速定位用戶代理的方法,能夠有效地降低全局索引服務(wù)的壓力,提聞系統(tǒng)的響應(yīng)性能。本發(fā)明實(shí)施例二提供了一種客戶端代理定位方法,參見圖5,所述方法包括:51:從核心服務(wù)的本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的用戶登錄身份唯一標(biāo)識(shí)(PID),所述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量,;52:根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后從核心服務(wù)發(fā)送至該接入服務(wù);53:根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,利用接入服務(wù)啟動(dòng)所定位到的客戶端代理并去除信令中的PID ;54:通過所定位到的客戶端代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。進(jìn)一步的,將系統(tǒng)中所有客戶端每次登錄的PID都存儲(chǔ)在全局索引服務(wù)中,所述PID中還包括時(shí)間戳信息,所述根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理包括:在根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)查找到客戶端代理時(shí),比較所述PID中的時(shí)間戳信息和查找到的客戶端代理的時(shí)間戳信息是否一致,若一致,將查找到的客戶端代理作為所定位得到的客戶端代理,若不一致,利用接入服務(wù)向核心服務(wù)發(fā)送獲取請(qǐng)求,由核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID ;或者,當(dāng)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)無(wú)法查找到客戶端代理時(shí),向核心服務(wù)發(fā)送獲取請(qǐng)求,由核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID。進(jìn)一步的,利用接入服務(wù)對(duì)每次登錄的客戶端生成PID,所述系統(tǒng)還包括:利用所述接入服務(wù)將所生成的PID發(fā)送至全局索引服務(wù);利用所述接入服務(wù)將所生成的PID發(fā)送至有狀態(tài)的核心服務(wù),由有狀態(tài)的核心服務(wù)將PID存儲(chǔ)在本地緩存中;利用所述接入服務(wù)將所生成的PID添加在所述客戶端的請(qǐng)求中,由客戶端代理將該客戶端的請(qǐng)求轉(zhuǎn)發(fā)至無(wú)狀態(tài)的核心服務(wù)。進(jìn)一步的,所述將PID添加至信令中后從核心服務(wù)發(fā)送至該接入服務(wù)包括:將所述PID添加至信令的信令頭部后從核心服務(wù)發(fā)送至該接入服務(wù);所述利用接入服務(wù)啟動(dòng)所定位到的客戶端代理并去除信令中的PID包括:利用接入服務(wù)去除信令頭部中的PID。所述核心服務(wù)包括有狀態(tài)的核心服務(wù)和無(wú)狀態(tài)的核心服務(wù),所述有狀態(tài)的核心服務(wù)設(shè)置有本地緩存,所述有狀態(tài)的核心服務(wù)維護(hù)客戶端標(biāo)識(shí)與PID的對(duì)應(yīng)關(guān)系,所述有狀態(tài)的核心服務(wù),根據(jù)所獲知的客戶端標(biāo)識(shí)從本地緩存中獲取客戶端的PID ;所述無(wú)狀態(tài)的核心服務(wù),將接收到的客戶端請(qǐng)求中攜帶的PID作為所獲取到的客戶端PID。進(jìn)一步的,所述有狀態(tài)的核心服務(wù),通過來自客戶端的請(qǐng)求獲知所述客戶端標(biāo)識(shí),以及,當(dāng)從本地緩存中獲取客戶端的PID失敗時(shí),根據(jù)所獲知的客戶端標(biāo)識(shí)從全局索引服務(wù)中獲取客戶端的PID。進(jìn)一步的,所述接入服務(wù)按照數(shù)組的形式保存所生成的PID,其中,所述數(shù)組中的一個(gè)數(shù)組元素表示一個(gè)PID ;所述PID中的客戶端代理地址標(biāo)識(shí)由數(shù)組元素的標(biāo)號(hào)構(gòu)成。本發(fā)明實(shí)施例二中各步驟的具體執(zhí)行方式可以參見本發(fā)明實(shí)施例一中的相關(guān)內(nèi)容。由上所述,本發(fā)明實(shí)施例通過設(shè)置用戶登錄身份唯一標(biāo)識(shí)PID,并在核心服務(wù)的本地緩存中維護(hù)該P(yáng)ID或者從客戶端請(qǐng)求中得到該P(yáng)ID,顯著減少了對(duì)全局索引服務(wù)的訪問請(qǐng)求;并且,本發(fā)明實(shí)施例在PID中直接設(shè)置客戶端代理的地址偏移量,提高了信息的查詢效率。本發(fā)明實(shí)施例提供了一種快速定位用戶代理的方法,能夠有效地降低全局索引服務(wù)的壓力,提聞系統(tǒng)的響應(yīng)性能。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種客戶端代理定位系統(tǒng),其特征在于,所述系統(tǒng)包括接入服務(wù)、客戶端代理和核心服務(wù), 所述核心服務(wù),從本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的用戶登錄身份唯一標(biāo)識(shí)PID,所述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量,以及,根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后發(fā)送至該接入服務(wù); 所述接入服務(wù),根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,啟動(dòng)所定位到的客戶端代理并去除信令中的PID ; 所述定位到的客戶端代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括全局索引服務(wù),所述全局索引服務(wù)存儲(chǔ)系統(tǒng)中所有客戶端每次登錄的PID,所述PID中還包括時(shí)間戳信息, 所述接入服務(wù),當(dāng)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)查找到客戶端代理時(shí),比較所述PID中的時(shí)間戳信息和查找到的客戶端代理的時(shí)間戳信息是否一致,若一致,將查找到的客戶端代理作為所定位得到的客戶端代理,若不一致,接入服務(wù)向核心服務(wù)發(fā)送獲取請(qǐng)求,核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID ;以及 所述接入服務(wù),當(dāng)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)無(wú)法查找到客戶端代理時(shí),向核心服務(wù)發(fā)送獲取請(qǐng)求,核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述核心服務(wù)包括有狀態(tài)的核心服務(wù)和無(wú)狀態(tài)的核心服務(wù),所述有狀態(tài)的核心服務(wù)設(shè)置有本地緩存, 所述有狀態(tài)的核心服務(wù)維護(hù)客戶端標(biāo)識(shí)與PID的對(duì)應(yīng)關(guān)系,所述有狀態(tài)的核心服務(wù),根據(jù)所獲知的客戶端標(biāo)識(shí)從本地緩存中獲取客戶端的PID ; 所述無(wú)狀態(tài)的核心服務(wù),將接收到的客戶端請(qǐng)求中攜帶的PID作為所獲取到的客戶端PID。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于, 所述有狀態(tài)的核心服務(wù),通過來自客戶端的請(qǐng)求獲知所述客戶端標(biāo)識(shí),以及,當(dāng)從本地緩存中獲取客戶端的PID失敗時(shí),根據(jù)所獲知的客戶端標(biāo)識(shí)從全局索引服務(wù)中獲取客戶端的 PID。
5.根據(jù)權(quán)利要求4所述的系統(tǒng),其特征在于,所述接入服務(wù)對(duì)每次登錄的客戶端生成PID并保存,所述系統(tǒng)還包括: 所述接入服務(wù)將所生成的PID發(fā)送至全局索引服務(wù); 所述接入服務(wù)將所生成的PID發(fā)送至有狀態(tài)的核心服務(wù),由有狀態(tài)的核心服務(wù)將PID存儲(chǔ)在本地緩存中; 所述接入服務(wù)將所生成的PID添加在所述客戶端的請(qǐng)求中,由客戶端代理將該客戶端的請(qǐng)求轉(zhuǎn)發(fā)至無(wú)狀態(tài)的核心服務(wù)。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于, 所述接入服務(wù)按照數(shù)組的形式保存所生成的PID,其中,所述數(shù)組中的一個(gè)數(shù)組元素表示一個(gè)PID ; 所述PID中的客戶端代理地址標(biāo)識(shí)由數(shù)組元素的標(biāo)號(hào)構(gòu)成。
7.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述核心服務(wù)將PID添加至信令的信令頭部; 所述接入服務(wù)去除信令頭部中的PID。
8.一種客戶端代理定位方法,其特征在于,所述方法包括: 從核心服務(wù)的本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的用戶登錄身份唯一標(biāo)識(shí)PID,所述PID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),所述客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量, 根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后從核心服務(wù)發(fā)送至該接入服務(wù); 根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,利用接入服務(wù)啟動(dòng)所定位到的客戶端代理并去除信令中的PID ; 通過所定位到的客戶端 代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,將系統(tǒng)中所有客戶端每次登錄的PID都存儲(chǔ)在全局索引服務(wù)中,所述PID中還包括時(shí)間戳信息,所述根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理包括: 當(dāng)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)查找到客戶端代理時(shí),比較所述PID中的時(shí)間戳信息和查找到的客戶端代理的時(shí)間戳信息是否一致,若一致,將查找到的客戶端代理作為所定位得到的客戶端代理,若不一致,利用接入服務(wù)向核心服務(wù)發(fā)送獲取請(qǐng)求,由核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID ;以及, 當(dāng)根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)無(wú)法查找到客戶端代理時(shí),向核心服務(wù)發(fā)送獲取請(qǐng)求,由核心服務(wù)根據(jù)該獲取請(qǐng)求從全局索引服務(wù)中獲取新的PID。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,利用接入服務(wù)對(duì)每次登錄的客戶端生成PID,所述系統(tǒng)還包括: 利用所述接入服務(wù)將所生成的PID發(fā)送至全局索引服務(wù); 利用所述接入服務(wù)將所生成的PID發(fā)送至有狀態(tài)的核心服務(wù),由有狀態(tài)的核心服務(wù)將PID存儲(chǔ)在本地緩存中; 利用所述接入服務(wù)將所生成的PID添加在所述客戶端的請(qǐng)求中,由客戶端代理將該客戶端的請(qǐng)求轉(zhuǎn)發(fā)至無(wú)狀態(tài)核心服務(wù); 其中,所述核心服務(wù)包括有狀態(tài)的核心服務(wù)和無(wú)狀態(tài)的核心服務(wù)。
全文摘要
本發(fā)明公開了一種客戶端代理定位系統(tǒng)和方法,能夠有效地降低全局索引服務(wù)的壓力,提高系統(tǒng)的響應(yīng)性能。本發(fā)明實(shí)施例提供的一種客戶端代理定位系統(tǒng)包括核心服務(wù),從本地緩存中或者從來自客戶端的請(qǐng)求中獲取客戶端的PID,該P(yáng)ID包括接入服務(wù)地址和客戶端代理地址標(biāo)識(shí),該客戶端代理地址標(biāo)識(shí)指示客戶端代理在接入服務(wù)中相對(duì)于首地址的偏移量,以及,根據(jù)所獲取的PID中的接入服務(wù)地址獲知接入服務(wù),將PID添加至信令中后發(fā)送至該接入服務(wù);接入服務(wù),根據(jù)所述信令中PID的客戶端代理地址標(biāo)識(shí)定位得到客戶端代理,啟動(dòng)所定位到的客戶端代理并去除信令中的PID;所定位到的客戶端代理,將去除PID后的信令轉(zhuǎn)發(fā)至客戶端。
文檔編號(hào)H04L29/08GK103188311SQ201110457179
公開日2013年7月3日 申請(qǐng)日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
發(fā)明者王延維, 徐廣鑫 申請(qǐng)人:北京新媒傳信科技有限公司