《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計 > 業(yè)界動態(tài) > 會話保持機制在集群系統(tǒng)中的應(yīng)用研究

會話保持機制在集群系統(tǒng)中的應(yīng)用研究

2016-02-24
作者: 張 蕾,侯瑞春,丁香乾
來源:2015年微型機與應(yīng)用第9期

  摘  要: 用戶會話信息一致性是影響集群負(fù)載均衡的一個重要因素。在研究當(dāng)前負(fù)載均衡集群系統(tǒng)中會話保持機制的基礎(chǔ)上,針對會話復(fù)制方法中隨著請求增加導(dǎo)致網(wǎng)絡(luò)阻塞的問題,提出一種添加了動態(tài)會話集中存儲設(shè)備的會話復(fù)制機制。經(jīng)模擬驗證,該方法在較大規(guī)模集群環(huán)境下穩(wěn)定響應(yīng)多用戶請求,平均響應(yīng)時間仍處于相對穩(wěn)定狀態(tài),滿足大型企業(yè)級應(yīng)用的會話處理需要。

  關(guān)鍵詞: 集群;負(fù)載均衡;會話保持機制;會話復(fù)制

1 研究綜述

  1.1 負(fù)載均衡技術(shù)

  隨著計算機技術(shù)的發(fā)展,服務(wù)器性能成為影響大型應(yīng)用系統(tǒng)的關(guān)鍵因素。Web服務(wù)器集群是通過高速局域網(wǎng)互連的多臺Web服務(wù)器組成的,用戶的HTTP請求被均衡地、透明地分配到集群中具體的服務(wù)器上,由其完成請求響應(yīng)過程,并將響應(yīng)結(jié)果返回給用戶[1]。在性能、可靠性、靈活性方面,服務(wù)器集群比直接升級單臺服務(wù)器有相對較高的效益。

  集群服務(wù)器的一個重要技術(shù)是集群內(nèi)部用戶請求的均衡分配——負(fù)載均衡。負(fù)載均衡技術(shù)能夠根據(jù)各個服務(wù)器處理能力,合理地給各個服務(wù)器分配相應(yīng)的請求任務(wù),均衡分配任務(wù)的過程對用戶來說是完全透明的[2]。

  1.2 負(fù)載均衡下的會話保持機制

  目前,HTTP協(xié)議[3]是Web應(yīng)用中使用最廣泛的應(yīng)用層協(xié)議,采用分布式協(xié)作的方式和請求/響應(yīng)模式的無狀態(tài)協(xié)議。Web應(yīng)用不保存與任何客戶機通信的狀態(tài),只負(fù)責(zé)對到來的當(dāng)前請求進(jìn)行處理,因此需要一定的機制保持會話。對于負(fù)載均衡集群,應(yīng)該保證無論請求被分配到哪個節(jié)點,用戶請求對應(yīng)的會話信息應(yīng)該相同,實現(xiàn)節(jié)點之間的信息一致。

  會話保持機制主要實現(xiàn)方式分為Cookie機制和會話機制。Cookie機制將用戶信息存放在客戶瀏覽器中,隨著用戶發(fā)送的請求一起傳遞給服務(wù)器。因受到請求大小的限制和安全問題,它不適合存放敏感性的用戶信息。因此,在會話保持機制中,Session機制很常用,它通過將整個用戶會話過程中保持其狀態(tài)的信息存儲在服務(wù)器端來實現(xiàn)。

  目前LB集群系統(tǒng)中,常用的會話保持機制[4]有如下幾種:

  (1)以負(fù)載均衡服務(wù)器入手,管理某個用戶的請求和這些請求被分配到的集群機的對應(yīng)關(guān)系,通過查詢關(guān)系表,將請求分配到之前被分配到的集群機上進(jìn)行服務(wù)。

 ?。?)負(fù)載均衡系統(tǒng)中,在多臺服務(wù)器間根據(jù)處理需要傳遞復(fù)制會話信息,實現(xiàn)會話復(fù)制策略。用戶請求發(fā)送之后,系統(tǒng)會自動查詢是否已經(jīng)產(chǎn)生對應(yīng)的會話信息,然后進(jìn)行會話處理。

 ?。?)從應(yīng)用程序的會話管理入手,不將會話數(shù)據(jù)保存在集群機本地,而是所有集群機使用同一個會話數(shù)據(jù)緩存區(qū),集群機通過查詢會話緩存區(qū)獲取該用戶的Session id對應(yīng)的數(shù)據(jù)。

  1.3 會話保持中的會話復(fù)制機制

  在LB集群系統(tǒng)中,也常常采用會話復(fù)制機制維護(hù)集群中的用戶信息。會話復(fù)制機制的主要實現(xiàn)方式是:通過序列化,將存儲在內(nèi)存的會話信息轉(zhuǎn)換成可以傳輸?shù)男问?,然后通過廣播將消息傳遞給集群內(nèi)部其他節(jié)點,節(jié)點接收報文并進(jìn)行相應(yīng)處理,從而使集群系統(tǒng)中每個節(jié)點都存儲著同樣的會話庫。

  這種機制的優(yōu)點是負(fù)載均衡設(shè)備對任務(wù)分配的靈活性高,系統(tǒng)的穩(wěn)定性強,具有良好的可靠性和高性能,而且不會因為出現(xiàn)單個節(jié)點故障而丟失會話信息。缺點主要是應(yīng)用規(guī)模小。增加節(jié)點會造成傳遞會話復(fù)制信息的工作量加重,造成節(jié)點性能下降,引發(fā)廣播風(fēng)暴。

