web服務器集群(多臺web服務器)session同步、共享的3種解決方法
更新時間:2014年04月05日 20:03:20 作者:
這篇文章主要介紹了web服務器集群(多臺web服務器)session同步、共享的3種解決方法,需要的朋友可以參考下
在做了web集群后,你肯定會首先考慮session同步問題,因為通過負載均衡后,同一個IP訪問同一個頁面會被分配到不同的服務器上,如果session不同步的話,一個登錄用戶,一會是登錄狀態(tài),一會又不是登錄狀態(tài)。所以本文就根據(jù)這種情況給出三種不同的方法來解決這個問題:
一、利用數(shù)據(jù)庫同步session
在做多服務器session同步時我沒有用這種方法,如果非要用這種方法的話,我想過二種方法:
1,用一個低端電腦建個數(shù)據(jù)庫專門存放web服務器的session,或者,把這個專門的數(shù)據(jù)庫建在文件服務器上,用戶訪問web服務器時,會去這個專門的數(shù)據(jù)庫check一下session的情況,以達到session同步的目的。
2,這種方法是把存放session的表和其他數(shù)據(jù)庫表放在一起,如果mysql也做了集群了話,每個mysql節(jié)點都要有這張表,并且這張session表的數(shù)據(jù)表要實時同步。
說明:用數(shù)據(jù)庫來同步session,會加大數(shù)據(jù)庫的負擔,數(shù)據(jù)庫本來就是容易產(chǎn)生瓶頸的地方,如果把session還放到數(shù)據(jù)庫里面,無疑是雪上加霜。上面的二種方法,第一點方法較好,把放session的表獨立開來,減輕了真正數(shù)據(jù)庫的負擔
二、利用cookie同步session
session是文件的形勢存放在服務器端的,cookie是文件的形勢存在客戶端的,怎么實現(xiàn)同步呢?方法很簡單,就是把用戶訪問頁面產(chǎn)生的session放到cookie里面,就是以cookie為中轉站。你訪問web服務器A,產(chǎn)生了session把它放到cookie里面了,你訪問被分配到web服務器B,這個時候,web服務器B先判斷服務器有沒有這個session,如果沒有,在去看看客戶端的cookie里面有沒有這個session,如果也沒有,說明session真的不存,如果cookie里面有,就把cookie里面的sessoin同步到web服務器B,這樣就可以實現(xiàn)session的同步了。
說明:這種方法實現(xiàn)起來簡單,方便,也不會加大數(shù)據(jù)庫的負擔,但是如果客戶端把cookie禁掉了的話,那么session就無從同步了,這樣會給網(wǎng)站帶來損失;cookie的安全性不高,雖然它已經(jīng)加了密,但是還是可以偽造的。
三、利用memcache同步session
memcache可以做分布式,如果沒有這功能,他也不能用來做session同步。他可以把web服務器中的內(nèi)存組合起來,成為一個"內(nèi)存池",不管是哪個服務器產(chǎn)生的sessoin都可以放到這個"內(nèi)存池"中,其他的都可以使用。
優(yōu)點:以這種方式來同步session,不會加大數(shù)據(jù)庫的負擔,并且安全性比用cookie大大的提高,把session放到內(nèi)存里面,比從文件中讀取要快很多。
缺點:memcache把內(nèi)存分成很多種規(guī)格的存儲塊,有塊就有大小,這種方式也就決定了,memcache不能完全利用內(nèi)存,會產(chǎn)生內(nèi)存碎片,如果存儲塊不足,還會產(chǎn)生內(nèi)存溢出。
四、總結
上面三種方法都是可行的
第一種方法,最影響系統(tǒng)速度的那種,不推薦使用;
第二種方法,效果不錯,不過安全隱患一樣的存在;
第三種方法,個人覺得第三種方法是最好的,推薦大家使用
一、利用數(shù)據(jù)庫同步session
在做多服務器session同步時我沒有用這種方法,如果非要用這種方法的話,我想過二種方法:
1,用一個低端電腦建個數(shù)據(jù)庫專門存放web服務器的session,或者,把這個專門的數(shù)據(jù)庫建在文件服務器上,用戶訪問web服務器時,會去這個專門的數(shù)據(jù)庫check一下session的情況,以達到session同步的目的。
2,這種方法是把存放session的表和其他數(shù)據(jù)庫表放在一起,如果mysql也做了集群了話,每個mysql節(jié)點都要有這張表,并且這張session表的數(shù)據(jù)表要實時同步。
說明:用數(shù)據(jù)庫來同步session,會加大數(shù)據(jù)庫的負擔,數(shù)據(jù)庫本來就是容易產(chǎn)生瓶頸的地方,如果把session還放到數(shù)據(jù)庫里面,無疑是雪上加霜。上面的二種方法,第一點方法較好,把放session的表獨立開來,減輕了真正數(shù)據(jù)庫的負擔
二、利用cookie同步session
session是文件的形勢存放在服務器端的,cookie是文件的形勢存在客戶端的,怎么實現(xiàn)同步呢?方法很簡單,就是把用戶訪問頁面產(chǎn)生的session放到cookie里面,就是以cookie為中轉站。你訪問web服務器A,產(chǎn)生了session把它放到cookie里面了,你訪問被分配到web服務器B,這個時候,web服務器B先判斷服務器有沒有這個session,如果沒有,在去看看客戶端的cookie里面有沒有這個session,如果也沒有,說明session真的不存,如果cookie里面有,就把cookie里面的sessoin同步到web服務器B,這樣就可以實現(xiàn)session的同步了。
說明:這種方法實現(xiàn)起來簡單,方便,也不會加大數(shù)據(jù)庫的負擔,但是如果客戶端把cookie禁掉了的話,那么session就無從同步了,這樣會給網(wǎng)站帶來損失;cookie的安全性不高,雖然它已經(jīng)加了密,但是還是可以偽造的。
三、利用memcache同步session
memcache可以做分布式,如果沒有這功能,他也不能用來做session同步。他可以把web服務器中的內(nèi)存組合起來,成為一個"內(nèi)存池",不管是哪個服務器產(chǎn)生的sessoin都可以放到這個"內(nèi)存池"中,其他的都可以使用。
優(yōu)點:以這種方式來同步session,不會加大數(shù)據(jù)庫的負擔,并且安全性比用cookie大大的提高,把session放到內(nèi)存里面,比從文件中讀取要快很多。
缺點:memcache把內(nèi)存分成很多種規(guī)格的存儲塊,有塊就有大小,這種方式也就決定了,memcache不能完全利用內(nèi)存,會產(chǎn)生內(nèi)存碎片,如果存儲塊不足,還會產(chǎn)生內(nèi)存溢出。
四、總結
上面三種方法都是可行的
第一種方法,最影響系統(tǒng)速度的那種,不推薦使用;
第二種方法,效果不錯,不過安全隱患一樣的存在;
第三種方法,個人覺得第三種方法是最好的,推薦大家使用
相關文章
Tomcat無法加載css和js等靜態(tài)資源文件的解決思路
Tomcat無法加載css和js等靜態(tài)資源文件的情況想必從事相關行業(yè)的工作人員都有遇到過吧,接下來為大家介紹下詳細的解決方法,感興趣的朋友可以參考下2013-10-10詳解Linux使用ss命令結合zabbix對socket做監(jiān)控
zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡監(jiān)視功能的企業(yè)級的開源解決方案。這篇文章主要分為三塊進行說明:介紹ss命令;對機器總體的socket進行監(jiān)控;某些機器連接該機器的數(shù)量進行監(jiān)控2021-06-06在Linux系統(tǒng)上創(chuàng)建軟連接和硬連接的方法
這篇文章主要介紹了在Linux系統(tǒng)上創(chuàng)建軟連接和硬連接的方法,通過執(zhí)行 man ln 命令,可以看到這是在文件之間建立鏈接,而沒有提及是軟鏈接或硬鏈接,文中通過代碼和圖文介紹的非常詳細,需要的朋友可以參考下2024-08-08