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

集群中几种session同步方案

    博客分类:
  • java
 
阅读更多


集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。
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。

分享到:
评论

相关推荐

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

    以下是对集群中几种session同步解决方案的详细比较: 1. **Session复制**: 这是最基础的策略,所有服务器都复制一份相同的session数据。当一个服务器接收到更新session的请求时,它会将更新广播到集群中的其他...

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

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

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

    本实践将探讨几种在Web项目集群中实现Session共享的策略。 1. **基于数据库的Session共享** - Session信息可以持久化到数据库中,每当用户操作导致Session变化时,更新数据库记录。 - 优点:数据可靠,不会因...

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

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

    tomcat集群session共享

    2. **选择session复制策略**:Tomcat提供了几种session复制策略,包括基于内存的复制和基于JDBC的复制。在这个场景下,我们将采用基于第三方存储的策略,即使用`org.apache.catalina.session.PersistentManagerBase`...

    tomcat集群实现session复制

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

    Tomcat5集群中的Session复制

    在Tomcat5集群中,Session复制可以通过以下几步实现: 1. 在每个服务器节点上配置SessionManager,以便在服务器之间复制Session数据。 2. 使用IP多点传送或IP sockets实现服务器之间的通讯。 3. 在服务器之间复制...

    Tomcat+redis、session同步

    当用户在集群中的不同节点之间跳转时,会导致`session`丢失。为了解决这个问题,我们可以利用`Redis`作为`session`的中央存储库,实现跨服务器的`session`同步。 首先,我们需要在`Tomcat`中集成`Redis`。这通常...

    Tomcat集群Session共享

    以下是几种常见的Tomcat集群Session共享方案,包括其实现过程、优缺点和可能遇到的问题。 1. **基于Cookie+Redis+Filter解决方案** - 实现过程:用户登录后,将Session ID与用户信息存入Redis,并在客户端设置一个...

    tomcat7集群实现session共享

    Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:这是Tomcat默认的session复制方式。每个服务器都将session对象复制到其他服务器,通过Java远程方法调用(RMI)实现。这种方式简单易用...

    分布式session 解决方案

    为了解决这一问题,有以下几种常见的分布式Session解决方案: 1. **Session复制同步**:所有Web服务器节点之间通过复制的方式同步Session。这种方式简单但效率低下,因为所有Session都要存储在每个服务器上,占用...

    memcached +tomcat7.52 session同步

    在现代Web应用中,Session同步是确保用户状态在集群环境中一致性的关键。当一个应用部署在多台服务器上时,传统的session管理方式可能会导致数据不一致。为了解决这个问题,我们可以使用分布式缓存系统,如memcached...

    Tomcat 6 集群配置 session 共享 同一台机器

    3. **Session复制**:Tomcat使用`org.apache.catalina.ha.session.DeltaManager`作为默认的集群session管理器,它负责在集群节点间同步session数据。DeltaManager使用序列化将session对象在节点间传输。 4. **...

    43_说说你们的分布式session方案是啥?怎么做的?.zip

    在Java开发中,常见的分布式Session实现方式有以下几种: 1. **Session复制**:这是一种简单的策略,即在集群中的每个节点都复制一份完整的Session数据。每当Session发生变化时,都会广播给其他节点。但是,这种...

    Apache+tomcat集群环境配置

    有以下几种实现方式: - **cookie复制**:将session ID存储在cookie中,每次请求时,用户携带session ID到达任意节点,节点根据ID查找session。 - **共享内存**:所有Tomcat实例共享同一内存区域,session存储其中,...

    网站集群部署设计方案 数据库集群部署方案

    8. **Session服务器**:同样使用`NFS`,存储和管理用户的会话信息,确保用户在集群中的任何服务器间切换时,会话信息得以保持。 【数据库集群部署方案】 数据库集群是为了解决单个数据库服务器的性能瓶颈和可用性...

    Tomcat之间Session共享

    4. 需要确保 Tomcat 集群中所有节点的时钟同步,以便 Session 数据的传输正确。 Tomcat 之间的 Session 共享有很多优点,包括: 1. 提高了系统的可用性,因为用户的登录状态可以在多个 Tomcat 实例之间共享。 2. ...

    Spring Boot + Spring Session + Redis

    Spring Session提供了一种统一的会话管理机制,可以将session数据存储在集中式存储如Redis中,解决了跨域、集群环境下的session同步问题。 Redis则是一个高性能的键值数据库,常被用作缓存和消息代理。在本案例中,...

    jboss session 复制二

    - **HA-JNDI**:高可用的Java Naming and Directory Interface,它负责在集群中同步JNDI命名空间,包括Session绑定的bean。 - **Infinispan**:JBoss的内存数据网格,它支持缓存和分布式存储,可以用于Session的...

    2.nginx.conf的配置(负载均衡的配置)和tomcat(session共享).doc

    为了解决这个问题,有以下几种Tomcat Session共享策略: 1. **负载均衡服务器提供的Session共享**:某些硬件负载均衡器提供此功能,但Nginx不支持。 2. **Web容器自身的Session共享策略**:Tomcat可以配置集群模式...

Global site tag (gtag.js) - Google Analytics