分布式SESSION一致性

SESSION是服务器为客户端创建的一个会话,存储用户的相关信息,用以标识用户身份等。在单服务器环境下是不需要考虑会话的一致性的问题的,但是在集群环境下就会出现一些问题,假如一个用户在登录请求时负载均衡到了A服务器,A服务器为其分配了SESSION,下次请求数据时被分配到了B服务器,此时由于B服务器不存在此用户的SESSION,此用户会被重定向到登录页面,这种情况是不合理的业务逻辑,所以需要维护SESSION的一致性。

解决方案

SESSION 同步

多个服务器之间互相同步SESSION,即A服务器生成一个SESSION信息后同步传输到BCD等服务器,同样BCD服务器生成SESSION信息后也需要同步到A,这样每个服务器之间都包含全部的SESSION

优点

  • 大部分应用服务器都提供了SESSION复制的功能来实现集群

缺点

  • SESSION需要网络传输进行同步,其会占用带宽,并且存在一定的延迟
  • 一旦某台机器的SESSION信息有所变化,必须同步更新所有服务器SESSION内容
  • 每个服务器都会存储全部的用户信息,性能随着服务器增加急剧下降,而且容易引起广播风暴

SESSION 映射

通过将负载均衡服务器进行修改,通过对返回给用户的SESSION ID或者用户请求的IP地址进行标记,也就是使用第四层传输层中读取网络层的IP或者是在第七层中读取HTTP协议中某些属性来做HASH,保证对于此用户的请求全部落到同一台服务器上

优点

  • 实现相对简单
  • 只要分配服务器时均匀,则多台服务器是负载均衡的

缺点

  • 一旦某台服务器宕机,则会影响落在此服务器请求上的全部用户
  • 负载均衡服务器变为了一个有状态的节点,内存消耗会更大,容灾更麻烦

客户端存储

将数据直接存储到客户端比如Cookie或请求头中,每次请求客户端自动携带数据信息

优点

  • 简单,高效
  • 服务端不需要储存标记用户信息

缺点

  • 安全性较差,对于敏感信息必须加密
  • 每次请求可能携带大量数据,占用外网带宽
  • 数据存储在客户端就会存在泄密、篡改、窃取等隐患

后端集中存储

SESSION存储在一台单独的服务器中的数据库中,例如MysqlOracleSqlServerRedisMongodb等等,各SERVER服务器需要用户信息时携带SESSION ID对于集中存储服务器进行请求,进而获取用户信息

优点

  • 没有安全隐患
  • 可以方便的水平拓展
  • SERVER服务器重启不会造成SESSION丢失

缺点

  • 每次请求都增加了一次对于存储服务器的网络请求
  • 会对集中存储服务器存在大量请求,数据库压力比较大

每日一题

https://github.com/WindrunnerMax/EveryDay

参考

https://www.jianshu.com/p/5caed857dc3e
https://www.cnblogs.com/study-everyday/p/7853145.html

分布式SESSION一致性相关推荐

  1. 分布式Session一致性概述

    分布式Session一致性问题 什么是SessionSession 是客户端与服务器通讯会话技术, 比如浏览器登陆.记录整个浏览会话信息 分布式SESSION一致性的问题,分布式SESSION到底如何 ...

  2. 分布式 Session 一致性解决方案

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 cnblogs.com/SimpleWu/p/10118674.html 推荐: ...

  3. php分布式session问题,分布式session一致性问题

    1,什么是session session 是客户端与服务器通讯会话技术,比如用户登陆,会将登陆之后,将用户信息存入在session中 2,session 的原理 3,简单的session 例子 @Re ...

  4. 分布式session一致性问题

    传统的网站结构(并发量不大,没有session的不一致的问题. 传统的网站结构图:    **结论:**从图中可以看出在传统的网站结构中,所有的客户端都连接一个服务器,每个客户端发送过来的请求都被该服 ...

  5. 4种分布式session解决方案

    cookie和session的区别和联系 cookie是本地客户端用来存储少量数据信息的,保存在客户端,用户能够很容易的获取,安全性不高,存储的数据量小 session是服务器用来存储部分数据信息,保 ...

  6. Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架

    Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session import tornado.ioloopimport tornado.webfrom myhash ...

  7. Tornado自定义分布式session框架

    Tornado自定义分布式session框架 一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在 ...

  8. session一致性架构设计极简教程

    一,缘起 什么是session? 服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文. Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建se ...

  9. 分布式事务、分布式锁、分布式session

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | cnblogs.com/heqiyoujing ...

最新文章

  1. qstudio c语言中文网,再整理:Visual Studio Code(vscode)下的通用C语言环境搭建
  2. printf 格式输出代码大全
  3. 两个service事务统一_拜托,别再让我优化大事务了,我的头都裂了
  4. 判断RDD有多少个分区
  5. centos 修改密码_openstack Train版部署——基于centos系统(四)
  6. SpringBoot默认日志配置输出级别
  7. cdh中hue集成hbase_HBase版本 | Cloudera Enterprise 6.2.0发布
  8. 使用Image.GetThumbnailImage 方法返回缩略图
  9. hive 操作(五)——常用内置函数
  10. JavaWeb知识点
  11. 随机数和随机数种子——学不会找我
  12. Chapter9:Simulink建模与仿真
  13. 基于STM32CubeMX在STM32F072C8T6移植Contiki OS
  14. 利用imageai做一个物体检测系统
  15. 栈帧 stack frame
  16. 什么是monitor
  17. matlab中format使用方法
  18. 计算机d盘可以格式化吗,能将电脑的D盘直接格式化了吗
  19. NYOJ 20 吝啬的国度(深搜)
  20. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?...

热门文章

  1. gRPC入门教程汇总
  2. 关于服务网关的几个问题
  3. Ansible的简单使用
  4. 招聘笔记:机器学习基础知识(19道题,有参考答案)
  5. 使用NGUI来制作技能的CD冷却效果
  6. 一个想法(续四):IT技术联盟创业众筹进度公示
  7. iscroll.js 下拉刷新和上拉加载
  8. 关于BaseAdapter在listView中的使用
  9. 搭建你的持续集成server - CruiseControl step by step(1)
  10. 在iPhone程序上读取PDF文件