2 改進(jìn)的會話復(fù)制機制

  會話復(fù)制機制的優(yōu)點適用于負(fù)載均衡集群。但是,對于集群規(guī)模較大的企業(yè)級應(yīng)用系統(tǒng),會話復(fù)制機制往往不合適。本次研究的主要目的是改進(jìn)會話復(fù)制機制,使該機制適用于中大型企業(yè)。

  復(fù)制會話信息消耗每個節(jié)點的內(nèi)存和網(wǎng)絡(luò)帶寬,是限制群集的規(guī)模的主要原因。進(jìn)而,為了控制廣播中傳遞的會話信息量,提出將會話信息分解,穩(wěn)定的會話信息部分選擇會話復(fù)制機制,數(shù)據(jù)量大且變化大的部分采取集中存儲機制的會話機制,盡量減少在會話復(fù)制過程中復(fù)制和廣播的信息量,使會話復(fù)制機制更適用于大型應(yīng)用系統(tǒng)。

  2.1 改進(jìn)方法的硬件部署方案

001.jpg


  改進(jìn)后的會話復(fù)制機制采用會話復(fù)制為核心,集中存儲設(shè)備為輔助。具體的服務(wù)器端的硬件部署模型如圖1所示。服務(wù)器端集群多由若干個中小型規(guī)模集群組成。負(fù)載均衡平臺的主要功能是轉(zhuǎn)發(fā)用戶請求,對任務(wù)進(jìn)行分配。負(fù)載均衡器接受用戶發(fā)送的請求,針對當(dāng)前系統(tǒng)中的服務(wù)器節(jié)點的狀態(tài),均衡分配用戶的請求。負(fù)載均衡器對集群系統(tǒng)的負(fù)載均衡起到總體調(diào)控的作用。

  集群中包含了服務(wù)器集群、數(shù)據(jù)庫集群以及系統(tǒng)備份和企業(yè)級業(yè)務(wù)。其中,企業(yè)級業(yè)務(wù)包括FTP服務(wù)、郵件服務(wù)和企業(yè)內(nèi)部管理平臺。備份服務(wù)器采用雙機備份的原則,當(dāng)負(fù)載均衡設(shè)備出現(xiàn)故障時,便于系統(tǒng)的恢復(fù)。

  為了解決會話復(fù)制過程中大量數(shù)據(jù)復(fù)制的問題,在集群結(jié)構(gòu)的內(nèi)部添加了會話集中存儲設(shè)備。該設(shè)備用于存儲穩(wěn)定性較差的會話信息,對該部分?jǐn)?shù)據(jù)進(jìn)行統(tǒng)一的管理,采取點對點的傳遞方式,僅限于處理節(jié)點與會話存儲設(shè)備之間的不穩(wěn)定數(shù)據(jù)傳輸。

  對于同一用戶的會話數(shù)據(jù),根據(jù)不同的穩(wěn)定性,將用戶的會話數(shù)據(jù)劃分為靜態(tài)數(shù)據(jù)部分和動態(tài)數(shù)據(jù)部分。靜態(tài)會話數(shù)據(jù)變化不大,數(shù)據(jù)量相對較小,具有一定的穩(wěn)定性,如用戶名、系統(tǒng)參數(shù)等,采用會話復(fù)制的形式。動態(tài)會話信息包含一些隨著時間變化而改變的數(shù)據(jù),這些數(shù)據(jù)本身具有復(fù)雜性,如購物車、表單、實時數(shù)據(jù)等。將這部分?jǐn)?shù)據(jù)的處理放在處理節(jié)點和集中存儲設(shè)備上,有效地控制這部分?jǐn)?shù)據(jù)傳播的規(guī)模,而且點對點的傳輸處理也減少了對集群內(nèi)部帶寬的占用。

  2.2 機制的實現(xiàn)

  改進(jìn)后的會話復(fù)制機制,具體實現(xiàn)流程如圖2所示。

