`

分布式Session概述

 
阅读更多

一、高并发下分布式Session需解决的问题:                                   

1.透明处理存储介质的故障转移

2.动态增删节点,减小“缓存颠簸”问题

3.保证数据在各个节点的分布均衡

4.Session 序列化和反序列化

 

二、保证“基本可用 Basically Available”的分布式Session方案               

Eric A. Brewer 1988 年提出的 BASE 策略,即 Basically AvailableSoft state、和Eventually consistent。互联网大多数应用更强调可用性,即牺牲高一致性,获得可用性或可靠性。

基本可用 Basically Available 的定义:

在分布式系统部分损坏的时候,允许部分内容不可用,但是其他部分仍旧可用。因此称这种系统为“基本可用”。比如,一个数据存储系统由 五个节点构成。其中一个发生了损坏,这时只有20%的数据不能访问,其他80%数据仍然可用。那么就可以称这种系统为基本可用的。

基于 MemcacheHash取模算法(hash() mod nhash() 取用户IDn为节点数) 实现的分布式 Session 方案,就属于基本可用:

1.如果节点发生故障,该节点上的所有用户 Session 丢失,系统无法自恢复。

2.如果系统压力突然增大,需要临时增加机器节点。按照 Hash取模的算法,在增加机器节点的这一时刻,大量缓存无法命中(其实还都存在之前的节点上),导致大范围的缓存穿透,压力会直接打到数据库上。

3.根据 LRU 缓存失效算法,memcache 里存储的 key/value 有可能被踢出,用户 Session 容易丢失。

 

针对 MemcacheHash取模 的改进办法是:

三、基于一致性哈希算法的Memcache解决方案                                  

1.一致性哈希帮我们解决的是,当机器节点减少时,缓存数据能进行最少重建。

2.还能解决 Session 数据的分布均衡问题。

3.当机器节点宕机,这部分数据必然丢失。由于节点数目变化,有可能对部分没有丢失的数据也要重建。

但上面的方案都解决不了“一个节点失败后,它所存储的 Session 如何由其他节点获取以便接替失效节点,实现集群的容错(Failover)”。

 

先介绍下面几个概念:

四、Sticky SessionNon-sticky SessionReplicated Sessions               

Sticky Sessions:粘性会话。即同一个会话中的请求必须被转发到同一个节点上,除非该节点宕机才转发到故障转移节点。一个节点宕机,所存储的 Sessions 完全丢失。通俗的话就是,将用户“粘”在某一个服务器节点上。

Non-Sticky Sessions:非粘性会话。每一次请求都可能转发到不同节点。

Replicated Sessions:把一个节点上的 Sessions 复制到集群的其他节点上,防止数据丢失,允许失效无缝转移。如node 0复制到node 5node 1复制到node 6,以此类推。多数应用服务器(如 Tomcat )都支持会话复制机制。

解决session共享问题大体上有以下几种处理方式:

   1session复制,这种方式在大访问量下tomcat会挂掉

   2、使用tomcat6以上自带的tcp组广播方式的集群,这种方式在我使用过程中发现有时会丢失session

   3、使用数据库、缓存方式实现。

下一篇文章将介绍使用memcached存取Session的解决方案。

 

 

分享到:
评论

相关推荐

    SpringbootWebLearning:Spirngboot+Mybatis+Redis Web应用开发案例

    redis是当前十分流行的分布式key-value型数据库,在web开发中,常用作缓存、分布式session等。 该仓库是基于以上技术的一个web开发案例,使用Spring boot快速构建web应用,采用Mybatis作为ORM框架,并使用redis作为...

    基于javatcpsocket通信的拆包和装包源码-distributed:分散式

    分布式架构概述 大数据:数据分析 用户行为 兴趣爱好 活动运营用户画像 1、分布式 (任务分解、节点通信) 一个业务拆分成多个子系统,部署在不同的服务器上(相互调用)。 去IOE IBM小型机 、 Oracle Rac、 EMC存储...

    Hibernate缓存

    Hibernate缓存讲解PPT 1.Hibernate缓存概述 2.Hibernate一级缓存(Session缓存) 3.Hibernate二级缓存 4.查询缓存 5.二级缓存的高级应用(分布式缓存)

    Hibernate缓存深入详解

    Hibernate缓存深入详解,详细介绍Hibernate缓存机制。 1.Hibernate缓存概述 2.Hibernate一级缓存(Session缓存) 3.Hibernate二级缓存 4.查询缓存 5.二级缓存的高级应用(分布式缓存)

    JAVA高并发高性能高可用高扩展架构视频教程

    session跨域共享 JAVANIO原理详解 高并发数据库(Mysql数据库性能优化) 软件质量管控 企业常用框架springMVC基于注解+xml配置方式实现链接 WEB服务器优化之Tomcat7性能调优 JVM概述 Java开发技术之(项目工程的日志...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    4.2.2 分布式事务处理、XA规范和 2PC协议 192 4.2.3 使用JTA全局事务保证多 数据库的一致性 193 4.3 事务隔离、传播属性的设置 198 4.3.1 并发访问和隔离 198 4.3.2 事务属性 199 4.4 EJB的事务管理 201 4.4.1 容器...

    J2EE开发全程实录(JAVA项目开发)

    第6章 基于Spring的多层分布式 应用.... 71 6.1 概述... 71 6.2 Spring Remoting. 72 6.2.1 Hessian使用演示... 72 6.2.2 几种Remoting实现的比较... 75 6.3 改造HttpInvoker 75 6.3.1 服务文件的分模块化... 82 ...

    xmljava系统源码-jpassport:token登录模块,SpringBoot2.App的用户登陆后台

    在分布式环境中,因为站点是集群的,不可能使用tomcat的session来保存用户的登录状态。微服务架构也需要 做成无状态的服务,这就需要token机制来做用户权限校验了。 这里,基于Spring的Interceptor来拦截指定的需要...

    ASP3《高级编程》(第一部分)

    3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5 活动中的ASP Session对象 93 3.4 小结 96 第4章 服务器进程和ASP Server对象 98 ...

    ASP3《高级编程》(第二部分)

    3.3.2 ASP的Session对象成员概述 85 3.3.3 使用Application和Session的事件 86 3.3.4 活动中的ASP Application对象 89 3.3.5 活动中的ASP Session对象 93 3.4 小结 96 第4章 服务器进程和ASP Server对象 98 ...

    亮剑.NET深入体验与实战精要2

    15.4.9 Memcached——分布式缓存系统 560 15.4.10 Cacheman——.NET架构 下的分布式缓存项目 561 15.5 数据库访问性能优化 562 15.5.1 选择合适的.NET数据供应器 563 15.5.2 及时地关闭数据库连接 563 15.5.3 跟踪...

    亮剑.NET深入体验与实战精要3

    15.4.9 Memcached——分布式缓存系统 560 15.4.10 Cacheman——.NET架构 下的分布式缓存项目 561 15.5 数据库访问性能优化 562 15.5.1 选择合适的.NET数据供应器 563 15.5.2 及时地关闭数据库连接 563 15.5.3 跟踪...

    informix 实用大全

    6.11 session菜单(仅适用于dbaccess) 6.12 form菜单(仅适用于isql) 6.13 report菜单(仅适用于isql) 6.14 user-menu菜单(仅适用于isql) 6.15 更多信息 6. 16 informix与其他参考资料 第7章 informix与数据...

    ASP.NET Night Words

    2.4 session对象 14 2.5 cookie对象 15 .2.6 application对象 16 2.7 viewstate对象 18 2.8 [%%]表达式 20 2.9 [%=%]表达式 20 2.10 目录运算符 22 2.11 总结 22 第3章 表单和控件 23 3.1 html表单的提交...

    md格式编写的良心教程 Python 100天从新手到大师 共100个完整源文件 含课程源代码.rar

    Day21-30\21-30.Web前端概述.md Day31-35\31-35.玩转Linux操作系统.md Day36-40\36-38.关系型数据库MySQL.md Day36-40\39-40.NoSQL入门.md Day41-55\41.Django快速上手.md Day41-55\42.深入模型.md Day41-55\43.静态...

    sap R/3 业务蓝图——理解业务过程参考模型2

    14.3.2 Session Manager 178 14.3.3 企业的组织 180 14.4 采用R/3中的参考模型 182 14.4.1 业务对象模型 183 14.4.2 面向对象的数据模型 183 14.4.3 业务过程模型 184 14.4.4 工作流模型 187 14.5 实施R/3的...

    《程序天下:J2EE整合详解与典型案例》光盘源码

    1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (2)

    1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 ...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    1.4.10 JMX(Java分布式管理) 1.4.11 JACC(Java容器授权合同) 1.4.12 JCA(Java连接器体系) 1.5 小结 第二章 MVC模式介绍 2.1 MVC模式概述 2.1.1 MVC模式的设计思想 2.1.2 MVC模式的处理过程 2.2 Model规范 ...

Global site tag (gtag.js) - Google Analytics