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

集群环境下SESSION处理(转)

    博客分类:
  • Java
阅读更多

本文转自:http://blog.csdn.net/linyajun/archive/2008/09/24/2975228.aspx

仅供自己收藏学习

在集群部署的情况下,应用程序需要做出调整,主要集中在四个方面:对httpsession的处理、对缓存的处理、共享的文件系统、synchronized关键字的失效。

httpsession的处理

httpsession的处理最为重要,因为对WEB程序而言,httpsession无疑是最重要的全局资源,它需要被多个web服务器所共享。

无共享的集群架构(SNA),在这样的集群中,每个节点具备完全相同的功能,并且不需要知道其他节点存在与否。每个节点JVM进程不保持全局状态,才能够保证nJVM节点的幂等性,那些所有涉及到全局状态的,必须放在JVM进程之外,例如用户ID可以使用cookiesession可以放入数据库(这并不是一个好的选择),文件可以放在共享存储系统中。

也就是说httpsession的信息需要被保存在JVM进程之外,例如分布式缓存、数据库。


这里是方案:

1、使用会话cookie保存web服务器产生的sessionid
   为什么是sessionid而不是userid,原因在于谁也不知道除去登录外其他人会在httpsession里干些什么

2、自定义SessionMap<String,Serializable>同步保存httpsession内的信息
   自定义SessionMap同步httpsession,在操作httpsession时不用改变调用接口,不用东张西望

3、使用分布式缓存memcached保存自定义SessionMap<String,Serializable>

4、会话胶粘
   未失败转发的情况下没必要在memcached和httpsession之间复制来复制去,眉来眼去

5、使用SnaFilter处理失败转发

6、使用HttpSessionListener实现SessionMap<String,Serializable>的过期
   利用容器session 机制的好处,httpsession过期的时候干掉memecached里的SessionMap


下面根据web请求的过程分情况讨论该方案:

A、登录


 

根据请求的url判断是否是登录请求

在线人数保存在memcached

B、 正常请求


 

C、 失败转发


 

D、登出


 

根据请求的url判断是否是登出请求

E、HttpSession过期

hack memcached,使用HttpSessionListenersessionDestroyed事件时根据sessionid删除memcached里的sessionMap(如果存在)

关于在线人数的统计:在线人数存储在memcached里,将在线人数与sessionMap绑定,往memcached里增加sessionMap时在线人数+1,删除时-1.

 

分享到:
评论

相关推荐

    集群环境下memcache解决session共享

    然而,集群环境下的session共享问题是个棘手的问题,因为它涉及到用户状态的维护和一致性。本篇将深入探讨如何在Tomcat8的集群环境中使用memcache来解决session共享的问题。 首先,让我们理解什么是session。...

    tomcat8集群session共享(redis处理)

    在单个服务器环境下,Session存储在服务器内存中,但在集群环境中,由于每个服务器都有自己的内存空间,无法直接共享Session。 为了解决这个问题,我们可以利用Redis这种高性能的Key-Value数据库作为Session的中央...

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

    在单台服务器环境下,session数据保存在服务器内存中,但在集群环境中,由于多台服务器无法直接访问彼此的内存,如果不进行特殊处理,会导致用户在不同服务器间切换时丢失session信息,严重影响用户体验。...

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

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

    tomcat集群实现session复制

    在IT领域,特别是Web应用服务器的管理与优化中,Tomcat集群实现Session复制是一个关键的技术点,它确保了高可用性和负载均衡,特别是在处理大量并发请求的场景下。本文将深入探讨这一主题,涵盖其原理、配置方法以及...

    JBoss集群配置的Session复制

    JBoss集群的Session复制是一项复杂但至关重要的技术,它不仅关乎到分布式环境下的负载均衡和性能优化,更直接影响到用户体验和系统的稳定性。通过合理配置mod_jk和JGroups等组件,可以有效地实现Session的数据共享和...

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

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

    tomcat集群session共享

    在没有正确处理session共享的情况下,用户可能需要在每次服务器切换时重新登录,这对用户体验极其不利。 针对这个问题,一种常见的解决方案是利用外部存储系统,如Redis,来作为session数据的中央存储。Redis是一个...

    Nginx+Tomcat+Memcached-Session-Manager集群Session共享

    Memcached-Session-Manager是为Tomcat提供集群环境下的Session共享管理功能。MSM借助Memcached这一分布式内存对象缓存系统来存储和管理session,让多个Tomcat实例能够共享用户的会话信息。这样,即使用户的请求在多...

    weblogic集群下的session复制

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

    集群 redis实现 session的 jar包之tomcat7

    在Web集群环境中,session共享是个挑战,因为用户的会话信息通常存储在单个服务器上。当用户请求路由到不同的服务器时,如果没有共享机制,会导致会话丢失。为了解决这个问题,我们可以使用集中式存储来保存session...

    redis 集群共享Session

    随着分布式系统和微服务架构的普及,单体应用中的Session处理方式已无法满足需求,这时就需要借助像Redis这样的键值存储系统来实现Session的共享。本文将深入探讨“redis集群共享Session”的实现原理与步骤。 1. **...

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

    由于Session是存储在单个服务器内存中的,因此默认情况下,不同服务器无法直接访问彼此的Session数据。本实践将探讨几种在Web项目集群中实现Session共享的策略。 1. **基于数据库的Session共享** - Session信息...

    Apache+tomcat集群环境配置

    在集群环境中,保持用户session的一致性至关重要。有以下几种实现方式: - **cookie复制**:将session ID存储在cookie中,每次请求时,用户携带session ID到达任意节点,节点根据ID查找session。 - **共享内存**:...

    tomcat7集群实现session共享

    然而,在集群环境下,多个服务器可能同时处理来自同一用户的请求,这就需要一种机制来确保这些服务器都能访问到相同的session数据。 Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:...

    Nginx+Tomcat+Memcached实现tomcat集群和session共享

    1. **Session复制**:默认情况下,Tomcat会在本地存储Session数据,但在集群环境下,需要配置每个实例之间进行Session复制,以保持会话一致性。 2. **Memcached Session Manager**:安装并配置Tomcat的Memcached ...

    tomcat7集群session共享memcache依赖包1.8.3

    这样,每当一个用户在集群中的任一节点上创建或更新Session时,这个操作都会同步到Memcached中,其他节点在处理相同用户请求时,可以直接从Memcached中获取Session信息,从而实现了Session的共享。 为了在Tomcat7中...

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

    在单台服务器环境下,session存储在服务器内存中,但在集群环境中,由于每个服务器都可能处理用户的请求,因此需要一种机制来确保所有服务器都能访问到正确的session信息。 **Session集群共享**:在Tomcat集群中,...

    tomcat7 集群通过redis共享session 所需jar包

    在集群环境中,多个Tomcat实例协同工作,提供负载均衡和故障转移,以提高应用的可用性和性能。 2. **Session共享**:Session是Web应用程序中用来跟踪用户状态的一种机制。在单个服务器上,Session数据存储在服务器...

    linux下apache+tomact基于集群负载均衡session复制

    本篇文章将详细介绍如何在 Linux 环境下搭建基于 Apache 和 Tomcat 的集群负载均衡,并实现 session 复制,以确保在多台服务器之间能够无缝地进行会话共享。 #### 二、环境配置 在部署 Apache+Tomcat 集群之前,...

Global site tag (gtag.js) - Google Analytics