Session一致性架构设计
来源:互联网 发布:数据科学家的职业规划 编辑:程序博客网 时间:2024/05/04 17:49
保证session一致性的架构设计常见方法:
session同步法
多台web-server相互同步数据优点: web-server支持的功能,应用程序不需要修改代码不足: session的同步需要数据传输,占内网带宽,有时延 所有web-server都包含所有session数据,数据量受内存限制,无法水平扩展 有更多web-server时要歇菜
客户端存储法
一个用户只存储自己的数据优点:服务端不需要存储缺点: 每次http请求都携带session,占外网带宽 数据存储在端上,并在网络传输,存在泄漏、篡改、窃取等安全隐患 session存储的数据大小受cookie限制
反向代理hash一致性
方案1:四层代理hash 反向代理层使用用户ip来做hash,以保证同一个ip的请求落在同一个web-server上方案2:七层代理hash 优点: 只需要改nginx配置,不需要修改应用代码 负载均衡,只要hash属性是均匀的,多台web-server的负载是均衡的 可以支持web-server水平扩展(session同步法是不行的,受内存限制) 四层hash和七层hash都可以做,保证一个用户的请求落在一台web-server上 不足: 如果web-server重启,一部分session会丢失,产生业务影响,例如部分用户重新登录 如果web-server水平扩展,rehash后session重新分布,也会有一部分用户路由不到正确的session
后端统一存储
优点:没有安全隐患可以水平扩展,数据库/缓存水平切分即可web-server重启或者扩容都不会有session丢失不足:不足:增加了一次网络调用,并且需要修改应用代码
总结
保证session一致性的架构设计常见方法:session同步法:多台web-server相互同步数据客户端存储法:一个用户只存储自己的数据反向代理hash一致性:四层hash和七层hash都可以做,保证一个用户的请求落在一台web-server上后端统一存储:web-server重启和扩容,session也不会丢失
原文链接:
https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=2651960128&idx=1&sn=8e0e409b10ab9db549432af461385314&chksm=bd2d069c8a5a8f8ab5cdee602d4062bbdbb25da290668515d36682afa854e374d2a5ff02004b&scene=0&key=5fa6b94c08301a0b541279c16cfe4b1b04ebf01704642e6d56542bae8775b34a391497040fb472470fe7197b3a7d341866c139c4d45d0c4e25bb2519a8c25859de8b2dbb5c11920b3d46c3a5f59768e2&ascene=0&uin=Nzc0NjYzMTIw&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.10.5+build(14F2315)&version=12020610&nettype=WIFI&fontScale=100&pass_ticket=4QLBTWoWt%2BxhMwMxxpvCJdlYlWmQ%2F%2BDDeL3D6BqrbcnlwdDXwcTjQr%2F4rRQ1%2Fa%2Fu
阅读全文
0 0
- Session一致性架构设计
- session一致性架构设计
- Session一致性架构设计
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计实践
- session一致性架构设计极简教程
- session一致性架构设计极简教程
- 架构师之路(3)session一致性架构设计实践
- 微信公号“架构师之路”学习笔记(六)-互联网一致性架构设计(session一致性,主从一致性,双主一致性,缓存一致性,冗余一致性,消息时序一致性,分布式事务一致性,数据扣减一致性等)
- “一致性”架构设计
- 关于互联网“一致性”架构设计的一切
- Session 一致性
- Session一致性架构原理剖析和实践TD
- Linux安装
- SpingMVC源码探究 之 解析HttpServletRequest参数
- 使用jQuery插件pngFix让所有的浏览器都支持PNG
- LeetCode 题解(Week 12):375. Guess Number Higher or Lower II
- ** could not be redeployed because it could not be completely removed in the undeployment phase
- Session一致性架构设计
- linux(二)
- swjtu2383(Music Problem)
- docker学习笔记06:docker快速清理命令
- 正则验证,match()与test()函数的区别?
- 【设计模式】之代理模式
- Android相机调用后直接闪退的问题
- Spring的两种定时器-task和quartz
- matlab 设置绘图的大小,字号,线宽,字体--按投稿要求