分布式下的session处理方式
分布式下的session处理方式
现在的企业级别开发下,分布式的问题是随处可见。今天我们来看看分布式情况下session的处理。
目前的处理方式有以下几种:
1、session黏性。就是说,用户在访问了某台服务器后,之后的操作就让其只走该服务器就好。那么久可以让用户只访问该台机器了。
eg:nginx配置
upstream test{
#这里添加的是上面启动好的两台服务器
ip_hash;#粘性Session
server 192.168.22.229:8080 weight=1;
server 192.168.22.230:8080 weight=1;
}
优点:操作简单,不用对session做任何操作
缺点:当一台机器挂掉后,流量切向其他的机器。会丢失部分用户的session
适用场景:发生故障对客户产生的影响较小;服务器发生故障是低概率事件。
2、使用广播的方式
当一台服务器中的session中(增删改)了之后,将这个session中的所有数据,通过广播一样的方式,同步到其他的服务器中去。
优点:容错性增高
缺点:机器不能太多,session数量不能太大,否则会造成网络阻塞,是服务器变慢。
3、使用中间件共享session
使用redis或者Memcached去当做有个中间件,session中的数据存放在其中。这里需要的是redis或者Memcached必须是集群。
两种做法:
(1)黏性:说白了就是,和第一种方式一样,一个用户的请求只走一个服务器并且在拿session数据的时候,都只在该台服务器上,但是用户的session需要保存在redis上,作为备份(容灾用)。当一台服务器挂掉了,那么就可以将该用户的session复制到其他的机器上并且把流量转发。
(1)非黏性:这种情况下,就是将用户的session存放在redis上,用户在访问的时候,读取修改都在redis上
目前这种做法是大家使用最多的方法
4、session数据存放数据库中
这种方法的优缺点大家都知道的。
优点:数据可以持久化,服务器挂掉了也没关系。
缺点:慢慢慢!!!而且用户过多的时候,性能低下。
分布式下的session处理方式的更多相关文章
- 分布式集群下的Session存储方式窥探
传统的应用服务器,自身实现的session管理是大多是基于单机的,对于大型分布式网站来说,支撑其业务的远远不止一台服务器,而是一个分布式集群,请求在不同的服务器之间跳转.那么,如何保持服务器之前的se ...
- nginx反向代理、负载均衡以及分布式下的session保持
[前言]部署服务器用到了nginx,相比较于apache并发能力更强,优点也比其多得多.虽然我的项目可能用不到这么多性能,还是部署一个流行的服务器吧! 此篇博文主要学习nginx(ingine x)的 ...
- 集群/分布式环境下,Session处理策略
前言 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理.如果不做任何处理的话,用户将出现频繁登录的现象.比如集中中存在A.B两台服务器,用户在第一次访问网站是,Ngin ...
- 分布式环境下的session管理
一.分布式Session的几种实现方式 1.1.基于cookie 进行session共享 简单.方便,每次通过判断cookie中的用户状态信息判断用户的登录状态:但是用户信息要存在客户端,存在安全隐患 ...
- Shiro权限管理框架(二):Shiro结合Redis实现分布式环境下的Session共享
首发地址:https://www.guitu18.com/post/2019/07/28/44.html 本篇是Shiro系列第二篇,使用Shiro基于Redis实现分布式环境下的Session共享. ...
- 分布式架构下,session共享有什么方案么?
分布式架构下,session共享有什么方案么? 会点代码的大叔 科技领域创作者 分布式架构下的session共享,也可以称作分布式session一致性:关于这个问题,和大家说一说解决方案(如果有其他的 ...
- 一天五道Java面试题----第十一天(分布式架构下,Session共享有什么方案--------->分布式事务解决方案)
这里是参考B站上的大佬做的面试题笔记.大家也可以去看视频讲解!!! 文章目录 1.分布式架构下,Session共享有什么方案 2.简述你对RPC.RMI的理解 3.分布式id生成方案 4.分布式锁解决 ...
- 分布式下Session一致性架构举例
一.问题及方案 见这篇文章:分布式下Session一致性问题 二.分布式环境搭建: 系统环境 [root@centos7 ~]# cat /etc/redhat-release CentOS Linu ...
- nginx+iis+redis+Task.MainForm构建分布式架构 之 (redis存储分布式共享的session及共享session运作流程)
本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,上一篇分享文章制作是在windows上使用的nginx,一般正式发布的时候是在linux来配 ...
随机推荐
- 由ConcurrentLinkedQueue扯到线程安全 待整理
前几天项目总是报错,找了下原因. ConcurrentLinkedQueue 本身是一个基于链接节点的无界线程安全队列,你自己调用就不用考虑线程安全了吗? 结论是:原子性操作当然是线程安全的,非原子性 ...
- Atom 检测php错误扩展linter-php
- JAXB注解使用[转]
一.Jaxb处理java对象和xml之间转换常用的annotation有: @XmlType @XmlElement @XmlRootElement @XmlAttribute @XmlAccesso ...
- jsp地址栏传中文显示乱码解决方法
格式一: 地址栏显示格式:http://localhost:8081/Jsp2/ahref2.jsp?id=32&name=%E7%8E%8B%E4%BA%91%E9%B9%8F 1.修改To ...
- [iOS]过渡动画之高级模仿 airbnb
注意:我为过渡动画写了两篇文章:第一篇:[iOS]过渡动画之简单模仿系统,主要分析系统简单的动画实现原理,以及讲解坐标系.绝对坐标系.相对坐标系,坐标系转换等知识,为第二篇储备理论基础.最后实现 Ma ...
- 跳出框架iframe的操作语句
常用的iframe操作语句 ① 本页面跳转语句: "window.location.href" 或者 "location.href" ② 上一层页面跳转 ...
- A class file was not written. The project may be inconsistent, if so try refreshing this project and building it. eclipse提示错误
感觉很奇怪,查看了一下磁盘,发现workspace所在磁盘已经满了,删除一些文件之后,选择项目->Project->Clean...->选择Clean all projects-&g ...
- VS报:"dll标记为系统必备组件,必须对其进行强签名"错误
问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布) ...
- HDU 3849 By Recognizing These Guys, We Find Social Networks Useful(双连通)
HDU 3849 By Recognizing These Guys, We Find Social Networks Useful pid=3849" target="_blan ...
- Shell习题100例
每日一文件 https://github.com/aminglinux/shell100/blob/master/ 要求:安照这样的日期格式(xxxx-xx-xx)每日生成一个文件,如生成的文件为20 ...