分布式session共享问题

导读:本篇文章讲解 分布式session共享问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.为什么要有session共享

在我们系统使用中,一般都是一处登录,处处使用,但是如果多台服务器时,我们的session无法跨域请求,导致一处登录,只能在当前服务器登录

2.session原理、

分布式session共享问题

3.解决方案

3.1 session复制

分布式session共享问题

在服务器中设置修改配置,使每一个的服务器的session都复制到其他服务器,让每一个服务器都拥有所以的session

优点:实现简单,只需要修改web-server(tomcat)的配置让所有session复制到其他服务器

缺点:session大量进行同步, 占用网络带宽,提高服务器压力,无法进行大量服务器横向扩展

3.2 session将cookie存放在客户端中

分布式session共享问题

 通过请求将session存放在cookie中,每次请求将请求携带cookie中全部的信息

优点:服务器不需要存储session,用户保存自己的session到cookie中,节省服务器资源

缺点:携带用户的所有cookie资源,浪费网络带宽

长度有限制4k,不能存储大量信息

存放信息在客户端,会被篡改

3.3 hash一致性

分布式session共享问题

这是我们常用到的一种解决方案,可以使用nginx根据ip进行转发,让指定的用户转发到指定的服务器中。

优点:支持负载均衡,可以水平扩展,只需要修改nginx的配置就可以很方便的实现

缺点:session还是存在服务器中,浪费资源,如果服务器出现问题就会丢失数据。

3.4 统一存储

分布式session共享问题

 可以将session存放在数据库或者非关系型数据库中,无论存放或者取用都在数据库中

优点:没有安全隐患,可以水平扩展,服务器宕机不会丢失数据

缺点:相较于内存处理,使用redis或者数据库存取会慢一些,需要修改代码才可以使用getsession修改为redis查询。

增加了一次网络IO,加大了服务器和数据库压力

tips:这种方式可以使用springSession解决这些缺点

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/64425.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!