`
haiziwoainixx
  • 浏览: 415060 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

集群环境下的session同步问题

 
阅读更多
机制:
session 机制是cookie机制为前提(当然也可用url重写,来脱离cookie),
在cookie中保存这sessionID这个信息,服务器会根据cookie中sessionID获取session
因为cookie默认保存在机器给浏览器开辟的内存中,所以关闭浏览器,就没了sessionID,这样服务器就会创建新的session,这是一方面,当然session也是有生命周期,这个是可以设置。 你如果想解决就自己写个cookie覆盖掉服务器自己写出去的cookie,然后设置时间长一些,cookie就保存在硬盘上了

如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。这种生命期为浏览会话期的cookie被称为会话cookie。会话cookie一般不保存在硬盘上而是保存在内存里。
  如果设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。
  存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式。


参考: http://www.blogjava.net/lzj520/archive/2008/03/06/184224.html
1. 客户端cookie加密

简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。

   问题:session中数据不能太多,最好只有个用户id。

   参考实现:http://rollerweblogger.org/

2. application server的session复制

   可能大部分应用服务器都提供了session复制的功能来实现集群,tomcat,jboss,was都提供了这样的功能。

   问题:

性能随着服务器增加急剧下降,而且容易引起广播风暴;

session数据需要序列化,影响性能。

如何序列化,可以参考 对象的序列化和反序列化.

 

3. 使用数据库保存session

   使用数据库来保存session,就算服务器宕机了也没事,session照样在。

   问题:

程序需要定制;

每次请求都进行数据库读写开销不小(使用内存数据库可以提高性能,宕机就会丢失数据。可供选择的内存数据库有BerkeleyDB,Mysql的内存表);

数据库是一个单点,当然可以做数据库的ha来解决这个问题。

4. 使用共享存储来保存session

   和数据库类似,就算服务器宕机了也没事,session照样在。使用nfs或windows文件共享都可以,或者专用的共享存储设备。

   问题:

程序需要定制;

频繁的进行数据的序列化和反序列化,性能是否有影响;

共享存储是一个单点,这个可以通过raid来解决。

5. 使用memcached来保存session

   这种方式跟数据库类似,不过因为是内存存取的,性能自然要比数据库好多了。

   问题:

程序需要定制,增加了工作量;

存入memcached中的数据都需要序列化,效率较低;

          memcached服务器一死,所有session全丢。memchached能不能做HA? 我也不知道,网站上没提。

 

6. 使用terracotta来保存session

   跟memcached类似,但是数据不需要序列化,并且是Find-Grained Changes,性能更好。配置对原来的应用完全透明,原有程序几乎不用做任何修改。而且terracotta本身支持HA。

问题:terracotta的HA本身进行数据复制性能如何?

 

分享到:
评论

相关推荐

    针对分布式或集群session同步问题,改用jwt的续期解决方案.docx

    ### 针对分布式或集群Session同步问题:JWT续期解决方案 #### 一、背景介绍 随着前后端分离架构的普及和技术的发展,越来越多的应用选择使用轻量级的身份验证方法来确保数据安全。其中,JSON Web Token (JWT) 成为...

    tomcat6/7/8 集群部署解决Session同步问题的完美解决方案

    网上很多说是支持的,其实都不行,基本上是各个依赖包之间的版本不兼容或者依赖包不全,我这个包是一个一个依赖下载的,完美同步Seesion,解决老架构下的单Web应用,利用集群支持大并发,补救方案。

    tomcat-session同步所需jar.rar_session集群共享_tomcat session

    "tomcat-session同步所需jar.rar_session集群共享_tomcat session"这个标题表明我们关注的是如何在Tomcat集群环境中实现session的共享。这涉及到多个知识点,包括session的基本概念、session复制、粘滞会话、以及...

    Apache+Tomcat实现负载均衡及集群(session同步)--五、session同步(3)使用memcache

    本文将深入探讨如何使用memcache来实现Apache+Tomcat环境下的session同步。 首先,我们来理解一下session同步的重要性。在分布式系统中,用户的session信息可能存储在多个服务器上,当用户在集群中的不同节点之间...

    集群中几种session同步解决方案的比较

    ### 集群中几种session同步解决方案的比较 在分布式系统和集群环境中,session管理是一项关键技术,它确保了用户在不同服务器之间的交互能够保持一致性。本文将深入探讨六种常用的session共享方法,包括它们的工作...

    集群中几种session同步解决方案的比较共1页.pdf

    集群环境下的session管理对于提高系统的可扩展性和可用性至关重要。以下是对集群中几种session同步解决方案的详细比较: 1. **Session复制**: 这是最基础的策略,所有服务器都复制一份相同的session数据。当一个...

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Apache+Tomcat+Linux集群和均衡负载(Session同步复制

    Tomcat7集群实现共享session,已配置好。

    但在集群环境中,由于请求可能会被路由到不同的服务器,若不进行特殊处理,每台服务器将拥有独立的session,导致用户信息无法同步。为了解决这个问题,通常会采用以下几种策略: 1. **Cookie粘滞(Session Sticky)...

    Apache+tomcat集群环境配置

    Apache作为前端服务器,可以通过负载均衡技术将用户请求分发到多个后端的Tomcat实例上,实现请求的分担,同时通过session同步,保证用户会话的连续性。以下是对"Apache+mod_jk+Tomcat集群环境配置"的详细解析。 **1...

    tomcat集群实现session复制

    为了解决这个问题,Session复制技术应运而生,它使得Session数据能够在集群内的所有服务器之间同步,从而保证了无论哪个服务器处理用户请求,都能获取到完整的Session信息。 ### Session复制的实现方式 #### 1. **...

    redis+tomcat集群配置session共享

    在分布式系统中,Session共享是一个重要的议题,尤其是在使用Redis与Tomcat构建的集群环境中。当用户在集群中的任一节点登录后,其Session信息需要在其他节点也能访问,以实现会话持久化,保证用户体验的一致性。本...

    JBoss集群配置的Session复制

    在多节点的JBoss集群中,Session复制主要解决的是负载均衡下的会话管理问题。当客户端请求在不同的服务器间进行切换时,若没有有效的Session管理策略,将可能导致会话数据丢失或不一致,进而影响用户体验和系统的...

    Tomcat8 session同步测试,配置好的Tomcat

    Tomcat8的session同步是通过集群功能实现的,它允许多台Tomcat实例协同工作,共同处理来自同一用户的请求。要实现这一功能,我们首先需要配置Tomcat的集群设置。在`conf/server.xml`文件中,我们需要添加`<Cluster>`...

    tomcat集群session共享

    以下是实现Tomcat集群session共享与Redis结合的步骤和知识点: 1. **配置Redis服务器**:首先,你需要安装并运行一个Redis实例。确保其稳定运行,并且能够被集群中的所有Tomcat服务器访问。 2. **选择session复制...

    集群redis实现session共享jar包之tomcat7

    在分布式系统中,Session共享是实现用户会话一致性的重要手段,特别是在集群环境下。"集群redis实现session共享jar包之tomcat7"这个主题涉及到的是如何在基于Tomcat 7的Web应用集群中,利用Redis作为中央存储来共享...

    weblogic集群下的session复制

    在WebLogic Server环境中,当一个用户在集群中的某个服务器上登录并创建了Session后,如果该用户的请求被转发到集群中的其他服务器,Session复制机制会确保用户的会话状态在服务器之间同步,从而提供无缝的用户体验...

    Tomcat+redis、session同步

    综上所述,将`Tomcat`与`Redis`整合可以有效解决分布式环境下的`session`同步问题,提高应用的可用性和扩展性。正确配置和使用这一组合,不仅能够提升用户体验,还能为系统的高并发处理提供有力支持。

    web项目集群时共享session方案实践

    在Web开发中,当一个应用程序部署在多个服务器上形成集群时,如何实现多个服务器之间Session的共享成为了一个关键问题。由于Session是存储在单个服务器内存中的,因此默认情况下,不同服务器无法直接访问彼此的...

Global site tag (gtag.js) - Google Analytics