集群中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。
- 浏览: 1694033 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (1323)
- easyui学习 (21)
- jquery (51)
- css (21)
- js (103)
- html (19)
- java (95)
- 测试工具 (7)
- oracle (45)
- eclipse (9)
- spring (8)
- 开源框架 (111)
- struts (12)
- hsqlbd (2)
- h2database (2)
- maven (8)
- activiti (2)
- sql语句 (7)
- fmpp (1)
- apache (2)
- tomcat (6)
- jbpm (2)
- ant (20)
- mysql (10)
- 业务需求 (54)
- ralasafe (3)
- Quartz (4)
- mybatis (8)
- flex (6)
- html5 (16)
- apache工具 (4)
- hibernate (5)
- linux (109)
- powerdesigner (3)
- 报表 (1)
- log4j (2)
- junit (1)
- shiro (4)
- wap (3)
- php (28)
- mantis (1)
- poi (3)
- extjs (1)
- 安防 (34)
- 网络 (113)
- UltraEdit (1)
- 手机 (9)
- freemarker (19)
- jquery mobile (28)
- css3 (1)
- 微信 (9)
- nodejs (7)
- 项目管理 (14)
- 文档 (13)
- ibatis (22)
- ftp (3)
- spring MVC (9)
- groovy (2)
- AngularJS (19)
- nginx (15)
- 会计 (5)
- hive (1)
- 分布式 (8)
- 设计模式 (4)
- velocity (2)
- 爬虫 (2)
- git (1)
- thymeleaf (4)
- activemq (5)
- bootstrap (1)
- Spring Batch (1)
- memcache (20)
- ttserver (1)
- Jenkins (1)
- cxf (1)
- axure (2)
- 银行金融 (11)
- c语言 (2)
- 大数据 (4)
- drools (4)
- python (2)
- 交易所 (1)
- haproxy (1)
- dubbo (3)
- dos (3)
- 人力资源 (4)
- 支付 (1)
- Intellij IDEA (1)
- IPO (1)
- springboot (1)
- 质量管理 (7)
- svn (1)
- 其他 (8)
- 阿里云 (2)
- 多媒体设计 (2)
- 数据库 (4)
- wps (0)
最新评论
-
masuweng:
en
Native.js -
rmnjava:
我按照你的方法写的,不起作用啊
easyui验证的删除和恢复 -
rmnjava:
原地址打不开了呀
easyui验证的删除和恢复 -
sunteng:
sunteng 写道这是json 吗[{url:'aaa'}, ...
freemarker解析json数组 -
sunteng:
这是json 吗
freemarker解析json数组
发表评论
-
Lombok
2019-04-10 13:52 319Lombok能以简单的注解 ... -
Dozer
2019-04-08 13:49 285Dozer是一种Java Bean到Java Bean的映射 ... -
Spring security框架
2019-04-02 11:20 309一个能够为基于Spring的企业应用系统提供声明式的安全訪问控 ... -
java中常用的对象类型(po,vo,bo)
2018-04-25 10:34 403PO(persistant object) 1.持久对象 ... -
HikariCP
2018-03-12 08:22 862http://brettwooldridge.github. ... -
Amoeba Mysql读写分离
2018-03-07 11:37 392Amoeba(变形虫)项目,专 ... -
UnicastRemoteObject.exportObject使用
2018-03-01 13:45 1540public class CalculatorServ ... -
Spring对RMI的支持
2018-03-01 13:18 461public class SimpleObject { ... -
RMI使用
2018-03-01 12:50 354搭建一个RMI服务的过程分为以下7步; 1,创建远程方法接 ... -
volatile关键字
2018-02-28 13:13 326volatile关键字的两层语义一旦一个共享变量(类的成员变量 ... -
Jackson简单封装
2017-09-15 09:20 1010import java.io.IOException ... -
Http与Servlet工具类
2017-09-15 09:14 688/** * Http与Servlet工具类. ... -
金额格式转换
2017-09-15 09:21 571import java.math.BigDec ... -
日期工具类
2017-09-14 09:27 334public static String form ... -
编码解码工具类
2017-09-14 09:24 717import java.io.UnsupportedE ... -
Properties文件工具类
2017-09-14 08:59 575import java.io.IOExcepti ... -
全角转半角
2017-09-14 08:51 454/** * 全角转半角 * ... -
UUIDGenerator生成唯一编码
2017-09-14 08:46 1333生成唯一编码 import java.net.Ine ... -
ip转换为long
2017-09-12 17:27 1149public class IpUtils { pu ... -
https证书问题
2017-08-23 08:42 599https用于绕过证书不对情况 import java.n ...
相关推荐
以下是对集群中几种session同步解决方案的详细比较: 1. **Session复制**: 这是最基础的策略,所有服务器都复制一份相同的session数据。当一个服务器接收到更新session的请求时,它会将更新广播到集群中的其他...
### 集群中几种session同步解决方案的比较 在分布式系统和集群环境中,session管理是一项关键技术,它确保了用户在不同服务器之间的交互能够保持一致性。本文将深入探讨六种常用的session共享方法,包括它们的工作...
本实践将探讨几种在Web项目集群中实现Session共享的策略。 1. **基于数据库的Session共享** - Session信息可以持久化到数据库中,每当用户操作导致Session变化时,更新数据库记录。 - 优点:数据可靠,不会因...
但在集群环境中,由于请求可能会被路由到不同的服务器,若不进行特殊处理,每台服务器将拥有独立的session,导致用户信息无法同步。为了解决这个问题,通常会采用以下几种策略: 1. **Cookie粘滞(Session Sticky)...
2. **选择session复制策略**:Tomcat提供了几种session复制策略,包括基于内存的复制和基于JDBC的复制。在这个场景下,我们将采用基于第三方存储的策略,即使用`org.apache.catalina.session.PersistentManagerBase`...
为了解决这个问题,Session复制技术应运而生,它使得Session数据能够在集群内的所有服务器之间同步,从而保证了无论哪个服务器处理用户请求,都能获取到完整的Session信息。 ### Session复制的实现方式 #### 1. **...
在Tomcat5集群中,Session复制可以通过以下几步实现: 1. 在每个服务器节点上配置SessionManager,以便在服务器之间复制Session数据。 2. 使用IP多点传送或IP sockets实现服务器之间的通讯。 3. 在服务器之间复制...
当用户在集群中的不同节点之间跳转时,会导致`session`丢失。为了解决这个问题,我们可以利用`Redis`作为`session`的中央存储库,实现跨服务器的`session`同步。 首先,我们需要在`Tomcat`中集成`Redis`。这通常...
以下是几种常见的Tomcat集群Session共享方案,包括其实现过程、优缺点和可能遇到的问题。 1. **基于Cookie+Redis+Filter解决方案** - 实现过程:用户登录后,将Session ID与用户信息存入Redis,并在客户端设置一个...
Tomcat7提供了几种session共享策略,包括以下几种常见方法: 1. **JVM-RMI**:这是Tomcat默认的session复制方式。每个服务器都将session对象复制到其他服务器,通过Java远程方法调用(RMI)实现。这种方式简单易用...
为了解决这一问题,有以下几种常见的分布式Session解决方案: 1. **Session复制同步**:所有Web服务器节点之间通过复制的方式同步Session。这种方式简单但效率低下,因为所有Session都要存储在每个服务器上,占用...
在现代Web应用中,Session同步是确保用户状态在集群环境中一致性的关键。当一个应用部署在多台服务器上时,传统的session管理方式可能会导致数据不一致。为了解决这个问题,我们可以使用分布式缓存系统,如memcached...
3. **Session复制**:Tomcat使用`org.apache.catalina.ha.session.DeltaManager`作为默认的集群session管理器,它负责在集群节点间同步session数据。DeltaManager使用序列化将session对象在节点间传输。 4. **...
在Java开发中,常见的分布式Session实现方式有以下几种: 1. **Session复制**:这是一种简单的策略,即在集群中的每个节点都复制一份完整的Session数据。每当Session发生变化时,都会广播给其他节点。但是,这种...
有以下几种实现方式: - **cookie复制**:将session ID存储在cookie中,每次请求时,用户携带session ID到达任意节点,节点根据ID查找session。 - **共享内存**:所有Tomcat实例共享同一内存区域,session存储其中,...
8. **Session服务器**:同样使用`NFS`,存储和管理用户的会话信息,确保用户在集群中的任何服务器间切换时,会话信息得以保持。 【数据库集群部署方案】 数据库集群是为了解决单个数据库服务器的性能瓶颈和可用性...
4. 需要确保 Tomcat 集群中所有节点的时钟同步,以便 Session 数据的传输正确。 Tomcat 之间的 Session 共享有很多优点,包括: 1. 提高了系统的可用性,因为用户的登录状态可以在多个 Tomcat 实例之间共享。 2. ...
Spring Session提供了一种统一的会话管理机制,可以将session数据存储在集中式存储如Redis中,解决了跨域、集群环境下的session同步问题。 Redis则是一个高性能的键值数据库,常被用作缓存和消息代理。在本案例中,...
- **HA-JNDI**:高可用的Java Naming and Directory Interface,它负责在集群中同步JNDI命名空间,包括Session绑定的bean。 - **Infinispan**:JBoss的内存数据网格,它支持缓存和分布式存储,可以用于Session的...
为了解决这个问题,有以下几种Tomcat Session共享策略: 1. **负载均衡服务器提供的Session共享**:某些硬件负载均衡器提供此功能,但Nginx不支持。 2. **Web容器自身的Session共享策略**:Tomcat可以配置集群模式...