在集群中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。
问题:terracotta的HA本身进行数据复制性能如何?
相关推荐
### 集群中几种session同步解决方案的比较 在分布式系统和集群环境中,session管理是一项关键技术,它确保了用户在不同服务器之间的交互能够保持一致性。本文将深入探讨六种常用的session共享方法,包括它们的工作...
2. **选择session复制策略**:Tomcat提供了几种session复制策略,包括基于内存的复制和基于JDBC的复制。在这个场景下,我们将采用基于第三方存储的策略,即使用`org.apache.catalina.session.PersistentManagerBase`...
Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:这是Tomcat默认的session复制方式。每个服务器都将session对象复制到其他服务器,通过Java远程方法调用(RMI)实现。这种方式简单易用...
总之,通过合理配置Tomcat集群和使用Redis作为session存储,我们可以实现跨服务器的session共享,确保用户在多台服务器间的会话一致性。这个压缩包提供了一个预配置的解决方案,对于快速搭建和测试session共享环境...
以下是几种常见的Tomcat集群Session共享方案,包括其实现过程、优缺点和可能遇到的问题。 1. **基于Cookie+Redis+Filter解决方案** - 实现过程:用户登录后,将Session ID与用户信息存入Redis,并在客户端设置一个...
1. **Tomcat自带的Cluster方式**:利用JGroups框架实现节点间的session同步。这种方式简单易用,但效率较低,不适合高并发环境。 2. **DNS轮询**:通过DNS服务器将请求轮流分配给不同的Tomcat实例。优点是配置简单...
在构建高性能、高可用性的Web应用系统时,Apache与Tomcat的集群配置是常见的解决方案。Apache作为前端服务器,可以通过负载均衡技术将用户请求分发到多个后端的Tomcat实例上,实现请求的分担,同时通过session同步,...
在高流量或需要高可用性的环境中,集群是一个必要的解决方案。 集群的基本思想是将负载分散到多个服务器上,当一个服务器出现故障时,其他服务器可以接管其工作,确保服务不中断。在Apache Tomcat中,集群可以通过...
为了解决这个问题,需要使用 Tomcat 内置的 Session 复制方案。 Session 复制方案的实现主要是通过在 server.xml 配置文件中添加 Cluster 节点和在 web.xml 配置文件中添加 distributable 节点来实现的。Cluster ...
总结一下,这个压缩包提供的jar文件是解决Tomcat8集群环境下的session共享问题的关键,它支持两种流行的分布式缓存解决方案——Memcache和Redis。开发者可以根据实际需求和环境,选择合适的方式实现session的高效、...
"memcached+tomcat的session共享"就是解决这个问题的一种常见方案。 Memcached是一款高性能、分布式的内存对象缓存系统,它能够将数据存储在内存中,从而提高数据访问速度。Tomcat则是一款广泛使用的Java应用服务器...
为了解决这个问题,有以下几种Tomcat Session共享策略: 1. **负载均衡服务器提供的Session共享**:某些硬件负载均衡器提供此功能,但Nginx不支持。 2. **Web容器自身的Session共享策略**:Tomcat可以配置集群模式...
由于Redis支持多种数据结构,如字符串、哈希、列表、集合和有序集合,因此它可以作为高效的Session存储解决方案。 实现Tomcat 6和Redis的Session共享主要通过以下步骤: 1. **安装与配置Redis**:在服务器上安装...
- **MSM**是一个专为Tomcat设计的Session共享解决方案,它可以将Session数据存储在Memcached中,以提高系统的可用性和扩展性。 - **特性**包括但不限于: - 支持多种版本的Tomcat(如6、7、8)。 - 支持黏性和非...
在讨论Tomcat实现session共享时,我们首先要理解session的概念和它在网络应用中的作用。Session是一种在服务器端...当然,在考虑实现这些技术之前,还需要评估和理解这些解决方案的性能影响,并进行适当的性能测试。
Java_session共享配置主要涉及到Web应用中的会话管理,特别是如何在多服务器环境下保持用户会话的一致性。这里提到的几个jar文件是实现这一目标的关键组件...这样的解决方案对于大型、高并发的互联网应用来说尤为重要。
这种解决方案特别适用于大型互联网应用,它能够有效地减少服务器负载,提高用户访问速度,并且在分布式环境中保证用户状态的一致性。在实际操作中,还需要根据具体需求进行优化,例如设置合适的Session过期策略、...
要实现在Tomcat中的Session共享,通常采用以下几种方式: 1. **共享内存**:通过在所有服务器间共享一个内存区域来存放Session数据。这种方式需要特定的硬件支持,例如使用Infinispan或Gemfire等分布式缓存系统。 ...
在IT行业中,尤其是在服务器端应用开发中...总之,"Tomcat8 + Redis 共享jar包"是一种高效的会话共享解决方案,适用于需要在多服务器集群中运行Java Web应用的情况。通过合理配置,可以显著提升应用的性能和用户体验。
Spring Session提供了一种集群环境下的Session管理解决方案,可以将Session数据存储到Redis中。通过引入Spring Boot的starter-redis依赖,可以轻松地在Spring Boot应用中启用Redis作为Session存储,并确保不同服务器...