web集群時session同步的3種方法

2022-01-23 22:33:01 字數 1532 閱讀 9155

在做了web集群後,你肯定會首先考慮session同步問題,因為通過負載均衡後,同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果session不同步的話,乙個登入使用者,一會是登入狀態,一會又不是登入狀態。所以本文就根據這種情況給出三種不同的方法來解決這個問題:

一,利用資料庫同步session

在做多伺服器session同步時我沒有用這種方法,如果非要用這種方法的話,我想過二種方法:

1,用乙個低端電腦建個資料庫專門存放web伺服器的session,或者,把這個專門的資料庫建在檔案伺服器上,使用者訪問web伺服器時,會去這個專門的資料庫check一下session的情況,以達到session同步的目的。

2,這種方法是把存放session的表和其他資料庫表放在一起,如果mysql也做了集群了話,每個mysql節點都要有這張表,並且這張session表的資料表要實時同步。

說明:用資料庫來同步session,會加大資料庫的負擔,資料庫本來就是容易產生瓶頸的地方,如果把session還放到資料庫裡面,無疑是雪上加霜。上面的二種方法,第一點方法較好,把放session的表獨立開來,減輕了真正資料庫的負擔

二,利用cookie同步session

session是檔案的形勢存放在伺服器端的,cookie是檔案的形勢存在客戶端的,怎麼實現同步呢?方法很簡單,就是把使用者訪問頁面產生的session放到cookie裡面,就是以cookie為中轉站。你訪問web伺服器a,產生了session把它放到cookie裡面了,你訪問被分配到web伺服器b,這個時候,web伺服器b先判斷伺服器有沒有這個session,如果沒有,在去看看客戶端的cookie裡面有沒有這個session,如果也沒有,說明session真的不存,如果cookie裡面有,就把cookie裡面的sessoin同步到web伺服器b,這樣就可以實現session的同步了。

說明:這種方法實現起來簡單,方便,也不會加大資料庫的負擔,但是如果客戶端把cookie禁掉了的話,那麼session就無從同步了,這樣會給**帶來損失;cookie的安全性不高,雖然它已經加了密,但是還是可以偽造的。

三,利用memcache同步session

memcache可以做分布式,如果沒有這功能,他也不能用來做session同步。他可以把web伺服器中的記憶體組合起來,成為乙個"記憶體池",不管是哪個伺服器產生的sessoin都可以放到這個"記憶體池"中,其他的都可以使用。

優點:以這種方式來同步session,不會加大資料庫的負擔,並且安全性比用cookie大大的提高,把session放到記憶體裡面,比從檔案中讀取要快很多。

缺點:memcache把記憶體分成很多種規格的儲存塊,有塊就有大小,這種方式也就決定了,memcache不能完全利用記憶體,會產生記憶體碎片,如果儲存塊不足,還會產生記憶體溢位。

四,總結

上面三種方法都是可行的

第一種方法,最影響系統速度的那種,不推薦使用;

第二種方法,效果不錯,不過安全隱患一樣的存在;

第三種方法,個人覺得第三種方法是最好的,推薦大家使用

來自 清清月兒 部落格

web集群時session同步的3種方法

web集群時session同步的3種方法 在做了web集群後,你肯定會首先考慮session同步問題,因為通過負載均衡後,同乙個ip訪問同乙個頁面會被分配到不同的伺服器上,如果 session不同步的話,乙個登入使用者,一會是登入狀態,一會又不是登入狀態。所以本文就根據這種情況給出三種不同的方法來解...

web集群中常用的session同步解決方案及對比

隨著 的功能越來越多,使用者量越來越龐大,單節點模式已經嚴重不能支撐整個系統的正常運作,輕則使用者頁面訪問時間越來越慢,重則就會導致整個系統癱瘓。這時候 就需要優化或調整目前的架構,大部分人就會採用各種負載均衡軟體例如nginx hproxy lvs等,也有的採用分布式的方式把系統根據功能拆分成很多...

集群中session同步解決方式

集群中幾種session同步解決方案的比較 轉 在集群中session安全和同步是個最大的問題,下面是收集到的幾種session同步的方案,希望能通過分析其各自的優劣找出其適應的場景。1.客戶端cookie加密 簡單,高效。比較好的方法是自己採用cookie機制來實現乙個session,在應用中使用...