博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式下的session处理方式
阅读量:5053 次
发布时间:2019-06-12

本文共 963 字,大约阅读时间需要 3 分钟。

分布式下的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数据存放数据库中 

这种方法的优缺点大家都知道的。 
优点:数据可以持久化,服务器挂掉了也没关系。 
缺点:慢慢慢!!!而且用户过多的时候,性能低下。

 

转载于:https://www.cnblogs.com/williamjie/p/9104094.html

你可能感兴趣的文章
linux 配置SAN存储-IPSAN
查看>>
java学习笔记之String类
查看>>
pymysql操作mysql
查看>>
Linux服务器删除乱码文件/文件夹的方法
查看>>
牛腩记账本core版本源码
查看>>
Word Break II
查看>>
UVA 11082 Matrix Decompressing 矩阵解压(最大流,经典)
查看>>
jdk从1.8降到jdk1.7失败
查看>>
一些关于IO流的问题
查看>>
mongo备份操作
查看>>
8 -- 深入使用Spring -- 3...1 Resource实现类InputStreamResource、ByteArrayResource
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
一个关于vue+mysql+express的全栈项目(六)------ 聊天模型的设计
查看>>
【知识库】-数据库_MySQL 的七种 join
查看>>
.net 写文件上传下载webservice
查看>>
noSQL数据库相关软件介绍(大数据存储时候,必须使用)
查看>>
iOS开发——缩放图片
查看>>
HTTP之URL的快捷方式
查看>>
满世界都是图论
查看>>
配置链路聚合中极小错误——失之毫厘谬以千里
查看>>