分布式session的问题
问题:为什么会产生session不同步的问题?
实际生产场景中,一定是多台后端的服务器通过Nginx进行反向代理然后实现负载均衡,Nginx实现负载均衡的手段就是通过不同比重或者相同比重的轮询来实现访问量在不通服务器之间的平衡,这就会有这样的场景:
用户输入用户名密码之后成功登录了,这时候在服务端的拦截器成功创建了一个session,并保存在了A服务端,而该用户下一步点击个人主页时,发送的请求按照Nginx的轮询机制分配到了B服务器去响应,而B服务器并没有当前用户的session,所以拦截器会判断该用户未登录,导致无法进入。
分布式session如何解决(四种解决方案)
方案一:Session复制
多个服务端将session全部都复制一份,产生大量冗余,导致服务端性能降低。
优点:无需修改代码,只需要修改Tomcat配置
缺点:1)session同步传输占用内网贷款
2)多台Tomcat同步新能降低
3)session占用内存,无法有效水平扩展
方案二:前端存储
优点:不占用服务器内存
缺点:1)存在安全风险
2)数据大小受cookie限制
3)占用外网带宽
方案三:Session粘带
优点:无需代码修改、服务器可以水平拓展
缺点:1)增加新机制、会重新hash、导致重新登录
2)应用重启、需要重新登陆
方案四:后端集中存储(存储到后端的共享空间中Redis)
优点:安全、容易水平扩展
缺点:增加复杂度、需要修改代码
分布式session的问题相关推荐
- 170222、使用Spring Session和Redis解决分布式Session跨域共享问题
使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...
- 分布式session一致性问题
传统的网站结构(并发量不大,没有session的不一致的问题. 传统的网站结构图: **结论:**从图中可以看出在传统的网站结构中,所有的客户端都连接一个服务器,每个客户端发送过来的请求都被该服 ...
- Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并 ...
- Tornado自定义分布式session框架
Tornado自定义分布式session框架 一.session框架处理请求执行的流程: 1.服务器端生成随机的cookie字符串 2.浏览器发送请求,服务器将cookie返回给浏览器. 3.服务器在 ...
- postman怎么传session_十几行代码实现分布式 Session
前言 最近喊同事吃饭的时候他在测接口,于是我就在他后面等了一会.他测的是一个需要登录的接口,步骤如下 1.先登录系统从接口的request head中拿到cookie的值 2.把这个cookie的值粘 ...
- 分布式session之token解决方案实现
分布式session之token解决方案实现 参考文章: (1)分布式session之token解决方案实现 (2)https://www.cnblogs.com/toov5/p/9904317.ht ...
- 分布式事务、分布式锁、分布式session
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | cnblogs.com/heqiyoujing ...
- .Net Core添加分布式Session
一.Session HTTP是一个无状态协议,Web服务器将每一个请求都视为独立请求.并且不保存之前请求中用户的值. Session 状态是ASP.NET Core提供的一个功能,它可以在用户通应用访 ...
- ASP.NET WebApi 基于分布式Session方式实现Token签名认证
一.课程介绍 明人不说暗话,跟着阿笨一起学玩WebApi!开发提供数据的WebApi服务,最重要的是数据的安全性.那么对于我们来说,如何确保数据的安全将会是需要思考的问题.在ASP.NETWebSer ...
- redisson集成spring-session和shiro实现分布式session
一.pom <!-- Shiro权限验证 --><dependency><groupId>org.apache.shiro</groupId><a ...
最新文章
- Spring实战之二:装配Bean
- 谷歌市场上架aab安装包的各种坑
- java filereader blob_二进制学习——Blob,ArrayBuffer、File、FileReader和FormData的区别
- [译]使用DOT语言和GraphvizOnline来可视化你的ASP.NETCore3.0终结点01
- Prometheus监控学习笔记之PromQL简单示例
- ipoo3可以用鸿蒙,vivo新机入网!支持44W快充 配置与iQOO Neo3类似
- iOS-Senior19-FMDB第三方应用
- 1.shell脚本编程——基础篇(一)
- excel做地图热力图_我做了一个傻瓜式热力图生成工具
- 函授计算机在线考试答案,函授大学计算机基础期末考试试题及答案.doc
- 红帽wps linux安装包,rhel6(centos)安装WPS最新版
- 小米笔记本Pro黑苹果10.15.2不需要外焊USB接蓝牙,完美支持airdrop、接力、随航
- 笔趣看小说Python3爬虫抓取
- 为什么有的已备案域名的备案会被注销?
- 坐标系、欧拉角、旋转矩阵、四元数
- 【松岩早盘视点】2019-9-19
- sql 获取某年 某月的数据
- 最新PTCMS小说站系统源码+带采集/会员机制/收费机制
- c语言金字塔输出乘法表,python中打印金字塔和九九乘法表的几种方法
- 数据蒋堂 | 中国报表漫谈
热门文章
- 从Discuz!NT项目文件结构看如何给系统框架分层和类库分文件夹
- 【2022最新Java面试宝典】—— Tomcat面试题(15道含答案)
- 不良资产收购中房地产评估的工作要点
- 解决'parent.relativePath' of POM xxx points at yyy instead of zzz please verify your project structure
- matlab计算Weibull分布的均值与方差
- 从书本《皮囊》摘录的几个句子
- JUC线程线程池和锁面试题
- Map转对象属性值组装方法
- Shell脚本——Expect
- sshclient上传文件报错:encountered 1 errors during the transfer解决方法