程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 集群中幾種session同步解決方案

集群中幾種session同步解決方案

編輯:關於MYSQL數據庫
    1. 客戶端cookIE加密
簡單,高效。比較好的方法是自己采用cookIE機制來實現一個session,在應用中使用此session實現。

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

   參考實現:

2. application server的session復制
   可能大部分應用服務器都提供了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支持

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved