這篇文章將為大家詳細(xì)講解有關(guān)在Linux分布式環(huán)境中對session進(jìn)行處理的方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請域名、虛擬主機(jī)、營銷軟件、網(wǎng)站建設(shè)、烏魯木齊網(wǎng)站維護(hù)、網(wǎng)站推廣。Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。
第一種:粘性session
原理:粘性session是指將用戶鎖定到某一個服務(wù)器上,比如上面說的例子,用戶第一次請求時,負(fù)載均衡器將用戶的請求轉(zhuǎn)發(fā)到了a服務(wù)器上,如果負(fù)載均衡器設(shè)置了粘性session的話,那么用戶以后的每次請求都會轉(zhuǎn)發(fā)到a服務(wù)器上,相當(dāng)于把用戶和a服務(wù)器粘到了一塊,這就是粘性session機(jī)制。
優(yōu)點(diǎn):簡單,不需要對session做任何處理。
缺點(diǎn):缺乏容錯性,如果當(dāng)前訪問的服務(wù)器發(fā)生故障,用戶被轉(zhuǎn)移到第二個服務(wù)器上時,他的session信息都將失效。
適用場景:發(fā)生故障對客戶產(chǎn)生的影響較?。环?wù)器發(fā)生故障是低概率事件。
實(shí)現(xiàn)方式:以nginx為例,在upstream模塊配置ip_hash屬性即可實(shí)現(xiàn)粘性session。
?
1 2 3 4 5 6 |
|
第二種:服務(wù)器session復(fù)制
原理:任何一個服務(wù)器上的session發(fā)生改變(增刪改),該節(jié)點(diǎn)會把這個 session的所有內(nèi)容序列化,然后廣播給所有其它節(jié)點(diǎn),不管其他服務(wù)器需不需要session,以此來保證session同步。
優(yōu)點(diǎn):可容錯,各個服務(wù)器間session能夠?qū)崟r響應(yīng)。
缺點(diǎn):會對網(wǎng)絡(luò)負(fù)荷造成一定壓力,如果session量大的話可能會造成網(wǎng)絡(luò)堵塞,拖慢服務(wù)器性能。
實(shí)現(xiàn)方式:
① 設(shè)置tomcat ,server.xml 開啟tomcat集群功能
address:填寫本機(jī)ip即可,設(shè)置端口號,預(yù)防端口沖突。
② 在應(yīng)用里增加信息:通知應(yīng)用當(dāng)前處于集群環(huán)境中,支持分布式
在web.xml中添加選項(xiàng)<distributable/>
第三種:session共享機(jī)制
使用分布式緩存方案比如memcached、redis,但是要求memcached或redis必須是集群。
使用session共享也分兩種機(jī)制,兩種情況如下:
① 粘性session處理方式
原理:不同的 tomcat指定訪問不同的主memcached。多個memcached之間信息是同步的,能主從備份和高可用。用戶訪問時首先在tomcat中創(chuàng)建session,然后將session復(fù)制一份放到它對應(yīng)的memcahed上。memcache只起備份作用,讀寫都在tomcat上。當(dāng)某一個tomcat掛掉后,集群將用戶的訪問定位到備tomcat上,然后根據(jù)cookie中存儲的sessionid找session,找不到時,再去相應(yīng)的memcached上去session,找到之后將其復(fù)制到備tomcat上。
② 非粘性session處理方式
原理:memcached做主從復(fù)制,寫入session都往從memcached服務(wù)上寫,讀取都從主memcached讀取,tomcat本身不存儲session
優(yōu)點(diǎn):可容錯,session實(shí)時響應(yīng)。
實(shí)現(xiàn)方式:用開源的msm插件解決tomcat之間的session共享:memcached_session_manager(msm)
a. 復(fù)制相關(guān)jar包到tomcat/lib 目錄下
java memcached客戶端:spymemcached.jarmsm項(xiàng)目相關(guān)的jar包:1. 核心包,memcached-session-manager-{version}.jar2. tomcat版本對應(yīng)的jar包:memcached-session-manager-tc{tomcat-version}-{version}.jar序列化工具包:可選kryo,javolution,xstream等,不設(shè)置時使用jdk默認(rèn)序列化。
b. 配置context.xml ,加入處理session的manager
粘性模式配置:
非粘性配置:
第四種:session持久化到數(shù)據(jù)庫
原理:就不用多說了吧,拿出一個數(shù)據(jù)庫,專門用來存儲session信息。保證session的持久化。
優(yōu)點(diǎn):服務(wù)器出現(xiàn)問題,session不會丟失
缺點(diǎn):如果網(wǎng)站的訪問量很大,把session存儲到數(shù)據(jù)庫中,會對數(shù)據(jù)庫造成很大壓力,還需要增加額外的開銷維護(hù)數(shù)據(jù)庫。
第五種terracotta實(shí)現(xiàn)session復(fù)制
原理:terracotta的基本原理是對于集群間共享的數(shù)據(jù),當(dāng)在一個節(jié)點(diǎn)發(fā)生變化的時候,terracotta只把變化的部分發(fā)送給terracotta服務(wù)器,然后由服務(wù)器把它轉(zhuǎn)發(fā)給真正需要這個數(shù)據(jù)的節(jié)點(diǎn)??梢钥闯墒菍Φ诙N方案的優(yōu)化。
優(yōu)點(diǎn):這樣對網(wǎng)絡(luò)的壓力就非常小,各個節(jié)點(diǎn)也不必浪費(fèi)cpu時間和內(nèi)存進(jìn)行大量的序列化操作。把這種集群間數(shù)據(jù)共享的機(jī)制應(yīng)用在session同步上,既避免了對數(shù)據(jù)庫的依賴,又能達(dá)到負(fù)載均衡和災(zāi)難恢復(fù)的效果。
原文鏈接:http://blog.csdn.net/u010028869/article/details/50773174?ref=myread
關(guān)于在Linux分布式環(huán)境中對session進(jìn)行處理的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
本文標(biāo)題:在Linux分布式環(huán)境中對session進(jìn)行處理的方法-創(chuàng)新互聯(lián)
文章起源:http://jinyejixie.com/article10/ddspdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站、服務(wù)器托管、企業(yè)網(wǎng)站制作、網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容