最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法和系統(tǒng)的制作方法

文檔序號:7886811閱讀:552來源:國知局
專利名稱:一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及移動通信數(shù)據(jù)業(yè)務(wù)技術(shù)領(lǐng)域,尤其涉及一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法和系統(tǒng)。
背景技術(shù)
在多數(shù)的Web應(yīng)用中,應(yīng)用程序需要保存客戶端的狀態(tài),以便于在同一個(gè)客戶端所訪問的頁面之間建立相互聯(lián)系。但是,一般的Web應(yīng)用都是基于超文本傳輸協(xié)議(HTTP)的,而HTTP恰恰是一種無狀態(tài)協(xié)議,具有天生的無狀態(tài)性,所以一般無法保存客戶端的狀態(tài)。例如,用戶從A頁面跳轉(zhuǎn)到B頁面時(shí)會重新發(fā)送一次HTTP請求,而服務(wù)端在返回響應(yīng)時(shí)卻無法獲知該用戶在請求訪問B頁面之前做了什么。因此,現(xiàn)有技術(shù)中的Web應(yīng)用服務(wù)器一般都是通過會話(Session)的方式來保存客戶的狀態(tài)信息。例如,在JSP應(yīng)用服務(wù)器中,可通過HttpSession對象來實(shí)現(xiàn)Session的功能。上述HttpSession表示一次會話,用來保存客戶端的狀態(tài)信息。上述客戶端的狀態(tài)信息保存在服務(wù)器端,而Session的id則保存在客戶端的Cookie中。當(dāng)用戶打開瀏覽器訪問某個(gè)網(wǎng)站時(shí),服務(wù)器就會在服務(wù)器的內(nèi)存為該瀏覽器分配一個(gè)空間,該空間被瀏覽器獨(dú)占,這個(gè)空間就是Session空間,該空間中的數(shù)據(jù)默認(rèn)存在時(shí)間為30分鐘(min)。對于一個(gè)瀏覽器而言,不同的頁面能夠共享Session空間的數(shù)據(jù),因此可以通過Java平臺對Session機(jī)制的實(shí)現(xiàn)規(guī)范中所規(guī)定的各種方法來查看和使用Session對象相關(guān)信息。隨著集群服務(wù)器的出現(xiàn),在構(gòu)建可以靈活地進(jìn)行水平擴(kuò)展、高可用性的Java Web應(yīng)用程序時(shí),對HttpSession的處理策略很大程度決定了應(yīng)用程序的擴(kuò)展性、可用性。一般而言,對HttpSession有如下的處理方案:處理方案1:在服務(wù)器端不保存Session,完全無狀態(tài)(Stateless)。對于不需要保持用戶狀態(tài)的Web應(yīng)用,采用Stateless是最為恰當(dāng)?shù)?,因此就不存?Session 共享的問題。具象狀態(tài)傳輸(REST, Representational State Transfer)是使用該處理方案的最為典型的例子。但該方案的缺點(diǎn)在于:只適用于無狀態(tài)應(yīng)用開發(fā)環(huán)境;比如新聞網(wǎng)頁等。處理方案2:基于瀏覽器Cookie的Session共享。此種方案把與用戶相關(guān)的Session信息存儲到瀏覽器的Cookie中,也稱為客戶端Session。但該方案的缺點(diǎn)在于:I)只能夠存儲字符串、數(shù)值等基本類型的數(shù)據(jù);c00kie大小存在限制;安全性不高;還存在帶寬及數(shù)據(jù)解壓縮、網(wǎng)絡(luò)傳輸性能較差等問題;2) Cookie取決于客戶端的設(shè)置,且客戶端可以禁止Cookie,從而導(dǎo)致Session實(shí)現(xiàn)的失敗。處理方案3:基于數(shù)據(jù)庫的Session信息共享,實(shí)現(xiàn)分布式應(yīng)用間Session信息共孚。
此種方案把Session信息存儲到數(shù)據(jù)庫表,以實(shí)現(xiàn)不同應(yīng)用服務(wù)器間的Session信息的共享。諸如Websphere Portal、Weblogic Portal等都采用了類似的方案。該方案的優(yōu)點(diǎn)在于:實(shí)現(xiàn)簡單。但該方案的缺點(diǎn)在于:I)由于數(shù)據(jù)庫服務(wù)器相對于應(yīng)用服務(wù)器更難擴(kuò)展且資源更為寶貴,在高并發(fā)的Web應(yīng)用中,最大的性能瓶頸通常在于數(shù)據(jù)庫服務(wù)器。2)如果將Session存儲到數(shù)據(jù)庫表,頻繁的增加、刪除、查詢操作很容易造成數(shù)據(jù)庫表爭用及加鎖,最終影響業(yè)務(wù)的性能。處理方案4:基于應(yīng)用服務(wù)器/Servlet容器的Clustering機(jī)制。一些常用的應(yīng)用服務(wù)器及Servlet容器的Clustering機(jī)制可以實(shí)現(xiàn)Session信息復(fù)制(Session Replication)的功倉泛,例如 Tomcat Clustering/Session Replication、Jboss buddy Replication 等。但該方案的缺點(diǎn)在于:為了支持JSP HttpSession狀態(tài)的自動失效無縫轉(zhuǎn)移,Web服務(wù)器需要將存儲在一臺服務(wù)器上的Session數(shù)據(jù)復(fù)制到集群中的其他成員上,以防止數(shù)據(jù)丟失以及允許失效無縫轉(zhuǎn)移,而基于Clustering的Session復(fù)制性能很差,擴(kuò)展性也很差。處理方案5:基于共享存儲,實(shí)現(xiàn)分布式應(yīng)用間Session共享。通過共享存儲,實(shí)現(xiàn)Session信息在不同服務(wù)器之間的狀態(tài)和數(shù)據(jù)同步,類似于數(shù)據(jù)庫的Session信息共享,但是該方案的共享存儲的存取速度更快,效率上有了提升。但該方案的缺點(diǎn)在于:在該處理方案中,通常需要定制Web容器,因此代價(jià)極高。在現(xiàn)有技術(shù)中的云計(jì)算環(huán)境下,運(yùn)行環(huán)境的實(shí)現(xiàn)往往是無狀態(tài)的,即對于同一頁面的多次訪問請求,將會被路由到不同的服務(wù)節(jié)點(diǎn)之上。上述的實(shí)現(xiàn)方法可以極大地利用云計(jì)算環(huán)境中所有節(jié)點(diǎn)的計(jì)算能力,為更多的客戶提供服務(wù),從而大大提升整個(gè)系統(tǒng)的可擴(kuò)展性和魯棒性。但問題在于,如果云端的服務(wù)器完全無狀態(tài),則對于那些需要在訪問中保持會話狀態(tài)的應(yīng)用而言,將面臨很大的困難。為了解決上述問題,現(xiàn)有技術(shù)中通常會使用上述的處理方案3和處理方案5來實(shí)現(xiàn)在無狀態(tài)的服務(wù)環(huán)境中的Session共享,但也必然無法避免上述兩種處理方案中所存在的性能瓶頸以及代價(jià)極高的問題。綜上可知,現(xiàn)有技術(shù)中的在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法具有如上所述的各種缺點(diǎn),從而難以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法和系統(tǒng),從而可以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。本發(fā)明采用的技術(shù)方案具體是這樣實(shí)現(xiàn)的:一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法,該方法包括:通過過濾器攔截客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中客戶端的會話標(biāo)識;根據(jù)所獲取的會話標(biāo)識構(gòu)造一個(gè)Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器;
根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息;將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上;各應(yīng)用服務(wù)器根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的會話信息。本發(fā)明中還提供了一種在云計(jì)算環(huán)境下的分布式會話系統(tǒng),該分布式會話系統(tǒng)包括:包括至少一個(gè)客戶端的客戶端層、包括至少一個(gè)應(yīng)用服務(wù)器的應(yīng)用服務(wù)器層、包括至少一個(gè)緩存服務(wù)器的緩存服務(wù)器層、過濾器和重構(gòu)器;所述客戶端,用于發(fā)送Http訪問請求;所述過濾器,用于攔截所述客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中的客戶端的會話標(biāo)識;將所述會話標(biāo)識發(fā)送給重構(gòu)器;所述重構(gòu)器,用于根據(jù)所獲取的會話標(biāo)識構(gòu)造新的Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器;還用于根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息,將所獲取的會話標(biāo)識及相對應(yīng)的會話信息發(fā)送給緩存服務(wù)器;所述緩存服務(wù)器,用于存儲所接收到的會話標(biāo)識及相對應(yīng)的會話信息;所述應(yīng)用服務(wù)器,用于根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的會話信息。由上述技術(shù)方案可見,本發(fā)明中由于可通過過濾器攔截客戶端發(fā)送的Http訪問請求以獲取客戶端的會話標(biāo)識,然后根據(jù)客戶端的會話標(biāo)識重構(gòu)與客戶端相關(guān)的Session信息并存儲在緩存服務(wù)器中,使得應(yīng)用服務(wù)器可根據(jù)客戶端的會話標(biāo)識從緩存服務(wù)器中讀取與客戶端相關(guān)的Session信息,從而可以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。