002.jpg

 ?。?)假設(shè)用戶A訪問系統(tǒng)時,服務(wù)器端接收用戶請求,由負(fù)載均衡平臺進(jìn)行任務(wù)分配處理。負(fù)載均衡器動態(tài)或靜態(tài)地監(jiān)控集群中各個節(jié)點的負(fù)載狀態(tài),將任務(wù)分配到負(fù)載相對較低的節(jié)點上。負(fù)載均衡平臺可通過軟件或者硬件實現(xiàn),對集群負(fù)載起到總體調(diào)控的作用。假設(shè)負(fù)載均衡器根據(jù)當(dāng)前集群狀態(tài)將任務(wù)分配到節(jié)點X。

  (2)接收到請求后,節(jié)點X會進(jìn)行相應(yīng)的處理。首先,服務(wù)器X從用戶請求中查詢請求數(shù)據(jù)中的會話ID。

  ①如果請求中沒有會話ID,或節(jié)點X沒有從本機會話庫中查詢到該會話ID,集群系統(tǒng)中沒有用戶A的會話信息,則節(jié)點X為用戶A創(chuàng)建對應(yīng)的會話信息。在會話創(chuàng)建完成后,分離出會話中的動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)。靜態(tài)會話直接通過廣播的形式發(fā)送到集群中的每臺服務(wù)器。動態(tài)數(shù)據(jù)在完成用戶請求后,再發(fā)送至動態(tài)會話集中存儲設(shè)備。

 ?、谌绻麜拵熘邪瑢?yīng)的會話ID,則節(jié)點X先從會話庫中得到對應(yīng)的靜態(tài)數(shù)據(jù)。然后,發(fā)送動態(tài)數(shù)據(jù)請求給動態(tài)會話集中存儲區(qū)。從回復(fù)消息中,提取相應(yīng)的動態(tài)會話數(shù)據(jù)。服務(wù)器X將動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù)結(jié)合在一起,得到用戶完整的會話信息。

  (3)經(jīng)過第(2)步得到完整的會話信息后,處理用戶的請求,根據(jù)請求的內(nèi)容進(jìn)行相關(guān)處理,將處理結(jié)果返回給用戶。處理結(jié)果中包含會話ID,服務(wù)器將會話ID作為Cookie的一個屬性發(fā)送給客戶端,用戶后續(xù)訪問將自動攜帶該Cookie屬性。

  (4)任務(wù)完成后,服務(wù)器中存儲的該用戶動態(tài)會話信息可能發(fā)生改變。這時服務(wù)器X需要向動態(tài)會話集中存儲設(shè)備發(fā)送存儲/更新動態(tài)會話數(shù)據(jù)的命令,存儲/更新對應(yīng)的動態(tài)會話數(shù)據(jù)信息。若設(shè)備中沒有該會話ID,則直接存儲新用戶的動態(tài)數(shù)據(jù)。根據(jù)處理后的會話信息中靜態(tài)數(shù)據(jù)是否改變,決定是否發(fā)送廣播消息。

  這種模式下,服務(wù)器處理完用戶請求后,一般的數(shù)據(jù)處理中,靜態(tài)數(shù)據(jù)具有穩(wěn)定性,廣播一次就能實現(xiàn)同步。更新的動態(tài)數(shù)據(jù)需要從處理節(jié)點發(fā)送到動態(tài)數(shù)據(jù)管理設(shè)備進(jìn)行存儲,由集中數(shù)據(jù)管理器進(jìn)行存儲處理。

