`

分布式Session管理

 
阅读更多

分布式的Session管理:

 参考博文:  http://chenzhou123520.iteye.com/blog/1647186

 推荐博文 : http://blog.csdn.net/jacktan/article/details/6112806(基于zooKeeper的分布式session管理)

 

  是什么?

    就是在服务器端,不是只有一个服务器来处理你的请求,而是通过一个服务器集群;

    这样你可能这会在A服务器,等下一个请求又跳转到B服务器 ,如果session只是单独存在于

    A服务器中,那么第二次访问不就丢失前一次的数据了吗?所以,怎么在一个服务器集群的环境中

    保证session的同步 ,这就是分布式session管理要解决的问题。

 

  解决的问题?

       Session ID的共享 和 session数据的复制 : 当在服务器A中修改了Session 的数据,我们必须通过某种机制告知其他服务器!

      Session的失效 : 因为你无法保证分布式系统中时钟的一致性,中间可能相差几毫秒,几十毫秒,因为,你在服务器A中创建或更新了Session

      然后,你要又通知服务器B创建或更新,这中间明显是存在时差的!所以,可能你在服务器A中,session失效了,在服务器B中,session却仍然有效!

    

  

  怎么做?

     1. 客户端cookies保存:

           就是session信息不在服务端保存,每次请求都把session信息存入cookies , 这样下次请求,你就带着你的session信息到服务器了。

           存在问题: cookies长度限制, 必须对session数据加密处理 ,而且,客户端可能禁用cookies 。

     2. 服务器间session同步:

            这种方法,就是在每个服务间都保存了session数据;比如,我在A服务器登录,那么同样的,session数据就会copy到B服务器

            存在问题 : session数据是从A到B 的, 如果A 宕机 , 那么数据就会丢失,B中存的可能是过去的数据!服务器间耦合度太高,对于一个小型的集群还好,

            如果是一个超大型的集群,那么每一次的session修改或创建都要广播其他的服务器,可想而知,这是一件多么麻烦而且低效的事!

      3. 通过集群管理Session:

           这种方法,就是把session抽取出来,交给另一个专门的容器管理!这个容器是一个集群

            memcached-session-manager:

   他的特性:

支持 sticky sessions 和 non-ticky sessions 模式。
没有单点故障。
能处理 tomcat 故障转移
能处理 memcache 故障转移
pluggable session serialization
允许异步存储 session,提高响应速度
sessions 只有真正被修改时,才会发给 memcache

 

 

Sticky Sessions:粘性会话。即同一个会话中的请求必须被转发到同一个节点上,除非该节点宕机才转发到故障转移节点。一个节点宕机,所存储的 Sessions 完全丢失。通俗的话就是,将用户“粘”在某一个服务器节点上。
Non-Sticky Sessions:非粘性会话。每一次请求都可能转发到不同节点。
Replicated Sessions:把一个节点上的 Sessions 复制到集群的其他节点上,防止数据丢失,允许失效无缝转移。如node 0复制到node 5,node 1复制到node 6,以此类推。多数应用服务器(如 Tomcat )都支持会话复制机制。

 

            

                 

       

           

   4. 数据持久化到数据库

       每次都把session数据存入数据库,下次请求的时候,又从数据中,取出数据;

      存在问题:明显,涉及数据库的操作,效率低!

分享到:
评论

相关推荐

    zookeeper实现分布式session sample

    通过以上讲解,我们可以看到Zookeeper在分布式session管理中的作用,它提供了一种高效、可靠的解决方案,使得用户在分布式系统中能够享受到无缝的体验。结合适当的优化策略,可以在保证系统性能的同时,实现高效的...

    spring session redis分布式session

    为了解决这个问题,Spring Session提供了一种优雅的解决方案,特别是结合Redis作为持久化存储时,可以实现高效的分布式Session管理。本文将详细介绍Spring Session与Redis集成,以及如何自定义Session来应对分布式...

    基于ZooKeeper的分布式Session实现

    本文将深入探讨如何利用ZooKeeper实现分布式Session,并通过分析提供的"基于ZooKeeper的分布式Session实现.doc"文档,解析其实现原理与步骤。 首先,理解ZooKeeper的基本概念至关重要。ZooKeeper是一个高可用、高...

    微服务架构下分布式Session管理

    Session一词直译为“会话”,意指有始有终的一系列动作/消息。Session是Web应用蓬勃发展的产物之一,...Session管理正是上述问题的解决方案,把用户的信息与状态保存在Session中,弥补了Web应用中HTTP协议的不足。Sessi

    分布式Session解决方案.docx

    在分布式系统中,Session管理是一...总的来说,分布式Session管理是现代Web应用不可或缺的一部分,通过合理选择和实施解决方案,我们可以确保用户在多服务器环境下的体验连贯一致,同时保证系统的可扩展性和高可用性。

    分布式Session的一个实现.

    然而,当应用部署在多台服务器上时,单一服务器上的Session无法在其他服务器之间共享,这就导致了分布式环境下的Session管理问题。 解决这个问题的一种常见方法是使用分布式缓存,如Redis或Memcached。这两种工具...

    秒杀实战 redis nginx 分布式session-secKill.zip

    总的来说,这个项目为我们提供了一个实战的平台,让我们了解和实践如何在高并发的秒杀场景下,利用Redis缓存、Nginx反向代理和分布式Session管理来构建一个可扩展、可靠的系统。通过这个项目的学习,我们可以深入...

    distributed-session-manager:分布式session管理

    分布式Session管理是现代Web应用程序中解决用户Session存储和共享的关键技术。在大型的、高并发的Web应用系统中,单一服务器往往无法满足处理需求,这时就需要采用分布式部署,即多台服务器共同承载应用。然而,...

    43_说说你们的分布式session方案是啥?怎么做的?.zip

    分布式Session方案是现代大型Web应用中解决用户会话管理的关键技术。在单体应用时代,Session存储在服务器本地,但随着应用的分布式部署,这种模式不再适用,因为服务器集群之间无法共享Session数据,可能导致用户在...

    秒杀项目之服务调用&分布式session对应的完整项目

    秒杀项目是一个典型的高并发、低延迟的电商应用场景,它涉及到多个关键技术,包括服务调用和分布式Session管理。在这个项目中,我们主要关注如何在微服务架构下有效地处理这些问题。 一、服务调用 1. **API ...

    38. Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    通过以上步骤,我们就成功地在Spring Boot应用中实现了基于Redis的分布式Session管理。这种方式不仅解决了Session在分布式环境下的共享问题,还利用Redis的高性能特性提高了系统的可扩展性。在实际项目中,还可以...

    springboot+dubbo分布式架构,提供分布式缓存、分布式锁、分布式Session、读写分离

    缓存和Session:注解redis缓存数据,Spring-session和redis实现分布式session同步,重启服务会话不丢失。 数据同步:基于redis的分布式锁。 Web安全:实现XSS过滤和CSR过滤。 多系统交互:Dubbo,ActiveMQ多系统交互...

    分布式session 解决方案

    为了解决这一问题,有以下几种常见的分布式Session解决方案: 1. **Session复制同步**:所有Web服务器节点之间通过复制的方式同步Session。这种方式简单但效率低下,因为所有Session都要存储在每个服务器上,占用...

    分布式session方案

    然而,在分布式系统中,Session 的管理变得复杂,因为用户的请求可能会被分配到不同的服务器上。 第一种:粘性 Session 粘性 Session 是指将用户锁定到某一个服务器上,例如当用户第一次请求时,负载均衡器将用户...

    采用Memcached实现分布式Session所需的jar包

    综上所述,采用Memcached实现分布式Session能够有效解决高并发场景下的Session管理问题,提高系统的可用性和性能。正确配置和使用相关jar包,如spymemcached,是实现这一目标的关键。同时,要充分理解分布式Session...

    基于spring-cloud分布式session共享文档

    ### 基于Spring Cloud的分布式Session共享技术详解 #### 一、背景介绍 随着互联网应用的不断发展,传统的单体架构已经难以满足高并发、低延迟的服务需求。为了解决这些问题,越来越多的企业开始采用分布式系统架构...

    改进基于filter的远程分布式session存储

    标题 "改进基于filter的远程分布式session存储" 涉及的是在Web开发中关于Session管理的一个重要主题。Session是Web应用程序中用于跟踪用户状态的一种机制,通常存储在服务器端,以便在用户的不同请求之间保持其数据...

    简单了解4种分布式session解决方案

    分布式Session解决方案四:基于Token的Session管理 基于Token的Session管理是指使用 Token 来存储Session信息,客户端在每次请求时都需要带上 Token,服务器收到请求后,验证 Token 是否正确,如果正确,则返回相应...

Global site tag (gtag.js) - Google Analytics