專利名稱:多域名會(huì)話信息共享方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及計(jì)算機(jī)數(shù)據(jù)共享技術(shù)領(lǐng)域,特別是涉及一種多域名會(huì)話信息共享方法及系統(tǒng)。
背景技術(shù):
一般來(lái)說(shuō),用戶在訪問(wèn)不同的域名時(shí)會(huì)產(chǎn)生不同的session(會(huì)話),在某些情況下,為了減少訪問(wèn)數(shù)據(jù)量,需要對(duì)同一用戶訪問(wèn)不同的域名實(shí)現(xiàn)session共享,例如,主域名、子域名、跨站點(diǎn)域名或跨服務(wù)器域名等等。目前,常見(jiàn)的session共享方案為通過(guò)cookie方式,將session信息全部存放到客戶端瀏覽器的cookie中,實(shí)現(xiàn)集群的session共享,多個(gè)域名之間通過(guò)異步請(qǐng)求來(lái)同步多個(gè)域名下的cookie,實(shí)現(xiàn)session的共享。此種將session信息大量存儲(chǔ)在客戶端瀏覽器中的方式,需要使用大量的cookie,而瀏覽器對(duì)于cookie的大小和數(shù)量使用有嚴(yán)格的限制,如果已使用的cookie的超過(guò)客戶端瀏覽器的限制,客戶端瀏覽器就會(huì)采取不同的策略丟棄部分cookie,這樣就造成用戶訪問(wèn)過(guò)程中信息丟失、用戶權(quán)限和登陸狀態(tài)丟失等情況。同時(shí),此種使用cookie來(lái)存儲(chǔ)所有session信息的方式,需要在用戶每次請(qǐng)求過(guò)程中將http (超文本傳輸協(xié)議,Hyper Text Transfer Protocol)頭中的cookie信息傳遞到服務(wù)端,服務(wù)端在修改后再次通過(guò)response (反饋)寫回到客戶端瀏覽器中,整個(gè)請(qǐng)求過(guò)程必須全程傳遞cookie,浪費(fèi)傳輸資源。另外,現(xiàn)有的基于cookie存儲(chǔ)的多域名會(huì)話信息同步,需要在用戶session信息改變時(shí),異步發(fā)起請(qǐng)求到所有需要共享session的其他域名,來(lái)同步修改cookie,因此,在較多的獨(dú)立域名情況下同步效率較低且安全性差。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环N多域名會(huì)話信息共享方法及系統(tǒng),以夠解決多域名會(huì)話信息共享時(shí)數(shù)據(jù)丟失、同步效率低和安全性差的問(wèn)題。為了解決上述問(wèn)題,本申請(qǐng)公開(kāi)了一種多域名會(huì)話信息共享方法,包括:接收客戶端發(fā)送的訪問(wèn)請(qǐng)求;判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符;若包含,則獲取所述會(huì)話標(biāo)識(shí)符;若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中;若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,若能夠獲取會(huì)話標(biāo)識(shí)符,則將所述會(huì)話標(biāo)識(shí)符添加到所述訪問(wèn)請(qǐng)求的目標(biāo)地址中,若不能,則生成會(huì)話標(biāo)識(shí)符并將所述會(huì)話標(biāo)識(shí)符分別寫入到客戶端cookie中記載的當(dāng)前子站和主站域名中;根據(jù)所述會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。進(jìn)一步地,所述方法通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求包括:向同步系統(tǒng)發(fā)送初步請(qǐng)求,所述初步請(qǐng)求中包含當(dāng)前訪問(wèn)請(qǐng)求的目標(biāo)URL ;
所述同步系統(tǒng)將初步請(qǐng)求中的目標(biāo)URL作為源地址,并攜帶所述源地址向主站發(fā)送同步請(qǐng)求,并從向主站發(fā)送的同步請(qǐng)求的請(qǐng)求頭中讀取會(huì)話標(biāo)識(shí)符,添加到源地址中,然后對(duì)寫入會(huì)話標(biāo)識(shí)符的源地址重新發(fā)起訪問(wèn)請(qǐng)求。進(jìn)一步地,所述根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中對(duì)應(yīng)的會(huì)話信息包括:向緩存發(fā)送包含所述會(huì)話標(biāo)識(shí)符的讀取請(qǐng)求;根據(jù)所述會(huì)話標(biāo)識(shí)符查詢緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息;若有對(duì)應(yīng)的會(huì)話信息,則讀取所述會(huì)話信息。進(jìn)一步地,所述根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中對(duì)應(yīng)的會(huì)話信息包括:向代理服務(wù)器發(fā)送將所述會(huì)話標(biāo)識(shí)符作為請(qǐng)求參數(shù)的讀取請(qǐng)求,所述代理服務(wù)器解析所述讀取請(qǐng)求獲取會(huì)話標(biāo)識(shí)符,根據(jù)會(huì)話標(biāo)識(shí)符查詢緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息,若有對(duì)應(yīng)的會(huì)話信息,則代理服務(wù)器讀取所述會(huì)話信息;接收代理服務(wù)器解析的會(huì)話信息。進(jìn)一步地,所述向代理服務(wù)器發(fā)送的讀取請(qǐng)求為通過(guò)超文本傳輸協(xié)議發(fā)送。為了解決上述問(wèn)題,本申請(qǐng)還公開(kāi)了一種多域名會(huì)話信息共享方法,包括以下步驟:接收客戶端發(fā)送的針對(duì)主站的訪問(wèn)請(qǐng)求;判斷所述針對(duì)主站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則生成會(huì)話標(biāo)識(shí)符添加到當(dāng)前訪問(wèn)請(qǐng)求中;在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)子站的訪問(wèn)請(qǐng)求;判斷所述針對(duì)子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符;根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。為了解決上述問(wèn)題,本申請(qǐng)還公開(kāi)了一種多域名會(huì)話信息共享方法,包括以下步驟:接收客戶端發(fā)送的針對(duì)子站的訪問(wèn)請(qǐng)求;判斷針對(duì)當(dāng)前子站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站獲取會(huì)話標(biāo)識(shí)符,若獲取的會(huì)話標(biāo)識(shí)符為空或者不能獲取,則通過(guò)同步系統(tǒng)生成會(huì)話標(biāo)識(shí)符;通過(guò)寫入客戶端cookie的方式,將會(huì)話標(biāo)識(shí)符同時(shí)添加到子站域名和主站域名中,實(shí)現(xiàn)當(dāng)前子站和主站會(huì)話標(biāo)識(shí)符的同步;在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)請(qǐng)求;若再次發(fā)送的是針對(duì)主站的訪問(wèn)請(qǐng)求,則讀取會(huì)話標(biāo)識(shí)符,若再次發(fā)送的是針對(duì)其他子站的訪問(wèn)請(qǐng)求,則判斷針對(duì)其他子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符;根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。為了解決上述問(wèn)題,本申請(qǐng)還公開(kāi)了一種多域名會(huì)話信息共享系統(tǒng),包括:訪問(wèn)請(qǐng)求接收模塊,用于接收客戶端發(fā)送的訪問(wèn)請(qǐng)求;判斷模塊,用于判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若包含,則獲取會(huì)話標(biāo)識(shí)符,若不包含,且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中,若不包含,其所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則傳遞信息給同步模塊;同步模塊,向主站發(fā)送同步請(qǐng)求,若能從主站獲取會(huì)話標(biāo)識(shí)符,則添加到訪問(wèn)請(qǐng)求中,若不能,則生成會(huì)話標(biāo)識(shí)符并同時(shí)添加到當(dāng)前子站和主站的域名中; 讀取模塊,根據(jù)會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。進(jìn)一步地,所述系統(tǒng)還包括:代理服務(wù)器,用于接收讀取模塊所發(fā)送的讀取緩存中的會(huì)話信息的請(qǐng)求,并解析后傳遞給緩存,并將從緩存中讀取的會(huì)話信息解析后返回給讀取模塊。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):本申請(qǐng)的多域名會(huì)話信息共享方法和系統(tǒng)通過(guò)會(huì)話管理系統(tǒng)在一次會(huì)話過(guò)程中首次訪問(wèn)時(shí)生成的唯一的不重復(fù)的會(huì)話標(biāo)識(shí)符來(lái)識(shí)別一次會(huì)話過(guò)程中的會(huì)話信息。后續(xù)訪問(wèn)發(fā)生時(shí),則通過(guò)同步獲取此會(huì)話標(biāo)識(shí)符,便可以去讀取存儲(chǔ)在緩存中的會(huì)話信息,從而實(shí)現(xiàn)多域名之間會(huì)話信息的共享。因?yàn)闀?huì)話標(biāo)識(shí)符的生成,大量的會(huì)話信息通過(guò)緩存集群存儲(chǔ)而不使用cookie,避免了客戶端瀏覽器對(duì)cookie使用限制造成的安全穩(wěn)定風(fēng)險(xiǎn),如數(shù)據(jù)丟失等。在共享同步過(guò)程中,只需要讀取訪問(wèn)請(qǐng)求中的或者寫入cookie中的會(huì)話標(biāo)識(shí)符,而無(wú)需獲取其他信息,這減少了大量cookie傳遞的過(guò)程,節(jié)約帶寬,成本低。在此過(guò)程中,只需在獨(dú)立域名首次請(qǐng)求時(shí),一次性同步主站的會(huì)話標(biāo)識(shí)符即可,因?yàn)闀?huì)話標(biāo)識(shí)符是唯一不變的,每次通過(guò)會(huì)話標(biāo)識(shí)符去讀取會(huì)話信息,所以后續(xù)會(huì)話信息的更改對(duì)于各域名來(lái)說(shuō)是完全自動(dòng)同步,不需要每次修改后再發(fā)起多個(gè)域名的同步,同步過(guò)程簡(jiǎn)單、效率高且信息安全性高。當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
圖1是本申請(qǐng)的多域名會(huì)話信息共享方法實(shí)施例一的流程圖;圖2是本申請(qǐng)的多域名會(huì)話信息共享方法實(shí)施例二的流程圖;圖3是本申請(qǐng)的多域名會(huì)話信息共享的實(shí)現(xiàn)架構(gòu)圖;圖4是本申請(qǐng)的多域名會(huì)話信息共享系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。本申請(qǐng)的多域名會(huì)話信息共享通過(guò)在一次會(huì)話(session,客戶端瀏覽器和服務(wù)端之間的狀態(tài)的保持機(jī)制)過(guò)程中,在首次訪問(wèn)中生成用戶識(shí)別本次會(huì)話信息的會(huì)話標(biāo)識(shí)符,在該次會(huì)話過(guò)程中的后續(xù)對(duì)多域名架構(gòu)下的任意網(wǎng)站進(jìn)行訪問(wèn)時(shí),通過(guò)同步系統(tǒng)來(lái)讀取首次訪問(wèn)所生成的會(huì)話標(biāo)識(shí)符,并根據(jù)該會(huì)話標(biāo)識(shí)符讀取緩存中的本次會(huì)話信息,從而實(shí)現(xiàn)會(huì)話信息共享。具體的多域名會(huì)話信息共享過(guò)程如下:接收客戶端發(fā)送的訪問(wèn)請(qǐng)求;判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若包含,則獲取所述會(huì)話標(biāo)識(shí)符;若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中;若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,若能夠獲取會(huì)話標(biāo)識(shí)符,則將所述會(huì)話標(biāo)識(shí)符添加到所述訪問(wèn)請(qǐng)求的目標(biāo)地址中;若不能,則生成會(huì)話標(biāo)識(shí)符并將所述會(huì)話標(biāo)識(shí)符分別寫入到客戶端cookie中記載的當(dāng)前子站和主站域名中;根據(jù)所述會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。對(duì)于前述過(guò)程中包括以下兩種情況:情況一:客戶端發(fā)送的訪問(wèn)請(qǐng)求是針對(duì)多域名架構(gòu)下主站的訪問(wèn),訪問(wèn)請(qǐng)求中若包含會(huì)話標(biāo)識(shí)符,則獲取該會(huì)話標(biāo)識(shí)符,若不包含,則生成后添加到訪問(wèn)請(qǐng)求中。情況二:客戶端發(fā)送的訪問(wèn)請(qǐng)求是針對(duì)多域名架構(gòu)下子站的訪問(wèn),訪問(wèn)請(qǐng)求中若包含會(huì)話標(biāo)識(shí)符,則獲取該會(huì)話標(biāo)識(shí)符,若不包含,首先通過(guò)主站同步獲取,若不能同步獲取,則生成會(huì)話標(biāo)識(shí)符后同時(shí)寫入到子站和主站域名中。下面對(duì)這兩種情況分別進(jìn)行詳細(xì)的說(shuō)明。參照?qǐng)D1,其示出本申請(qǐng)的一種多域名會(huì)話信息共享方法實(shí)施例一,包括以下步驟:步驟101,接收客戶端發(fā)送的針對(duì)主站的訪問(wèn)請(qǐng)求。此處的主站指在多域名架構(gòu)下的所有網(wǎng)站中選取的一個(gè)網(wǎng)站,主站可以任意選取,也可以根據(jù)業(yè)務(wù)需要來(lái)確定,本申請(qǐng)對(duì)此并不限制。多域名架構(gòu)下的其他網(wǎng)站則為子站,子站通過(guò)與主站交互實(shí)現(xiàn)數(shù)據(jù)共享。當(dāng)然,在必要時(shí),例如數(shù)據(jù)量特別巨大,為了減輕主站的壓力,也可以選取兩個(gè)或者多個(gè)網(wǎng)站作為主站。步驟102,判斷所述針對(duì)主站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則生成會(huì)話標(biāo)識(shí)符添加到當(dāng)前訪問(wèn)請(qǐng)求中。會(huì)話標(biāo)識(shí)符是會(huì)話管理系統(tǒng)生成的為了識(shí)別會(huì)話信息的隨機(jī)字符串,在多域名架構(gòu)下所生成的會(huì)話標(biāo)識(shí)符都是不與其他會(huì)話標(biāo)識(shí)符重復(fù)的唯一的字符串,從而起到識(shí)別作用。本申請(qǐng)中,會(huì)話標(biāo)識(shí)符作為訪問(wèn)請(qǐng)求的一部分存儲(chǔ)在請(qǐng)求頭的固定位置中,當(dāng)有訪問(wèn)請(qǐng)求發(fā)生時(shí),通過(guò)讀取請(qǐng)求頭中的對(duì)應(yīng)位置,判斷該位置的字符串是否為空即可判斷出是否包含會(huì)話標(biāo)識(shí)符。在同一會(huì)話過(guò)程中,向主站提出的后續(xù)請(qǐng)求中,所生成的請(qǐng)求頭中都會(huì)包括此會(huì)話標(biāo)識(shí)符,從而便于其他子站或者同步系統(tǒng)從主站獲取會(huì)話標(biāo)識(shí)符。會(huì)話信息可包括當(dāng)前訪問(wèn)請(qǐng)求的用戶名稱、登錄狀態(tài)、用戶級(jí)別、用戶id等信息。如果此次訪問(wèn)時(shí)不包含會(huì)話信息(如以游客身份進(jìn)入某一網(wǎng)站),則僅記錄會(huì)話標(biāo)識(shí)符。如果此次訪問(wèn)中包含有會(huì)話信息,則本申請(qǐng)還包括:以會(huì)話標(biāo)識(shí)符作為標(biāo)識(shí)將會(huì)話信息存入緩存中,以便在這一次會(huì)話過(guò)程中的后續(xù)訪問(wèn)請(qǐng)求能夠共享此會(huì)話信息。也就是說(shuō),會(huì)話標(biāo)識(shí)符在首次訪問(wèn)時(shí)就生成,在一次會(huì)話過(guò)程中,后面任何一次時(shí)生成了會(huì)話信息,都以這個(gè)會(huì)話標(biāo)識(shí)符作為標(biāo)識(shí)來(lái)存儲(chǔ)會(huì)話信息,以實(shí)現(xiàn)會(huì)話信息共享。其中,將當(dāng)前會(huì)話信息存入緩存可以通過(guò)直接向緩存發(fā)送請(qǐng)求的方式來(lái)實(shí)現(xiàn)。若緩存與主站的開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)環(huán)境不同,則可以通過(guò)代理服務(wù)器作為中轉(zhuǎn)來(lái)實(shí)現(xiàn)主站與緩存的數(shù)據(jù)交互。步驟103,在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)子站的訪問(wèn)請(qǐng)求。同一會(huì)話過(guò)程指客戶端與服務(wù)器端對(duì)話狀態(tài)保持不變的過(guò)程??蛻舳嗽俅伟l(fā)送的針對(duì)子站的訪問(wèn)請(qǐng)求可以是通過(guò)點(diǎn)擊主站中相關(guān)鏈接提出,也可以通過(guò)新建窗口后直接輸入子站的網(wǎng)址后提出。步驟104,判斷所述針對(duì)子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符。與針對(duì)的主站的訪問(wèn)請(qǐng)求相同,從針對(duì)子站的訪問(wèn)請(qǐng)求的請(qǐng)求頭中讀取會(huì)話標(biāo)識(shí)符,若會(huì)話標(biāo)識(shí)符為空,則說(shuō)明訪問(wèn)請(qǐng)求中不包含會(huì)話標(biāo)識(shí)符。因?yàn)樵诖舜卧L問(wèn)之前,主站已經(jīng)生成會(huì)話標(biāo)識(shí)符,只需要通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,則可以獲取到包含在此次請(qǐng)求頭中的會(huì)話標(biāo)識(shí)符。其中,通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符包括:首先,向同步系統(tǒng)發(fā)送包含當(dāng)前訪問(wèn)請(qǐng)求目標(biāo)網(wǎng)站的URL(統(tǒng)一資源定位符,Uniform Resource Locator)的初步請(qǐng)求;同步系統(tǒng)在接收初步請(qǐng)求后,將其中的URL作為源地址,并攜帶所述源地址向主站發(fā)送同步請(qǐng)求,并從向主站發(fā)送的同步請(qǐng)求的請(qǐng)求頭中讀取會(huì)話標(biāo)識(shí)符,添加到源地址中;然后,同步系統(tǒng)對(duì)寫入會(huì)話標(biāo)識(shí)符的源地址重新發(fā)起訪問(wèn)請(qǐng)求。步驟105,根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。具體的,包括以下步驟:向緩存發(fā)送包含所述會(huì)話標(biāo)識(shí)符的讀取請(qǐng)求;根據(jù)所述會(huì)話標(biāo)識(shí)符查詢緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息;若有對(duì)應(yīng)的會(huì)話信息,則讀取所述會(huì)話信息,反之,則不做處理。在某些情況下,因?yàn)殚_(kāi)發(fā)語(yǔ)言和環(huán)境的不同,緩存可能無(wú)法識(shí)別讀取請(qǐng)求,此時(shí),若需要讀取緩存中的會(huì)話信息,也可以通過(guò)代理服務(wù)器對(duì)請(qǐng)求進(jìn)行解析后來(lái)實(shí)現(xiàn),具體包括:向代理服務(wù)器發(fā)送將所述會(huì)話標(biāo)識(shí)符作為請(qǐng)求參數(shù)的讀取請(qǐng)求,所述代理服務(wù)器解析所述讀取請(qǐng)求獲取會(huì)話標(biāo)識(shí)符,根據(jù)會(huì)話標(biāo)識(shí)符查詢并讀取緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息;接收代理服務(wù)器解析的會(huì)話信息。參照?qǐng)D2,其示出本申請(qǐng)的多域名會(huì)話信息共享方法實(shí)施例二,包括以下步驟:步驟201,接收客戶端發(fā)送的針對(duì)子站的訪問(wèn)請(qǐng)求。步驟202,判斷針對(duì)當(dāng)前子站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站獲取會(huì)話標(biāo)識(shí)符,若獲取的會(huì)話標(biāo)識(shí)符為空或者不能獲取,則通過(guò)同步系統(tǒng)生成會(huì)話標(biāo)識(shí)符。如前所述,是否包含會(huì)話標(biāo)識(shí)符通過(guò)前述的讀取固定位置字符串實(shí)現(xiàn)。如果不包含,則首先通過(guò)同步系統(tǒng)向主站獲取會(huì)話標(biāo)識(shí)符,若沒(méi)有會(huì)話標(biāo)識(shí)符,則說(shuō)明針對(duì)子站的訪問(wèn)請(qǐng)求為此次會(huì)話過(guò)程中,多域名架構(gòu)下的首次訪問(wèn),那么需要通過(guò)同步系統(tǒng)來(lái)生成會(huì)話標(biāo)識(shí)符。其中,同步系統(tǒng)生成會(huì)話標(biāo)識(shí)符的方式與主站的會(huì)話管理系統(tǒng)生成會(huì)話標(biāo)識(shí)符的方式相同。步驟203,通過(guò)寫入cookie的方式將會(huì)話標(biāo)識(shí)符同時(shí)添加到子站域名和主站域名中,實(shí)現(xiàn)當(dāng)前子站和主站會(huì)話標(biāo)識(shí)符的同步。生成會(huì)話標(biāo)識(shí)符后,首先同步系統(tǒng)需要請(qǐng)求子站和主站的域名,并通過(guò)寫入cookie的方式,將會(huì)話標(biāo)識(shí)符寫入當(dāng)前子站和主站的域名中,從而實(shí)現(xiàn)會(huì)話標(biāo)識(shí)符的同步。當(dāng)后續(xù)向主站發(fā)送請(qǐng)求時(shí),因?yàn)橥较到y(tǒng)已經(jīng)將會(huì)話標(biāo)識(shí)符寫入cookie中,而請(qǐng)求頭作為cookie的載體,則會(huì)自動(dòng)將會(huì)話標(biāo)識(shí)符添加在后續(xù)請(qǐng)求中。若存在會(huì)話信息,則以會(huì)話標(biāo)識(shí)符作為存儲(chǔ)標(biāo)識(shí)將當(dāng)前會(huì)話信息存入緩存。將會(huì)話信息存入緩存可以通過(guò)直接向緩存發(fā)送請(qǐng)求的方式來(lái)實(shí)現(xiàn)。若緩存與子站的開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)環(huán)境不同,則也可以通過(guò)代理服務(wù)器來(lái)實(shí)現(xiàn)數(shù)據(jù)交互。步驟204,在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)請(qǐng)求。步驟205,若再次發(fā)送的是針對(duì)主站的訪問(wèn)請(qǐng)求,則直接讀取訪問(wèn)請(qǐng)求中的會(huì)話標(biāo)識(shí)符,若再次發(fā)送的是針對(duì)其他子站的訪問(wèn)請(qǐng)求,則判斷針對(duì)其他子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符。若是針對(duì)主站的訪問(wèn)請(qǐng)求,因?yàn)橹耙呀?jīng)進(jìn)行過(guò)同步,因此主站的訪問(wèn)請(qǐng)求中包含有會(huì)話標(biāo)識(shí)符,此時(shí)可以直接從訪問(wèn)請(qǐng)求的請(qǐng)求頭中讀取會(huì)話標(biāo)識(shí)符。若是針對(duì)其他子站的訪問(wèn)請(qǐng)求,若其包含有會(huì)話標(biāo)識(shí)符,則直接讀取,反之,則與前述實(shí)施例相同的方式通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求來(lái)獲取會(huì)話標(biāo)識(shí)符。步驟206,根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。參照?qǐng)D3,其示出本申請(qǐng)的多域名會(huì)話信息共享的具體架構(gòu)圖,假設(shè)多域名下共有三個(gè)網(wǎng)站,其中,a為主站(CenterSite)、b、C為子站。a和c可直接與緩存服務(wù)器(tairmemcachegroup)通過(guò)緩存客戶端(tairclient)進(jìn)行數(shù)據(jù)交互,b與緩存服務(wù)器通過(guò)代理服務(wù)器(sessionProxy)實(shí)現(xiàn)數(shù)據(jù)交互,其中b與代理服務(wù)器通過(guò)超文本傳輸協(xié)議(http, Hyper Text Transfer Protocol)實(shí)現(xiàn)數(shù)據(jù)交互,代理服務(wù)器通過(guò)緩存客戶端實(shí)現(xiàn)數(shù)據(jù)交互。同步系統(tǒng)(tbpass)用于同步三個(gè)網(wǎng)站的會(huì)話標(biāo)識(shí)符(sessionkey),。會(huì)話信息共享的具體過(guò)程如下:步驟一,用戶對(duì)主站www.a.com進(jìn)行訪問(wèn),a站的應(yīng)用使用了 tbsession框架(會(huì)話管理框架),每次請(qǐng)求tbsession框架都會(huì)檢查當(dāng)前請(qǐng)求信息是否有sessionkey,如果沒(méi)有,則通過(guò)tbsession框架生成唯一的不重復(fù)的隨機(jī)的字符串作為sessionkey,并把sessionkey作為當(dāng)前會(huì)話的標(biāo)識(shí)。當(dāng)sessionkey生成之后,如果當(dāng)前用戶為登陸用戶,貝Ij以當(dāng)前sessionkey作為信息存儲(chǔ)的關(guān)鍵標(biāo)識(shí),把提出本次訪問(wèn)的用戶名稱,登錄狀態(tài),用戶級(jí)別,用戶id等信息通過(guò)tbsession框架寫入到memcachegroup。在下一訪問(wèn)請(qǐng)求中需要讀取某個(gè)用戶信息的時(shí)候,則可以根據(jù)sessionkey通過(guò)緩存客戶端從緩存服務(wù)器中查詢到相應(yīng)的信息,然后進(jìn)入步驟五。步驟二,當(dāng)用戶訪問(wèn)www.c.com下的應(yīng)用時(shí),該站應(yīng)用的tbsession框架會(huì)檢查當(dāng)前訪問(wèn)請(qǐng)求中是否有sessionkey,如果沒(méi)有sessionkey,貝U主動(dòng)發(fā)起對(duì)tbpass的請(qǐng)求,并且攜帶本次請(qǐng)求的源請(qǐng)求的完整URL信息,tbpass接收到請(qǐng)求后,記錄當(dāng)前請(qǐng)求的URL信息作為請(qǐng)求源,然后攜帶此請(qǐng)求源,發(fā)起對(duì)主站的同步請(qǐng)求,由于所有的同步請(qǐng)求都被解析到同步系統(tǒng),所以同步系統(tǒng)此時(shí)可以通過(guò)同步請(qǐng)求的請(qǐng)求頭獲取主站的sessionkey,獲取到主站的sessionkey后,tbpass將sessionkey寫到請(qǐng)求源當(dāng)中,然后重新發(fā)起對(duì)請(qǐng)求源地址請(qǐng)求,并進(jìn)入步驟四。如果tbpass獲取到的主站sessionkey是空字符串,貝U認(rèn)為主站sessionkey為空,進(jìn)入步驟五。 步驟三,當(dāng)用戶訪問(wèn)www.b.com下的應(yīng)用時(shí),其前述過(guò)程(判斷是否有sessionkey、通過(guò)tbpass向主站請(qǐng)求同步的過(guò)程)與步驟二中相同,若能獲取sessionkey,則進(jìn)入步驟六至步驟八,若主站sessionkey為空,則進(jìn)入步驟五至步驟八。步驟四,應(yīng)用根據(jù)sessionkey通過(guò)緩存客戶端查詢緩存服務(wù)器中的session信
肩、O步驟五,tbpass根據(jù)特定的算法,計(jì)算中一個(gè)唯一不重復(fù)的字符串作為sessionkey,然后同步系統(tǒng)分別請(qǐng)求主站域名a.com和當(dāng)前需要同步的域名,將sessionkey通過(guò)寫入cookie的方式,將sessionkey分別寫入到主站和當(dāng)前需要同步的域名,從而實(shí)現(xiàn)sessionkey的同步。步驟六,應(yīng)用將sessionkey作為請(qǐng)求的參數(shù)發(fā)起sessionProxy的http請(qǐng)求。步驟七,sessionProxy根據(jù)sessionkey通過(guò)緩存客戶端查詢緩存服務(wù)器并讀寫session 信息。步驟八,sessionproxy將從緩存服務(wù)器查詢到的信息返回給domainB的應(yīng)用。參照?qǐng)D4,其示出本申請(qǐng)的一種多域名會(huì)話信息共享系統(tǒng),包括訪問(wèn)請(qǐng)求接收模塊
10、判斷模塊20、同步模塊30和讀取模塊40。訪問(wèn)請(qǐng)求接收模塊10,用于接收客戶端發(fā)送的訪問(wèn)請(qǐng)求。訪問(wèn)請(qǐng)求接收模塊10置于多域名下各網(wǎng)站服務(wù)器中,當(dāng)接收到訪問(wèn)請(qǐng)求后,獲取訪問(wèn)請(qǐng)求中所包含的信息。判斷模塊20,用于判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若包含,則獲取會(huì)話標(biāo)識(shí)符,若不包含,且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中,若不包含,其所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則傳遞信息給同步模塊。判斷模塊20置于多域名下各網(wǎng)站服務(wù)器中,從獲取到的訪問(wèn)請(qǐng)求的請(qǐng)求中固定位置來(lái)讀取會(huì)話標(biāo)識(shí)符。會(huì)話標(biāo)識(shí)符為會(huì)話管理系統(tǒng)生成的用于識(shí)別一次會(huì)話信息的唯一的不重復(fù)的字符串,若能讀取到該字符串,則說(shuō)明包含會(huì)話標(biāo)識(shí)符,若不能讀取到或者字符串為空,則說(shuō)明不包含。同步模塊30,向主站發(fā)送同步請(qǐng)求,若能從主站獲取會(huì)話標(biāo)識(shí)符,則添加到訪問(wèn)請(qǐng)求中,若不能,則生成會(huì)話標(biāo)識(shí)符并同時(shí)添加到當(dāng)前子站和主站的域名中。同步模塊30同時(shí)與主站和子站都進(jìn)行數(shù)據(jù)通信,并實(shí)現(xiàn)主站和子站的會(huì)話標(biāo)識(shí)符的同步。讀取模塊40,根據(jù)會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。讀取模塊40置于多域名下各網(wǎng)站服務(wù)器中,并與緩存實(shí)現(xiàn)數(shù)據(jù)交互以獲取存儲(chǔ)于其中的會(huì)話信息,從而實(shí)現(xiàn)會(huì)話信息共享。優(yōu)選地,該系統(tǒng)還包括代理服務(wù)器,用于接收讀取模塊所發(fā)送的讀取緩存中的會(huì)話信息的請(qǐng)求,并解析后傳遞給緩存,并將從緩存中讀取的會(huì)話信息解析后返回給讀取模塊。本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上對(duì)本申請(qǐng)所提供的多域名會(huì)話信息共享方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.一種多域名會(huì)話信息共享方法,其特征在于,包括: 接收客戶端發(fā)送的訪問(wèn)請(qǐng)求; 判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符; 若包含,則獲取所述會(huì)話標(biāo)識(shí)符; 若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中; 若不包含且所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,若能夠獲取會(huì)話標(biāo)識(shí)符,則將所述會(huì)話標(biāo)識(shí)符添加到所述訪問(wèn)請(qǐng)求的目標(biāo)地址中,若不能,則生成會(huì)話標(biāo)識(shí)符并將所述會(huì)話標(biāo)識(shí)符分別寫入到客戶端cookie中記載的當(dāng)前子站和主站域名中; 根據(jù)所述會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。
2.按權(quán)利要求1所述的多域名會(huì)話信息共享方法,其特征在于,所述方法通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求包括: 向同步系統(tǒng)發(fā)送初步請(qǐng)求,所述初步請(qǐng)求中包含當(dāng)前訪問(wèn)請(qǐng)求的目標(biāo)URL ; 所述同步系統(tǒng)將初步請(qǐng)求中的目標(biāo)URL作為源地址,并攜帶所述源地址向主站發(fā)送同步請(qǐng)求,并從向主站發(fā)送的同步請(qǐng)求的請(qǐng)求頭中讀取會(huì)話標(biāo)識(shí)符,添加到源地址中,然后對(duì)寫入會(huì)話標(biāo)識(shí)符的源地址重新發(fā)起訪問(wèn)請(qǐng)求。
3.按權(quán)利要求1所述的多域名會(huì)話信息共享方法,其特征在于,所述根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中對(duì)應(yīng)的會(huì)話信息包括: 向緩存發(fā)送包含所述會(huì)話標(biāo)識(shí)符的讀取請(qǐng)求; 根據(jù)所述會(huì)話標(biāo)識(shí)符查詢緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息; 若有對(duì)應(yīng)的會(huì)話信息,則讀取所述會(huì)話信息。
4.按權(quán)利要求1至3中任一所述的多域名會(huì)話信息共享方法,其特征在于,所述根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中對(duì)應(yīng)的會(huì)話信息包括: 向代理服務(wù)器發(fā)送將所述會(huì)話標(biāo)識(shí)符作為請(qǐng)求參數(shù)的讀取請(qǐng)求,所述代理服務(wù)器解析所述讀取請(qǐng)求獲取會(huì)話標(biāo)識(shí)符,根據(jù)會(huì)話標(biāo)識(shí)符查詢緩存中以所述會(huì)話標(biāo)識(shí)符為存儲(chǔ)標(biāo)識(shí)的會(huì)話信息,若有對(duì)應(yīng)的會(huì)話信息,則代理服務(wù)器讀取所述會(huì)話信息; 接收代理服務(wù)器解析的會(huì)話信息。
5.按權(quán)利要求4所述的多域名會(huì)話信息共享方法,其特征在于,所述向代理服務(wù)器發(fā)送的讀取請(qǐng)求為通過(guò)超文本傳輸協(xié)議發(fā)送。
6.一種多域名會(huì)話信息共享方法,其特征在于,包括以下步驟: 接收客戶端發(fā)送的針對(duì)主站的訪問(wèn)請(qǐng)求; 判斷所述針對(duì)主站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則生成會(huì)話標(biāo)識(shí)符添加到當(dāng)前訪問(wèn)請(qǐng)求中; 在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)子站的訪問(wèn)請(qǐng)求; 判斷所述針對(duì)子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符; 根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。
7.一種多域名會(huì)話信息共享方法,其特征在于,包括以下步驟: 接收客戶端發(fā)送的針對(duì)子站的訪問(wèn)請(qǐng)求;判斷針對(duì)當(dāng)前子站的訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站獲取會(huì)話標(biāo)識(shí)符,若獲取的會(huì)話標(biāo)識(shí)符為空或者不能獲取,則通過(guò)同步系統(tǒng)生成會(huì)話標(biāo)識(shí)符; 通過(guò)寫入客戶端cookie的方式,將會(huì)話標(biāo)識(shí)符同時(shí)添加到子站域名和主站域名中,實(shí)現(xiàn)當(dāng)前子站和主站會(huì)話標(biāo)識(shí)符的同步; 在同一會(huì)話過(guò)程中,接收客戶端再次發(fā)送的訪問(wèn)請(qǐng)求; 若再次發(fā)送的是針對(duì)主站的訪問(wèn)請(qǐng)求,則讀取會(huì)話標(biāo)識(shí)符,若再次發(fā)送的是針對(duì)其他子站的訪問(wèn)請(qǐng)求,則判斷針對(duì)其他子站的訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符,若否,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,獲取會(huì)話標(biāo)識(shí)符; 根據(jù)所述獲取的會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。
8.一種多域名會(huì)話信息共享系統(tǒng),其特征在于,包括: 訪問(wèn)請(qǐng)求接收模塊,用于接收客戶端發(fā)送的訪問(wèn)請(qǐng)求; 判斷模塊,用于判斷所述訪問(wèn)請(qǐng)求中是否包含識(shí)別會(huì)話信息的會(huì)話標(biāo)識(shí)符,若包含,則獲取會(huì)話標(biāo)識(shí)符,若不包含,且所述訪問(wèn)請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中,若不包含,其所述訪問(wèn)請(qǐng)求目標(biāo)為子站,則傳遞信息給同步模塊; 同步模塊,向主站發(fā)送同步請(qǐng)求,若能從主站獲取會(huì)話標(biāo)識(shí)符,則添加到訪問(wèn)請(qǐng)求中,若不能,則生成會(huì)話標(biāo)識(shí)符并同時(shí)添加到當(dāng)前子站和主站的域名中; 讀取模塊,根據(jù)會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。
9.按權(quán)利要求8所述的多域名會(huì)話信息共享系統(tǒng),其特征在于,所述系統(tǒng)還包括: 代理服務(wù)器,用于接收讀取模塊所發(fā)送的讀取緩存中的會(huì)話信息的請(qǐng)求,并解析后傳遞給緩存,并將從緩存中讀取的會(huì)話信息解析后返回給讀取模塊。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N多域名會(huì)話信息共享方法,包括接收客戶端發(fā)送的訪問(wèn)請(qǐng)求;判斷訪問(wèn)請(qǐng)求中是否包含會(huì)話標(biāo)識(shí)符;若包含,則獲取會(huì)話標(biāo)識(shí)符;若不包含且請(qǐng)求目標(biāo)為主站,則生成會(huì)話標(biāo)識(shí)符并添加到訪問(wèn)請(qǐng)求中;若不包含且請(qǐng)求目標(biāo)為子站,則通過(guò)同步系統(tǒng)向主站發(fā)送同步請(qǐng)求,若能夠獲取會(huì)話標(biāo)識(shí)符,則將會(huì)話標(biāo)識(shí)符添加到訪問(wèn)請(qǐng)求目標(biāo)地址中,若不能,則生成會(huì)話標(biāo)識(shí)符并將會(huì)話標(biāo)識(shí)符分別寫入到客戶端cookie中當(dāng)前子站和主站域名中;根據(jù)會(huì)話標(biāo)識(shí)符讀取緩存中的會(huì)話信息。本申請(qǐng)還提供了一種實(shí)現(xiàn)前述方法的多域名會(huì)話信息共享系統(tǒng)。本申請(qǐng)的多域名會(huì)話信息共享方法及系統(tǒng),能夠避免多域名會(huì)話信息共享時(shí)數(shù)據(jù)丟失、提高同步效率和安全性。
文檔編號(hào)H04L29/08GK103095859SQ20111034677
公開(kāi)日2013年5月8日 申請(qǐng)日期2011年11月4日 優(yōu)先權(quán)日2011年11月4日
發(fā)明者艾樂(lè)強(qiáng) 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司