session一致性的解决方法

发布时间:2021-12-06 09:23:39 作者:柒染
来源:亿速云 阅读:121

session一致性的解决方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

什么是session?

服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文,这个相关信息就是session。这样,当用户在应用程序的Web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

session是对http无状态协议的补充,达到状态保持的目的

什么是session一致性问题?

session一致性的解决方法

假设用户包含登录信息的session都记录在第一台server上,反向代理如果将请求路由到另一台server上,可能就找不到相关信息,而导致用户需要重新登录。

解决方法

1. 客户端保存cookie

session一致性的解决方法

  1. 服务端不需要存储

  1. 每次http请求都携带session,占网络带宽

  2. 数据存储在客户端上,并在网络传输,存在泄漏、篡改等安全隐患

  3. session存储的数据大小受cookie限制

由于技术不断演进,客户端保存cookie出现了信息全量cookie,cookie存储sessionId和JWT三种方式,他们优缺点各异,可以点击笔者的另一篇博客查看相关介绍

快速了解会话管理三剑客cookie、session和JWT

2. session复制方法

session一致性的解决方法

  1. 只需要设定配置,应用程序不需要修改代码

  1. session的同步需要数据传输,占内网带宽,有延时

  2. 所有server都包含所有session数据,数据量受最小内存的sever限制,水平拓展能力差

3. session中心存储

session一致性的解决方法

  1. 没有安全隐患

  2. 可以水平扩展,支持缓存集群或横向拓展

  1. 增加了一次网络调用

  2. 需要修改应用代码

4. session会话粘连

session一致性的解决方法

session会话粘连:英文原词为"Sticky Sessions"

  1. 只需要改nginx配置,不需要修改应用代码

  2. 可以支持server水平扩展

  1. server水平扩展,rehash后session重新分布,会有一部分用户路由不到正确的session

  2. 即使hash散列均匀,也不能保证server的负载均匀

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 分布式session一致性问题
  2. php session无法保存的解决方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

session

上一篇:Hibernate API举例分析

下一篇:Hibernate Framework查询怎么实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》