分布式session共享问题
1.为什么要有session共享
在我们系统使用中,一般都是一处登录,处处使用,但是如果多台服务器时,我们的session无法跨域请求,导致一处登录,只能在当前服务器登录
2.session原理、
3.解决方案
3.1 session复制
在服务器中设置修改配置,使每一个的服务器的session都复制到其他服务器,让每一个服务器都拥有所以的session
优点:实现简单,只需要修改web-server(tomcat)的配置让所有session复制到其他服务器
缺点:session大量进行同步, 占用网络带宽,提高服务器压力,无法进行大量服务器横向扩展
3.2 session将cookie存放在客户端中
通过请求将session存放在cookie中,每次请求将请求携带cookie中全部的信息
优点:服务器不需要存储session,用户保存自己的session到cookie中,节省服务器资源
缺点:携带用户的所有cookie资源,浪费网络带宽
长度有限制4k,不能存储大量信息
存放信息在客户端,会被篡改
3.3 hash一致性
这是我们常用到的一种解决方案,可以使用nginx根据ip进行转发,让指定的用户转发到指定的服务器中。
优点:支持负载均衡,可以水平扩展,只需要修改nginx的配置就可以很方便的实现
缺点:session还是存在服务器中,浪费资源,如果服务器出现问题就会丢失数据。
3.4 统一存储
可以将session存放在数据库或者非关系型数据库中,无论存放或者取用都在数据库中
优点:没有安全隐患,可以水平扩展,服务器宕机不会丢失数据
缺点:相较于内存处理,使用redis或者数据库存取会慢一些,需要修改代码才可以使用getsession修改为redis查询。
增加了一次网络IO,加大了服务器和数据库压力
tips:这种方式可以使用springSession解决这些缺点
分布式session共享问题相关推荐
- Spring Boot(十一)Redis集成从Docker安装到分布式Session共享
2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并 ...
- 分布式Session共享解决方案
转载自 分布式Session共享解决方案 Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理.单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Sessio ...
- 分布式Session共享和单点登录实现
文章目录 基于Session的身份认证 简介 实现 分布式Session共享 简介 实现 单点登陆 简介 实现过程 总结 基于Session的身份认证 简介 对于一个Web应用,客户端每次请求时,服务 ...
- 分布式Session共享的4类技术方案,与优劣势比较
分布式Session共享的4类技术方案,与优劣势比较 什么是session 什么是session一致性问题? 分布式session Session一致性解决方案 1.什么是session 服务器为每个 ...
- shiro分布式session共享
当我们开发的程序需要跑在多个tomcat容器或者多台机器上时,shiro的默认session存储就不能满足我们的需求了,其中shiro默认的session是存储在运行jvm内存中的,使用的Abstra ...
- java redis实现session共享_redis实现分布式session共享
在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及 ...
- 分布式Session共享(二):tomcat+memcached实现session共享 - 萝卜兔子 - 博客园
分布式Session共享(二):tomcat+memcached实现session共享 - 萝卜兔子 - 博客园 http://www.cnblogs.com/notDog/p/5341219.htm ...
- java分布式会话redis_详解springboot中redis的使用和分布式session共享问题
对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomca ...
- Spring Session + Redis实现分布式Session共享
2019独角兽企业重金招聘Python工程师标准>>> 通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将S ...
- SpringBoot 分布式Session共享
一.在分布式开发时Nginx负载均衡时传统做法是 把session手动存到redis中 1.常用做法redis 客户端发起一个请求,这个请求到达nginx上之后被,nginx转发给tomcatA上,然 ...
最新文章
- 阿里云服务器常见用语
- android功能导航布局,安卓9.0新功能 屏幕旋转将与导航栏同窗
- RocketMQ性能压测分析(转载)
- ClickHouse 源码阅读 —— SQL的前世今生
- 汇编怎么从内存地址写入连续的数字_汇编语言 第一章 基础知识
- Java学习-Overload和Override的区别
- php加skplayer,织梦dedecms怎么整合添加ckplayer播放器支持flv,mp4等播放功能
- Unity3D 显示FPS
- ubuntu 的挂起与休眠
- 华美天气(数据来源:和风天气 API)
- Time::HiRes, sleep(), time()
- 查看树莓派3 WiFi连接速度
- WM_PIANT消息与窗口重画
- #有关汇编语言的org指令(许多不为人知的故事):
- python3实现PAT乙级算法题库全集
- [W pthreadpool-cpp.cc:90] Warning:Leaking Caffe2 thread-pool after fork.(function pthreadpool)
- unity网络实战开发(丛林战争)-正式开发阶段(018-声音管理器模块的完善)
- 如何像学霸一样高效学习?
- 汽车零部件电磁兼容整改案例解析
- fiddler模拟进行接口测试
热门文章
- Python+Vue计算机毕业设计防SQL注入机制的在线音乐试听分享网站kf40t(源码+程序+LW+部署)
- 大家普遍使用的网站的bug等问题
- 最全的Go开发教程,超详细哦
- Mellel 4 for Mac(文字编辑处理软件)
- strut2中使用ajax主题时出现 template/ajax/head.ftl. 错误的解决办法
- 学习微信小程序踩过的坑
- 最近看了王小帅的《左右》,大力推荐
- php basename读取中文,php basename处理中文的问题
- Ubuntu下安装取色器
- Qt调用虚拟键盘(软键盘)