基于集群節(jié)點間即時拷貝的會話同步方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分布式架構(gòu)技術(shù)領(lǐng)域體涉及一種基于集群節(jié)點間即時拷貝的會話同步方法。
【背景技術(shù)】
[0002]在分布式架構(gòu)中,服務(wù)端使用集群環(huán)境,客戶端訪問服務(wù)端時,各集群節(jié)點間如何同步會話信息,目前較成熟的方案有:基于Cookies的會話同步、基于數(shù)據(jù)庫的會話同步、基于分布式緩存的會話同步,上述三種方式,均存在不足,具體如下,
1、基于Cookies的會話同步方案,步驟如下,(1)客戶端第一次訪問集群服務(wù)時,當(dāng)前集群節(jié)點為客戶端創(chuàng)建會話信息,將會話信息保存在本節(jié)點的內(nèi)存中,并將會話信息以Cookies的形式保存在客戶端;(2)客戶端再次訪問集群服務(wù)時,當(dāng)前集群節(jié)點根據(jù)客戶端請求的Cookies中攜帶的會話信息,首先檢查本節(jié)點中是否存在該會話信息,如果不存在,則創(chuàng)建;如果存在,則根據(jù)客戶端攜帶的會話信息更新本節(jié)點的會話信息;(3)當(dāng)客戶端退出時,當(dāng)前集群節(jié)點首先銷毀本節(jié)點的會話信息,并通知其他在線的集群節(jié)點銷毀指定的會話信息;同時客戶端銷毀Cookies中的會話信息;(4)各集群節(jié)點定時清理超時的會話信息,以釋放服務(wù)器的內(nèi)存資源。存在的主要問題是:客戶端的每次請求都需要攜帶完整的會話信息,如果會話信息過大的話,會導(dǎo)致請求到達(dá)服務(wù)端的時間過長,從而影響訪問效率;同時,由于每次請求都需要攜帶完整的會話信息,會增加暴露用戶信息風(fēng)險。
[0003]2、基于數(shù)據(jù)庫的會話同步方案的實現(xiàn)原理是:服務(wù)端將會話信息存放在數(shù)據(jù)庫中,所有集群節(jié)點都從數(shù)據(jù)庫中獲取會話信息。該方案存在的主要問題是:如果訪問量過大的話,頻繁操作數(shù)據(jù)庫,容易造成性能瓶頸。
[0004]3、基于分布式緩存的會話同步方案的實現(xiàn)原理是:服務(wù)端將會話信息存放在分布式緩存服務(wù)器上,所有集群節(jié)點都從分布式緩存服務(wù)器上獲取會話信息。該方案存在的主要問題是:由于所有會話信息都存放在緩存服務(wù)器上,所以在系統(tǒng)部署時必須額外增加緩存服務(wù)器,同時所有對會話的操作都必須在緩存服務(wù)器上進(jìn)行操作,這無疑加大了系統(tǒng)開發(fā)和部署的難度。
[0005]如何開發(fā)一種會話同步方法,來解決目前較成熟的會話同步方案存在的問題,是當(dāng)前急需解決的問題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是為了克服現(xiàn)有的基于Cookies的會話同步、基于數(shù)據(jù)庫的會話同步和基于分布式緩存的會話同步,所存在的問題。本發(fā)明的基于集群節(jié)點間即時拷貝的會話同步方法,將會話標(biāo)識信息存放在客戶端中,客戶端中無需存放完整的會話信息,安全性能高;還提高客戶端對服務(wù)器的訪問效率,避免了頻繁使用數(shù)據(jù)庫帶來的性能瓶頸;減低了開發(fā)和部署成本,具有良好的應(yīng)用前景。
[0007]為了達(dá)到上述的目的,本發(fā)明所采用的技術(shù)方案是: 一種基于集群節(jié)點間即時拷貝的會話同步方法,其特征在于:包括以下步驟,
步驟(A),在客戶端第一次訪問集群服務(wù)時,當(dāng)前服務(wù)的集群節(jié)點為客戶端創(chuàng)建一個會話并保存在本集群節(jié)點的內(nèi)存中,并將會話標(biāo)識信息反饋給來訪的客戶端,該客戶端接收并保存會話標(biāo)識信息,所述會話標(biāo)識信息包括會話ID和當(dāng)前服務(wù)的集群節(jié)點IP;
步驟(B),當(dāng)該客戶端再次訪問集群服務(wù)時,需要攜帶會話標(biāo)識信息,當(dāng)前服務(wù)的集群節(jié)點根據(jù)接收到客戶端攜帶的會話標(biāo)識信息解析出該會話的集群節(jié)點IP和會話ID,并查看本集群節(jié)點內(nèi)是否存在該會話ID,若存在,則根據(jù)該會話ID獲取對應(yīng)的會話信息;否則,根據(jù)創(chuàng)建該會話的集群節(jié)點IP和會話ID到對應(yīng)的集群節(jié)點上同步會話信息,并保存在當(dāng)前服務(wù)的集群節(jié)點上;
步驟(C),當(dāng)任意集群節(jié)點的會話信息發(fā)生更改時,此集群節(jié)點首先更改本集群節(jié)點的會話信息,并通知其他在線的集群節(jié)點更新指定的會話信息;
步驟(D),當(dāng)任意集群節(jié)點檢測到來訪的客戶端退出時,此集群節(jié)點首先銷毀本集群節(jié)點的會話信息,并通知其他在線的集群節(jié)點銷毀指定的會話信息;
步驟(F),各集群節(jié)點定時清理超時的會話信息,以釋放服務(wù)器的內(nèi)存資源。
[0008]前述的基于集群節(jié)點間即時拷貝的會話同步方法,其特征在于:步驟(B),根據(jù)創(chuàng)建該會話的集群節(jié)點IP和會話ID到對應(yīng)的集群節(jié)點上同步會話信息,并保存在當(dāng)前服務(wù)的集群節(jié)點上,所述會話信息以鍵值對的形式存放在服務(wù)器的內(nèi)存中。
[0009]前述的基于集群節(jié)點間即時拷貝的會話同步方法,其特征在于:步驟(F),各集群節(jié)點定時清理超時的會話信息,以釋放服務(wù)器的內(nèi)存資源,包括以下步驟,
(F1)各集群節(jié)點遍歷本節(jié)點內(nèi)的會話信息;
(F2)根據(jù)服務(wù)器配置的會話信息失效時間、最后一次更新該會話信息的時間以及當(dāng)前服務(wù)器的時間,判斷會話信息是否超時,若會話信息超時,則進(jìn)行清理刪除。
[0010]本發(fā)明的有益效果是:本發(fā)明的基于集群節(jié)點間即時拷貝的會話同步方法,解決了基于Cookies的會話保持方案中存在的訪問緩慢和安全隱患等問題,也解決了基于數(shù)據(jù)庫的會話保持方案的性能瓶頸,同時也解決了基于分布式緩存的會話保持方案中部署和開發(fā)難度大的問題,本發(fā)明將會話標(biāo)識信息存放在客戶端中,避免了在客戶端中存放完整的會話信息,從而可防止用戶身份信息暴露的安全隱患;同時,在客戶端向服務(wù)器發(fā)送請求的過程中,只攜帶會話標(biāo)識信息,而不是完整的會話信息,傳輸?shù)臄?shù)據(jù)量將大大減少,提高了客戶端對服務(wù)器的訪問效率,各集群節(jié)點間同步會話信息,不需要從數(shù)據(jù)庫中獲取會話信息,避免了頻繁使用數(shù)據(jù)庫帶來的性能瓶頸;也不需要使用專門的會話緩存服務(wù)器,減低了開發(fā)和部署成本,并具有良好的應(yīng)用前景。
【附圖說明】
[0011]圖1是本發(fā)明的基于集群節(jié)點間即時拷貝的會話同步方法的流程圖。
[0012]圖2是本發(fā)明的集群節(jié)點會話刪除的流程圖。
[0013]圖3是本發(fā)明的一具體實施例的流程圖。
【具體實施方式】
[0014]下面將結(jié)合說明書附圖,對本發(fā)明作進(jìn)一步的說明。
[0015]如圖1所示,本發(fā)明的基于集群節(jié)點間即時拷貝的會話同步方法,包括以下步驟,
步驟(A),在客戶端第一次訪問集群服務(wù)時,當(dāng)前服務(wù)的集群節(jié)點為客戶端創(chuàng)建一個會話并保存在本集群節(jié)點的內(nèi)存中,并將會話標(biāo)識信息反饋給來訪的客戶端,該客戶端接收并保存會話標(biāo)識信息,所述會話標(biāo)識信息包括會話ID和當(dāng)前服務(wù)的集群節(jié)點IP;
步驟(B),當(dāng)該客戶端再次訪問集群服務(wù)時,需要攜帶會話標(biāo)識信息,當(dāng)前服務(wù)的集群節(jié)點根據(jù)接收到客戶端攜帶的會話標(biāo)識信息解析出該會話的集群節(jié)點IP和會話ID,并查看本集群節(jié)點內(nèi)是否存在該會話ID,若存在,則根據(jù)該會話ID獲取對應(yīng)的會話信息;否則,根據(jù)創(chuàng)建該會話的集群節(jié)點IP和會話ID到對應(yīng)的集群節(jié)點上同步會話信息,并保存在當(dāng)前服務(wù)的集群節(jié)點上