session一致性的解决方法
session一致性的解决方法,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
东光ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
什么是session?
服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文,这个相关信息就是session。这样,当用户在应用程序的Web页之间跳转时,存储在session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
session是对http无状态协议的补充,达到状态保持的目的
什么是session一致性问题?
假设用户包含登录信息的session都记录在第一台server上,反向代理如果将请求路由到另一台server上,可能就找不到相关信息,而导致用户需要重新登录。
解决方法
1. 客户端保存cookie
优点:
服务端不需要存储
缺点:
每次http请求都携带session,占网络带宽
数据存储在客户端上,并在网络传输,存在泄漏、篡改等安全隐患
session存储的数据大小受cookie限制
由于技术不断演进,客户端保存cookie出现了信息全量cookie,cookie存储sessionId和JWT三种方式,他们优缺点各异,可以点击笔者的另一篇博客查看相关介绍
快速了解会话管理三剑客cookie、session和JWT
2. session复制方法
思路:
多个server之间相互同步session,这样每个server之间都包含全部的session优点:
只需要设定配置,应用程序不需要修改代码
不足:
session的同步需要数据传输,占内网带宽,有延时
所有server都包含所有session数据,数据量受最小内存的sever限制,水平拓展能力差
3. session中心存储
思路:
将session存储在server后端的集中式缓存优点:
没有安全隐患
可以水平扩展,支持缓存集群或横向拓展
不足:
增加了一次网络调用
需要修改应用代码
4. session会话粘连
session会话粘连:英文原词为"Sticky Sessions"
思路:
反向代理层让同一个用户的请求保证落在一台server上呢?方法一:四层代理hash。反向代理层使用用户ip来做hash,以保证同一个ip的请求落在同一个server上(更推荐,保证传输层不引入业务层的逻辑)
方法二:七层代理hash。反向代理使用http协议中的某些业务属性来做hash,例如sid,city_id,user_id等,能够更加灵活的实施hash策略,以保证同一个浏览器用户的请求落在同一个server上
优点:
只需要改nginx配置,不需要修改应用代码
可以支持server水平扩展
不足:
server水平扩展,rehash后session重新分布,会有一部分用户路由不到正确的session
即使hash散列均匀,也不能保证server的负载均匀
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
当前题目:session一致性的解决方法
当前网址:http://ybzwz.com/article/jhpjgi.html