圖1是本發(fā)明中在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法的流程圖。圖2為本發(fā)明中在云計(jì)算環(huán)境下的分布式會話系統(tǒng)的組成示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)表達(dá)得更加清楚明白,下面結(jié)合附圖及具體實(shí)施例對本發(fā)明再作進(jìn)一步詳細(xì)的說明。圖1是本發(fā)明中在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法的流程圖。如圖1所示,該方法包括:步驟101,通過過濾器攔截客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中客戶端的會話標(biāo)識(Session ID)。具體來說,當(dāng)用戶需要訪問某個(gè)URL地址時(shí),將通過其使用的客戶端向應(yīng)用服務(wù)器發(fā)送相應(yīng)的Http訪問請求,該Http訪問請求攜帶有該客戶端的Cookie信息。因此,在本發(fā)明的具體實(shí)施例中,可以通過過濾器對上述Http訪問請求進(jìn)行攔截,從而從所述Http訪問請求中獲得該客戶端的Cookie信息,并從所述客戶端的Cookie信息中獲取客戶端的Session ID。
較佳的,上述的過濾器可以是Java Servlet過濾器。其中,所述Java Servlet是一種服務(wù)器端的Java應(yīng)用程序。步驟102,根據(jù)所獲取的會話標(biāo)識構(gòu)造一個(gè)Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與上述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器。由于在步驟101中已獲取了客戶端的會話標(biāo)識,因此,在本步驟中,可根據(jù)所獲取的客戶端的會話標(biāo)識構(gòu)造一個(gè)Http裝飾類對象,并將該Http裝飾類對象替代上述所攔截的Http訪問請求發(fā)送給相應(yīng)的應(yīng)用服務(wù)器。步驟103,根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的Session信息?,F(xiàn)有技術(shù)的Java框架中已經(jīng)有創(chuàng)建會話(Session)信息的機(jī)制,但該機(jī)制并不適用于云計(jì)算中的Stateless環(huán)境,因此我們需要重構(gòu)與所述客戶端相關(guān)的Session信息。因此,在本步驟中將根據(jù)上述所獲取的客戶端的SessionID,重構(gòu)與該客戶端相關(guān)的Session信息。在本發(fā)明的技術(shù)方案中,可以使用多種方法來根據(jù)所獲取的會話標(biāo)識重構(gòu)與客戶端相關(guān)的Session信息。例如,在本發(fā)明的具體實(shí)施例中,重構(gòu)與客戶端相關(guān)的Session信息可包括如下所述的步驟:步驟1031,根據(jù)上述所獲取的客戶端的Session ID,通過繼承重構(gòu)HttpServletRequestWrapper接口,將與所述客戶端相關(guān)的Session信息封裝為Session對象。在本步驟中,將根據(jù)上述從Http訪問請求中獲取的客戶端的Session ID,將與所述客戶端相關(guān)的Session信息封裝為Session對象,從而替換原有的Java框架中的創(chuàng)建Session信息的機(jī)制。當(dāng)系統(tǒng)通過Java標(biāo)準(zhǔn)接口調(diào)用Session對象時(shí),所調(diào)用的將為重新封裝后的Session對象。具體來說,Java框架中有一個(gè)名稱為 HttpServletRequestWrapper 的接口,Java框架中并未規(guī)定該接口的具體實(shí)現(xiàn)方法,可以由開發(fā)者自行完成具體的實(shí)現(xiàn)或擴(kuò)展。因此,在本步驟中,可根據(jù)上述從Http訪問請求中獲取的客戶端的Session ID對該接口進(jìn)行擴(kuò)展,通過繼承重構(gòu)HttpServletRequestWrapper接口(例如,重新撰寫該接口中與Session信息相關(guān)的代碼類)的方式將與所述客戶端相關(guān)的Session信息封裝為Session對象,從而替代原有的Java框架中的Session機(jī)制。當(dāng)系統(tǒng)通過Java標(biāo)準(zhǔn)接口調(diào)用Session對象時(shí),所調(diào)用的將為重新封裝后的Session對象。步驟1032,通過繼承重構(gòu)HttpSessionWrapper類,設(shè)定所述Session對象的存取方式。當(dāng)上述步驟1031中將與客戶端相關(guān)的Session信息封裝為Session對象之后,原有的Java框架中的Session信息存取方法已經(jīng)難以適用。所以,在本發(fā)明的具體實(shí)施例中,還需設(shè)定與該Session對象相關(guān)的存取方式,從而使得各個(gè)應(yīng)用服務(wù)器可以對上述Session對象進(jìn)行調(diào)用或訪問。因此,在本步驟中,將通過繼承重構(gòu)HttpSessionWrapper類(例如,重新撰寫與所述HttpSessionWrapper類相關(guān)的代碼)的方式,設(shè)定所述Session對象的存取方式,從而替代原有的Java框架中的的Session信息存取方法。通過上述的步驟1031和1032,可以重構(gòu)與客戶端相關(guān)的Session信息。
步驟104,將所獲取的會話標(biāo)識及相對應(yīng)的Session信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上。在本發(fā)明的具體實(shí)施例中,還將在網(wǎng)絡(luò)側(cè)預(yù)先設(shè)置一個(gè)緩存服務(wù)器,該緩存服務(wù)器用于存儲與客戶端相關(guān)的Session信息。因此,可將所獲取的會話標(biāo)識及相對應(yīng)的Session信息存儲在該緩存服務(wù)器上。例如,在本發(fā)明的具體實(shí)施例中,可將上述所獲取的會話標(biāo)識及相對應(yīng)的重構(gòu)的Session信息通過所述繼承重構(gòu)的HttpServletRequestWrapper接口和HttpSessionWrapper類存儲到預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器中。具體來說,所述緩存服務(wù)器可以是Memcached服務(wù)器,其中,所述Memcached服務(wù)器是一種高性能的分布式內(nèi)存對象緩存服務(wù)器。因此,可通過HttpSessionWrapper類連接Memcached服務(wù)器,并以客戶端的Session ID作為關(guān)鍵字(key),將與所述客戶端相關(guān)的Session信息存儲在Memcached服務(wù)器中。其中,所存儲的對象(即與所述客戶端相關(guān)的Session信息)可以是一個(gè)map,因此,該map的內(nèi)容即為與所述客戶端相關(guān)的Session信息。步驟105,各應(yīng)用服務(wù)器根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的Session信息。由于與客戶端相關(guān)的Session信息已存儲在緩存服務(wù)器上,因此,各個(gè)應(yīng)用服務(wù)器在需要獲取與客戶端相關(guān)的Session信息時(shí),可以直接根據(jù)該客戶端的Session ID訪問上述緩存服務(wù)器,從而獲取所需的與該客戶端相關(guān)的Session信息。例如,應(yīng)用服務(wù)器可根據(jù)客戶端的Session ID從Memcached服務(wù)器上獲取整個(gè)map對象,然后再以Session的屬性名稱(attributeName)作為關(guān)鍵字(key)從所述map對象中獲取相應(yīng)客戶端的Session信息。通過上述的步驟101 105,即可在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話,從而可以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。進(jìn)一步的,在本發(fā)明的具體實(shí)施例中,還可以對緩存服務(wù)器中存儲的Session信息進(jìn)行持久化操作。例如,將緩存服務(wù)器中存儲的Session信息存儲為一個(gè)文件;或者,將緩存服務(wù)器中存儲的Session信息存儲在數(shù)據(jù)庫中。進(jìn)一步的,在本發(fā)明的具體實(shí)施例中,為了更好地實(shí)現(xiàn)分布式緩存,還可以對上述的步驟104進(jìn)行改進(jìn),改進(jìn)后的步驟104為:在網(wǎng)絡(luò)側(cè)預(yù)先設(shè)置至少兩個(gè)緩存服務(wù)器集群,每個(gè)緩存服務(wù)器集群中包括至少一個(gè)緩存服務(wù)器;將所獲取的會話標(biāo)識及相對應(yīng)的Session信息存儲在一個(gè)緩存服務(wù)器集群中的一個(gè)緩存服務(wù)器上,并將會話標(biāo)識及相對應(yīng)的Session信息復(fù)制到其它緩存服務(wù)器集群中的至少一個(gè)緩存服務(wù)器上。通過上述的操作,可以更好地實(shí)現(xiàn)分布式緩存,并可在多個(gè)緩存服務(wù)器集群之間完成Session信息的傳遞與同步,從而可以實(shí)現(xiàn)具有更高性能和更高可用性的分布式緩存存儲體系結(jié)構(gòu),進(jìn)而提高Session信息的高可用性和負(fù)載均衡性。在本發(fā)明的技術(shù)方案中,還提出一種在云計(jì)算環(huán)境下的分布式會話系統(tǒng)。圖2為本發(fā)明中在云計(jì)算環(huán)境下的分布式會話系統(tǒng)的組成示意圖。如圖2所示,所述在云計(jì)算環(huán)境下的分布式會話系統(tǒng)包括:包括至少一個(gè)客戶端的客戶端層201、包括至少一個(gè)應(yīng)用服務(wù)器的應(yīng)用服務(wù)器層202、包括至少一個(gè)緩存服務(wù)器的緩存服務(wù)器層203、過濾器204和重構(gòu)器205。所述客戶端,用于發(fā)送Http訪問請求;所述過濾器204,用于攔截所述客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中的客戶端的會話標(biāo)識;將所述會話標(biāo)識發(fā)送給重構(gòu)器 205 ;所述重構(gòu)器205,用于根據(jù)所獲取的會話標(biāo)識構(gòu)造新的Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器;還用于根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的Session信息,將所獲取的會話標(biāo)識及相對應(yīng)的Session信息發(fā)送給緩存服務(wù)器;所述緩存服務(wù)器,用于存儲所接收到的會話標(biāo)識及相對應(yīng)的Session信息;所述應(yīng)用服務(wù)器,用于根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的Session信息。進(jìn)一步地,在本發(fā)明的具體實(shí)施例中,所述緩存服務(wù)器層中可以包括至少兩個(gè)緩存服務(wù)器集群,每個(gè)緩存服務(wù)器集群中包括至少一個(gè)緩存服務(wù)器。因此,所述重構(gòu)器205還可用于將所獲取的會話標(biāo)識及相對應(yīng)的Session信息發(fā)送給一個(gè)緩存服務(wù)器集群中的一個(gè)緩存服務(wù)器上。而所述緩存服務(wù)器集群中的緩存服務(wù)器,則可用于將所存儲的會話標(biāo)識及相對應(yīng)的Session信息復(fù)制到其它緩存服務(wù)器集群中的至少一個(gè)緩存服務(wù)器上。綜上所述,在本發(fā)明的技術(shù)方案中,由于可通過過濾器攔截客戶端發(fā)送的Http訪問請求以獲取客戶端的會話標(biāo)識,然后根據(jù)客戶端的會話標(biāo)識重構(gòu)與客戶端相關(guān)的Session信息并存儲在緩存服務(wù)器中,使得應(yīng)用服務(wù)器可根據(jù)客戶端的會話標(biāo)識從緩存服務(wù)器中讀取與客戶端相關(guān)的Session信息,從而可以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。而且,還可以更好地實(shí)現(xiàn)分布式緩存,并可在多個(gè)緩存服務(wù)器集群之間完成Session信息的傳遞與同步,從而可以實(shí)現(xiàn)具有更高性能和更高可用性的分布式緩存存儲體系結(jié)構(gòu),進(jìn)而提高Session信息的高可用性和負(fù)載均衡性。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法,其特征在于,該方法包括: 通過過濾器攔截客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中客戶端的會話標(biāo)識; 根據(jù)所獲取的會話標(biāo)識構(gòu)造一個(gè)Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器; 根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息;將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上; 各應(yīng)用服務(wù)器根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的會話信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述過濾器為Java Servlet過濾器。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息包括: 根據(jù)所獲取的客戶端的 會話標(biāo)識,通過繼承重構(gòu)HttpServletRequestWrapper接口,將與所述客戶端相關(guān)的會話信息封裝為會話對象; 通過繼承重構(gòu)HttpSessionWrapper類,設(shè)定所述會話對象的存取方式。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上包括: 將所獲取的會話標(biāo)識及相對應(yīng)的重構(gòu)的會話信息通過所述繼承重構(gòu)的HttpServletRequestWrapper接口和HttpSessionWrapper類存儲到預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器中。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于, 所述緩存服務(wù)器可以是Memcached服務(wù)器。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上包括: 在網(wǎng)絡(luò)側(cè)預(yù)先設(shè)置至少兩個(gè)緩存服務(wù)器集群,每個(gè)緩存服務(wù)器集群中包括至少一個(gè)緩存服務(wù)器; 將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲在一個(gè)緩存服務(wù)器集群中的一個(gè)緩存服務(wù)器上,并將所述會話標(biāo)識及相對應(yīng)的會話信息復(fù)制到其它緩存服務(wù)器集群中的至少一個(gè)緩存服務(wù)器上。
7.—種在云計(jì)算環(huán)境下的分布式會話系統(tǒng),其特征中在于,該分布式會話系統(tǒng)包括:包括至少一個(gè)客戶端的客戶端層、包括至少一個(gè)應(yīng)用服務(wù)器的應(yīng)用服務(wù)器層、包括至少一個(gè)緩存服務(wù)器的緩存服務(wù)器層、過濾器和重構(gòu)器; 所述客戶端,用于發(fā)送Http訪問請求; 所述過濾器,用于攔截所述客戶端發(fā)送的Http訪問請求,并從所述Http訪問請求中獲取該客戶端的Cookie信息中的客戶端的會話標(biāo)識;將所述會話標(biāo)識發(fā)送給重構(gòu)器; 所述重構(gòu)器,用于根據(jù)所獲取的會話標(biāo)識構(gòu)造新的Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器;還用于根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息,將所獲取的會話標(biāo)識及相對應(yīng)的會話信息發(fā)送給緩存服務(wù)器; 所述緩存服務(wù)器,用于存儲所接收到的會話標(biāo)識及相對應(yīng)的會話信息; 所述應(yīng)用服務(wù)器,用于根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的會話信息。
8.根據(jù)權(quán)利要求7所述的分布式會話系統(tǒng),其特征在于, 所述緩存服務(wù)器層中包括至少兩個(gè)緩存服務(wù)器集群,每個(gè)緩存服務(wù)器集群中包括至少一個(gè)緩存服務(wù)器; 所述重構(gòu)器,還用于將所獲取的會話標(biāo)識及相對應(yīng)的會話信息發(fā)送給一個(gè)緩存服務(wù)器集群中的一個(gè)緩存服務(wù)器上; 所述緩存服務(wù)器,還用于將所存儲的會話標(biāo)識及相對應(yīng)的會話信息復(fù)制到其它緩存服務(wù)器集群中的至少一個(gè)緩存服 務(wù)器上。
全文摘要
本發(fā)明提供了一種在云計(jì)算環(huán)境下實(shí)現(xiàn)分布式會話的方法和系統(tǒng)。其中的方法包括通過過濾器攔截客戶端發(fā)送的Htp訪問請求,從所述Http訪問請求中獲取客戶端的會話標(biāo)識;根據(jù)所獲取的會話標(biāo)識構(gòu)造一個(gè)Http裝飾類對象,將所述Http裝飾類對象發(fā)送給與所述被攔截的Http訪問請求相對應(yīng)的應(yīng)用服務(wù)器;根據(jù)所獲取的會話標(biāo)識重構(gòu)與所述客戶端相關(guān)的會話信息;將所獲取的會話標(biāo)識及相對應(yīng)的會話信息存儲于預(yù)先設(shè)置在網(wǎng)絡(luò)側(cè)的緩存服務(wù)器上;各應(yīng)用服務(wù)器根據(jù)客戶端的會話標(biāo)識從所述緩存服務(wù)器上獲取與所述客戶端相關(guān)的會話信息。應(yīng)用本發(fā)明可以在云計(jì)算環(huán)境下實(shí)現(xiàn)高效率、高性能、低成本、易擴(kuò)展的分布式會話。
文檔編號H04L29/08GK103200212SQ20121000485
公開日2013年7月10日 申請日期2012年1月4日 優(yōu)先權(quán)日2012年1月4日
發(fā)明者王磊建, 孔令軍, 劉濤 申請人:中國移動通信集團(tuán)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1