幾種session儲存方式比較

2021-09-07 06:30:32 字數 1959 閱讀 4725

原文: 

集群中session安全和同步是個最大的問題,下面是我收集到的幾種session同步的方案,希望能通過分析其各自的優劣找出其適應的場景。

1. 客戶端cookie加密

這是我以前採用的方式,簡單,高效。比較好的方法是自己採用cookie機制來實現乙個session,在應用中使用此session實現。

問題:session中資料不能太多,最好只有個使用者id。

參考實現:

可能大部分應用伺服器都提供了session複製的功能來實現集群,tomcat,jboss,was都提供了這樣的功能。

問題:

效能隨著伺服器增加急劇下降,而且容易引起廣播風暴;

session資料需要序列化,影響效能。

如何序列化,可以參考 物件的序列化和反序列化 .

參考資料:

tomcat 5集群中的session複製一

tomcat 5集群中的session複製二

應用伺服器-jboss 4.0.2集群指南

3. 使用資料庫儲存session

使用資料庫來儲存session,就算伺服器宕機了也沒事,session照樣在。

問題:

程式需要定製;

每次請求都進行資料庫讀寫開銷不小(使用記憶體資料庫可以提高效能,宕機就會丟失資料。可供選擇的記憶體資料庫有berkeleydb,mysql的記憶體表);

資料庫是乙個單點,當然可以做資料庫的ha來解決這個問題。

4. 使用共享儲存來儲存session

和資料庫類似,就算伺服器宕機了也沒事,session照樣在。使用nfs或windows檔案共享都可以,或者專用的共享儲存裝置。

問題:

程式需要定製;

頻繁的進行資料的序列化和反序列化,效能是否有影響;

共享儲存是乙個單點,這個可以通過raid來解決。

5. 使用memcached來儲存session

這種方式跟資料庫類似,不過因為是記憶體訪問的,效能自然要比資料庫好多了。

問題:

程式需要定製,增加了工作量;

存入memcached中的資料都需要序列化,效率較低;

memcached伺服器一死,所有session全丟。memchached能不能做ha? 我也不知道,**上沒提。

參考資料:

應用memcached儲存session會話資訊

正確認識memcached的快取失效

擴充套件tomcat 6.x,使用memcached存放session資訊

6. 使用terracotta來儲存session

跟memcached類似,但是資料不需要序列化,並且是find-grained changes,效能更好。配置對原來的應用完全透明,原有程式幾乎不用做任何修改。而且terracotta本身支援ha。

問題:terracotta的ha本身進行資料複製效能如何?

jvm-level clustering

terracotta集群tomcat實現session同步

使用terracotta和tomcat建立active-passive模式的集群

用spring web flow和terracotta搭建web應用

terracotta實戰示例——集群rife

terracotta近況:轉向開源,接受度,hibernate支援

設定Session超時的幾種方式

1 jsp頁面直接設定 如下 其中10表示秒數.如果為 1表示永不過期 2 web.xml設定,會覆蓋tomcat下conf web.xml的session config設定 session config session timeout 10session timeout session confi...

幾種遍歷方式的比較

主要從幾個方面討論 1.是否有返回值 2.是否在遍歷過程中拿到value key或者value index 3.適用資料型別 4.遍歷物件是否包含symbol屬性或者不可列舉屬性 一 for while do while幾種迴圈 靈活而冗雜 是否有返回值 非函式,不討論 value index 陣列...

session的儲存方式和配置

session又稱為會話狀態,是web系統中最常用的狀態,用於維護和當前瀏覽器例項相關的一些資訊。我們控制使用者去許可權中經常用到session來儲存使用者狀態,這篇文章會講下session的儲存方式 在web.config中如何配置session session的生命週期等內容。1 session...