集羣中幾種Session同步方案比較

在集羣中session安全和同步是個最大的問題,下面是收集到的幾種session同步的方案,但願能經過分析其各自的優劣找出其適應的場景。 html

1. 客戶端cookie加密

簡單,高效。比較好的方法是本身採用cookie機制來實現一個session,在應用中使用此session實現。 java

   問題:session中數據不能太多,最好只有個用戶id。 web

   參考實現:http://rollerweblogger.org/ spring

2. application server的session複製

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

   問題: 數據庫

性能隨着服務器增長急劇降低,並且容易引發廣播風暴; windows

session數據須要序列化,影響性能。 緩存

如何序列化,能夠參考 對象的序列化和反序列化. tomcat

參考資料: 安全

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支持

 

附:terracotta介紹

Open Terracotta is an enterprise-class, open-source, JVM-level clustering solution. JVM-level clustering simplifies enterprise Java by enabling applications to be deployed on multiple JVMs, yet interact with each other as if they were running on the same JVM. Terracotta extends the Java Memory Model of a single JVM to include a cluster of virtual machines such that threads on one virtual machine can interact with threads on another virtual machine as if they were all on the same virtual machine with an unlimited amount of heap.

相關文章
相關標籤/搜索