session分布式处理
session分布式处理
标签(空格分隔): 分布式
1. Session复制
在支持Session复制的Web服务器上, 通过修改服务器配置, 可以实现将Session同步到其它Web服务器上, 达到每个Web服务器上都保存一直的Session
- 优点: 代码不需要做支持和修改.
- 缺点: 需要依赖支持的Web服务器, 一旦更换成不支持的Web服务器就不能使用了, 在数据量很大的情况下比较浪费网络资源, 而且会导致延迟 .
- 适用场景: 只适用于Web服务器比较少且Session数据量少的情况.
- 可用方案: tomcat-redis-session-manager.
- 注意: 在使用
request.getSession().setAttribute()的时候, 如果需要放入对象 需要将该对象实现序列化接口, 否则会报错.
工作机制:
request请求开始.- 调用
request.getSession()时,RedisSessionManager会先finaSession(id), 找到返回Session, 没找到就CreateSession, 并且序列化到Redis. session.setAttribute()判断set的值和以前的值是否一致, 不一致就序列化Session到Redis. ( set的是一个对象, 比如LoginUser的email属性, 这个时候对象实例的没有变化的, 并不会序列化到Redis, 但会在afterRequest中会做修正. )session.removeAttribute会序列化到Redis.request结束, 会回调RedisSessionManager.afterRequest, 做两个关键的事情
- 根据判断session有没有发生变化, 有则序列化到redis
- 更新redis的expore, 过期时间, 只要访问过, 保证session会话不过期.
2. Session粘贴
将用户的每次请求都通过某种方法强制分发到某一个Web服务器上, 只要这个Web服务器上存储了对应的Session数据, 就可以实现会话跟踪.
- 优点: 使用简单, 没有额外开销.
- 缺点: 一旦某个Web服务器重启或者宕机, 相应的Session数据会丢失, 而且需要依赖负载均衡机制.
- 使用场景: 对稳定性要求不是很高的业务情景.
3. Session集中管理
在单独的服务器或者服务器集群上使用缓存技术, 如Redis存储Session数据, 集中管理所有的Session, 所有为Web服务器都从这个存储介质中存取对应的Session, 实现Session共享.
- 优点: 可靠性高, 减少Web服务器的资源开销.
- 缺点: 实现上有些复杂, 配置较多.
- 使用场景: Web服务器较多, 要求高可用的情况.
- 可用方案: 开源方案Spring Session, 也可以自己实现, 主要是重写
HTTPServletRequesWrapper中的getSession方法.
4. 基于Cookie管理
每次发起请求的时候都需要将Session数据放到Cookie中传递给服务端.
- 优点: 不需要依赖额外的外部存储, 不需要额外配置.
- 缺点: 不安全, 容易被盗取或篡改; 浏览器规定一个站点的Cookie最多不超过20个.
- 适用场景: 数据不重要, 不敏感且数据量小的情况.
总结
四种方式中,相对来说Session集中管理更加的可靠, 使用也最多.
session分布式处理的更多相关文章
- Session分布式共享 = Session + Redis + Nginx
一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我就简单的介绍一下. Session:在计算机中,尤其是在网络应用中,称为"会话控制 ...
- 详解Session分布式共享(.NET CORE版)
一.前言&回顾 在上篇文章Session分布式共享 = Session + Redis + Nginx中,好多同学留言问了我好多问题,其中印象深刻的有:nginx挂了怎么办?采用Redis的S ...
- 什么是Session分布式共享
在了解session分布式共享之前先来了解Session.Redis和Nginx的相关知识. 一.Session相关知识 1.Session 介绍 Session在网络应用中,称为“会话控制”. 每个 ...
- Session分布式共享 = Session + Redis + Nginx(转)
出处:http://www.cnblogs.com/newP/p/6518918.html 一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我 ...
- SpringBoot,Security4, redis共享session,分布式SESSION并发控制,同账号只能登录一次
由于集成了spring session ,redis 共享session,导致SpringSecurity单节点的session并发控制失效, springSession 号称 无缝整合httpses ...
- asp.net session分布式共享解决方案
Session共享是分布式系统设计时必须考虑的一个重要的点.相比较java中的session共享解决方案,.net中的解决方案还是比较少,MemcachedSessionProvider类库是比较优秀 ...
- session 分布式处理-----https://segmentfault.com/a/1190000013447750?utm_source=tag-newest
第一种:粘性session 粘性Session是指将用户锁定到某一个服务器上,比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了A服务器上,如果负载均衡器设置了粘性Session的话, ...
- 基于redis解决session分布式一致性问题
1.session是什么 当用户在前端发起请求时,服务器会为当前用户建立一个session,服务器将sessionId回写给客户端,只要用户浏览器不关闭,再次请求服务器时,将sessionId传给服务 ...
- Asp.net 实现Session分布式储存(Redis,Mongodb,Mysql等) sessionState Custom
对于asp.net 程序员来说,Session的存储方式有InProc.StateServer.SQLServer和Custom,但是Custom确很少有人提及.但Custom确实最好用,目前最实用和 ...
随机推荐
- 『配置』服务器搭建 Office Online Server2016 实现文档预览
博主有话说:这个过程我遇到了很多错误,所以出了一个错误整理文章,所以当你在配置过程中遇到了问题,可以先去这篇文章里找找!加油! 先打开我吧:https://www.cnblogs.com/pukua/ ...
- Windows10 JDK1.8安装及环境变量配置
一.下载JDK1.8: 下载地址:https://www.oracle.com/java/technologies/javase-jdk8-downloads.html 二.安装步骤: 我们通常选择 ...
- Z字头:逐浪字库入选微软全球主流字体厂商列表
北京时间2019年6月20日消息: 来自中国的字库厂商--逐浪,成功获得全球软件巨擎.电子出版与数字印刷权威平台-微软的认证,成为获此国际认证的首家字体厂商. 微软公司为了更好的规范国际字库与出版,制 ...
- python 关于函数递归调用自己
爬取b站博人传 每页短评20个,页数超过1000页, 代码如下 import requests import json import csv def main(start_url): headers ...
- SpringBoot WebSocket STOMP 广播配置
目录 1. 前言 2. STOMP协议 3. SpringBoot WebSocket集成 3.1 导入websocket包 3.2 配置WebSocket 3.3 对外暴露接口 4. 前端对接测试 ...
- C 和 C++语言中的内存拷贝函数memcpy()
memcpy指的是C和C++使用的内存拷贝函数 函数原型为void *memcpy(void *destin, void *source, unsigned n): 函数的功能是从源内存地址的起始位置 ...
- 解决vue在控制台的 NavigationDuplicated 报错
解决问题: 点击相同的链接,会有一个重复key的报错 const originalPush = Router.prototype.push Router.prototype.push = functi ...
- C#基础--迭代器初识
foreach语句是枚举器(enumerator)的消费者,而迭代器(iterator)是枚举器的产生者. 迭代器模式能提供一种顺序访问一个集合内部的元素,而又不会暴露其内部的方法.当然其缺点就是用f ...
- 9. selenium+request方式的cookie绕过
1. 首先确认POST请求的content-type类型 2. 查看cookies数据 3. 找到对应的headers数据 4. 如果是application/json,传入的json数据需要时jso ...
- hGame2020第二周第一题题解
Description: Cosmos通过两个小时速成了PHP+HTML,他信心满满的写了一个博客,他说要从博客后台开始......(flag在根目录, 禁止使用任何扫描器) Challenge Ad ...