分布式session实现方式

当一个传统的Web项目需要从单点扩张成为集群式时候,需要考虑的一个问题:分布式Session的实现。通常分布式session有三种解决方式,现对三种方式进行简单记录:

1.session广播

顾名思义,广播就是在集群里的所有服务器将他们的session向其他服务器进行同步,使得每一台服务器上都有其他服务器的session信息,这样,不管请求进入那个服务器,都可以获取session信息。这种方式从理解和实现方面都比较简单,同时避免了单点故障引起的session丢失问题。但是因为广播是多台服务器同步的过程,会有一定的延时性,所以只适用于集群规模小,网络开销小的情况。

2.粘性session

这是一种指定session的方法,在集群的路由处对所有的请求做出指定服务器的分发,使得某个携带session的请求每次都进入同一台后端服务器。这种方式没有额外的网络开销,适用于中等规模的集群,但是由于每条请求都对应一个服务器,所以当有服务器Down机时,相应的session会丢失,出现单点故障。

3.缓存集中式管理

将session信息单独取出,所有的session信息都放在指定缓存中进行集中式管理,所有携带session的请求都会先进入这里处理,然后向后端服务器进行相应的分发。通常使用的缓存有memcache、redis等。这种方式使用于大型集群,方便增加集群节点,但稳定性性依赖于缓存的稳定性,需要有合理的写入策略,避免缓存失效后session丢失。

时间: 2024-10-23 19:55:08

分布式session实现方式的相关文章

关于分布式Session 的几种实现方式

分布式Session的几种实现方式 1.基于数据库的Session共享 2.基于NFS共享文件系统 3.基于memcached 的session,如何保证 memcached 本身的高可用性? 4. 基于resin/tomcat web容器本身的session复制机制 5. 基于TT/Redis 或 jbosscache 进行 session 共享. 6. 基于cookie 进行session共享 介绍下常用的分布式Session 实现 1. Session Replication 方式管理 (

分布式session的几种实现方式

1.基于数据库的session共享 2.基于NFS共享文件系统 3.基于memcached 的session,怎么保证session的高可用 4.基于resin/tomcat web容器本身的session复制机制 5.基于TT/Redis 或 jbosscache 进行 session 共享. 6.基于cookie 进行session共享 <1.> Session Replication 方式管理 (即session复制)         简介:将一台机器上的Session数据广播复制到集群

[转]分布式session的几种实现方式

我们应当对产生的Session进行处理,通过粘性Session,Session复制或Session共享等方式保证用户的体验度. 以下我将说明5种Session处理策略,并分析其优劣性. 第一种:粘性session 原理:粘性Session是指将用户锁定到某一个服务器上,比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,如果负载均衡器设置了粘性Session的话,那么用户以后的每次请求都会转发到A服务器上,相当于把用户和A服务器粘到了一块,这就是粘性Session机制.

基于ZooKeeper的分布式Session实现(转)

1.   认识ZooKeeper ZooKeeper—— “动物园管理员”.动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏.为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才 能更加放心安全的观赏动物.回到我们企业级应用系统中,随着信息化水平的不断提高,我们的企业级系统变得越来越庞大臃肿,性能急剧下降,客户抱怨频频.拆 分系

基于ZooKeeper的分布式Session实现

基于ZooKeeper的分布式Session实现 1.   认识ZooKeeper ZooKeeper—— “动物园管理员”.动物园里当然有好多的动物,游客可以根据动物园提供的向导图到不同的场馆观赏各种类型的动物,而不是像走在原始丛林里,心惊胆颤的被动 物所观赏.为了让各种不同的动物呆在它们应该呆的地方,而不是相互串门,或是相互厮杀,就需要动物园管理员按照动物的各种习性加以分类和管理,这样我们才 能更加放心安全的观赏动物.回到我们企业级应用系统中,随着信息化水平的不断提高,我们的企业级系统变得越

Spring Session解决分布式Session问题的实现原理

使用Spring Session和Redis解决分布式Session跨域共享问题 上一篇介绍了如何使用spring Session和Redis解决分布式Session跨域共享问题,介绍了一个简单的案例,下边就学习一下Spring Session的实现原理. 注:以下步骤是基于XML的方式实现 Spring Session的代码讲解! 先从web.xml文件说起 我们知道Tomcat再启动的时候首先会去加载web.xml 文件,Tomcat启动的时候web.xml被加载的顺序:context-pa

可扩容分布式session方案

分布式session有以下几种方案: 1. 基于nfs(net filesystem)的session共享 将共享服务器目录mount各服务器的本地session目录,session读写受共享服务器io限制,不能满足高并发. 2. 基于关系数据库的session共享 这种方案普遍使用.使用关系数据库存储session数据,对于mysql数据库,建议使用heap引擎. 这种方案性能取决于数据库的性能,在高并发下容易造成表锁(虽然可以采用行锁的存储引擎,性能会下降),并且需要自己实现session过

HttpServletRequestWrapper模拟实现分布式Session

HttpSession的内容都放在一个单独的Map中,模拟远程分布式Session. 1.使用HttpServletRequestWrapper创建自定义Request2.使用动态代理包装自定义Request返回的HttpSession对象3.创建过滤器,使用自定义Request替换原有的Request对象.4.在Servlet中得到的HttpSession对象,写入和读取内容都假设通过远程Session服务器. 创建自定义的Request,返回动态代理的HttpSession import j

网站Session 处理方式

分布式session有以下几种方案: 1. 基于nfs(net filesystem)的session共享 将共享服务器目录mount各服务器的本地session目录,session读写受共享服务器io限制,不能满足高并发. 2. 基于关系数据库的session共享 这种方案普遍使用.使用关系数据库存储session数据,对于mysql数据库,建议使用heap引擎. 这种方案性能取决于数据库的性能,在高并发下容易造成表锁(虽然可以采用行锁的存储引擎,性能会下降),并且需要自己实现session过