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