在集群中session安全和同步是个最大的问题,下面是收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。
1. 客户端cookie加密
简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。
问题:session中数据不能太多,最好只有个用户id。
参考实现:http://rollerweblogger.org/
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支持
分享到:
相关推荐
以下是对集群中几种session同步解决方案的详细比较: 1. **Session复制**: 这是最基础的策略,所有服务器都复制一份相同的session数据。当一个服务器接收到更新session的请求时,它会将更新广播到集群中的其他...
### 集群中几种session同步解决方案的比较 在分布式系统和集群环境中,session管理是一项关键技术,它确保了用户在不同服务器之间的交互能够保持一致性。本文将深入探讨六种常用的session共享方法,包括它们的工作...
Apache 和 Tomcat 集群配合 Session 复制是一种常见的高可用性和负载均衡解决方案,尤其适用于大型网站和企业级应用。以下将详细解释这个方案的关键点。 **整体方案策略** 1. **部署逻辑图** 部署逻辑通常包括...
### 针对分布式或集群Session同步问题:JWT续期解决方案 #### 一、背景介绍 随着前后端分离架构的普及和技术的发展,越来越多的应用选择使用轻量级的身份验证方法来确保数据安全。其中,JSON Web Token (JWT) 成为...
需要注意的是,虽然memcache提供了一种简单的方法来处理session同步,但在大型系统中,你可能还需要考虑其他解决方案,比如使用更强大的分布式存储系统(如Redis)或采用基于token的身份验证机制,以应对更大的负载...
网上很多说是支持的,其实都不行,基本上是各个依赖包之间的版本不兼容或者依赖包不全,我这个包是一个一个依赖下载的,完美同步Seesion,解决老架构下的单Web应用,利用集群支持大并发,补救方案。
本文将探讨负载均衡集群中的三种主要会话解决方案:会话保持、会话复制和会话共享。 **会话保持** 是一种常见的策略,其目的是确保来自同一客户端的请求始终被路由到同一台后端服务器。这可以通过多种方式实现,...
以下是对不同Session解决方案的详细讨论: 1. **Session会话保持**: - **Nginx**:Nginx提供了`ip_hash`方法,通过用户的IP地址哈希结果分配请求,使同一用户始终连接到同一台服务器。这有助于保持Session。另外...
使用Redis集群共享Session是分布式系统中解决Session管理的有效方法,它提供了一种高效、可靠的方案。不过,实施时需要注意数据序列化、安全性以及与其他系统的集成,确保整体架构的稳定性和安全性。通过理解这些...
针对这个问题,一种常见的解决方案是利用外部存储系统,如Redis,来作为session数据的中央存储。Redis是一个高性能的键值数据存储系统,支持多种数据结构,如字符串、哈希、列表、集合等,这使得它成为session共享的...
"tomcat7集群session共享memcache依赖包1.8.3"这个标题正揭示了这样一个解决方案。 首先,让我们深入了解Tomcat7集群。Tomcat7是Apache Tomcat服务器的一个版本,它支持Servlet 3.0和JSP 2.2规范。通过复制应用和...
4. **基于缓存的解决方案**,如**Memcached**或**Redis**:这些分布式缓存系统可以存储session,为所有Tomcat实例提供中心化的session存储。它们通常具有高性能和可扩展性,但需要额外的配置和维护。 在实施session...
标题 "Tomcat7集群实现共享session,已配置好" 暗示了这是一个关于在Tomcat7服务器集群环境中实现session共享的配置实例。...这个压缩包提供了一个预配置的解决方案,对于快速搭建和测试session共享环境非常有帮助。
这个"Redis-Session-同步"项目提供了一种实用的解决方案,通过Redis实现跨服务器的Session同步,保证了用户会话的一致性。对于大型分布式系统来说,这样的设计能够提高系统的可扩展性和用户体验。开发者可以根据项目...
`msm集群session共享`是指在多个Tomcat服务器之间实现用户session数据的共享,以保证用户在集群中的任意一台服务器上都能保持登录状态和其他会话信息的连续性。这种技术常用于提升网站的可用性和负载均衡能力。 `...
为了解决这一问题,有以下几种常见的分布式Session解决方案: 1. **Session复制同步**:所有Web服务器节点之间通过复制的方式同步Session。这种方式简单但效率低下,因为所有Session都要存储在每个服务器上,占用...
Java分布式session存储解决方案是指在分布式系统中,如何存储和管理Session数据的问题。Session数据是指Web应用程序中用户的会话信息,包括用户的身份信息、操作记录等。分布式系统中,Session数据的存储和管理变得...
【标题】:“Tomcat集群——使用MSM管理集群Session” 在分布式系统中,尤其是在基于Java的Web应用中,实现session的共享是确保用户状态在不同服务器之间无缝切换的关键。Tomcat,作为流行的开源Servlet容器,提供...
本文介绍了三种保持Session一致性的解决方案,每种方案都需要使用Nginx作为负载均衡器。 方案一:Nginx ip_hash。这种方案是通过Nginx的ip_hash模块,根据用户访问的IP地址的hash结果分配请求到后端服务器。这样每...
1. **基于Cookie+Redis+Filter解决方案** - 实现过程:用户登录后,将Session ID与用户信息存入Redis,并在客户端设置一个Cookie携带Session ID。后续请求通过Cookie传递Session ID,服务器从Redis中查找对应...