3 模擬驗證

  為了驗證改進(jìn)后Session復(fù)制算法的性能,使用同一應(yīng)用系統(tǒng)分別采用不同的會話支持技術(shù)進(jìn)行比較分析。在模擬過程中,應(yīng)用系統(tǒng)采用“青島某服裝企業(yè)供應(yīng)鏈系統(tǒng)”,搭建的集群環(huán)境采用八臺處理機,其中一臺為主服務(wù)器,作負(fù)載均衡器。采用Tomcat進(jìn)行服務(wù)器集群及負(fù)載均衡。Session集中存儲設(shè)備的大小配置為256 GB(根據(jù)需要更改大?。?。

004.jpg

  如表1所示,采用tomcat集群中復(fù)制模式(會話復(fù)制)、Session集中存儲模式和包含動態(tài)Session集中存儲區(qū)的會話復(fù)制方式進(jìn)行性能比較。

003.jpg

  模擬結(jié)果如圖3所示,在初始階段,處理性能都很高。當(dāng)用戶請求增加到一定數(shù)量時,服務(wù)器的性能下降,傳統(tǒng)會話復(fù)制機制會因節(jié)點間傳遞信息量的劇增導(dǎo)致響應(yīng)時間增大。會話集中存儲方式下,因節(jié)點等待訪問存儲用戶數(shù)據(jù),響應(yīng)時間相對改進(jìn)后的算法較長。動態(tài)會話集中存儲下的會話復(fù)制模式由于查找會話ID以及廣播數(shù)據(jù)量相對較少,雖然加重了節(jié)點對會話數(shù)據(jù)的處理,但隨著用戶訪問量的增多,系統(tǒng)處理效率仍處于相對穩(wěn)定的狀態(tài)。

  綜上所述,動態(tài)會話集中存儲下的會話復(fù)制模式在平均響應(yīng)時間比較穩(wěn)定地增長、系統(tǒng)訪問量劇增時,系統(tǒng)處理性能仍然穩(wěn)定,適用于節(jié)點數(shù)目相對較大的集群系統(tǒng)。

4 結(jié)束語

  針對會話復(fù)制方法無法適應(yīng)大規(guī)模集群系統(tǒng)的問題,提出了動態(tài)會話集中存儲的會話復(fù)制機制,將靜態(tài)會話數(shù)據(jù)采取會話復(fù)制策略,而動態(tài)部分采取集中存儲的策略,進(jìn)而滿足負(fù)載均衡系統(tǒng)中會話一致的要求。經(jīng)實驗驗證,該方法可靠性好,性能穩(wěn)定,可滿足大型應(yīng)用平臺的會話需求。如何提高動態(tài)會話集中存儲下的會話復(fù)制方法的穩(wěn)定性是之后的研究重點。

  參考文獻(xiàn)

  [1] 郭成城,晏蒲柳.一種異構(gòu)Web服務(wù)器集群動態(tài)負(fù)載均衡算法[J].計算機學(xué)報,2005,28(2):179-184.

  [2] 陳一驕,盧錫城,時向泉,等.一種面向會話的自適應(yīng)負(fù)載均衡算法[J].軟件學(xué)報,2008,19(7):1828-1836.

  [3] 趙章界,余智華,張丙奇.HTTP協(xié)議流解析系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程,2005,31(24):38-40,46.

  [4] 趙涓涓,劉濤,強彥,等.云計算中基于Session和內(nèi)容等級的數(shù)據(jù)庫請求分類算法[J].計算機科學(xué),2013(2),40:177-179.


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。