- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
会话session一致性架构设计指南架构师之路微信号 road5858功能介绍 架构师之路,坚持撰写接地气的架构文章一、缘起什么是session?服务器为每个用户创建一个会话,存储用户的相关信息,以便多次请求能够定位到同一个上下文。?Web开发中,web-server可以自动为同一个浏览器的访问用户自动创建session,提供数据存储功能。最常见的,会把用户的登录信息、用户信息存储在session中,以保持登录状态。?什么是session一致性问题?只要用户不重启浏览器,每次http短连接请求,理论上服务端都能定位到session,保持会话。当只有一台web-server提供服务时,每次http短连接请求,都能够正确路由到存储session的对应web-server(废话,因为只有一台)。?此时的web-server是无法保证高可用的,采用“冗余+故障转移”的多台web-server来保证高可用时,每次http短连接请求就不一定能路由到正确的session了。如上图,假设用户包含登录信息的session都记录在第一台web-server上,反向代理如果将请求路由到另一台web-server上,可能就找不到相关信息,而导致用户需要重新登录。?在web-server高可用时,如何保证session路由的一致性,是今天将要讨论的问题。?二、session同步法思路:多个web-server之间相互同步session,这样每个web-server之间都包含全部的session?优点:web-server支持的功能,应用程序不需要修改代码?不足:session的同步需要数据传输,占内网带宽,有时延所有web-server都包含所有session数据,数据量受内存限制,无法水平扩展有更多web-server时要歇菜?三、客户端存储法思路:服务端存储所有用户的session,内存占用较大,可以将session存储到浏览器cookie中,每个端只要存储一个用户的数据了?优点:服务端不需要存储?缺点:每次http请求都携带session,占外网带宽数据存储在端上,并在网络传输,存在泄漏、篡改、窃取等安全隐患session存储的数据大小受cookie限制?“端存储”的方案虽然不常用,但确实是一种思路。?三、反向代理hash一致性思路:web-server为了保证高可用,有多台冗余,反向代理层能不能做一些事情,让同一个用户的请求保证落在一台web-server上呢?方案一:四层代理hash反向代理层使用用户ip来做hash,以保证同一个ip的请求落在同一个web-server上?方案二:七层代理hash反向代理使用http协议中的某些业务属性来做hash,例如sid,city_id,user_id等,能够更加灵活的实施hash策略,以保证同一个浏览器用户的请求落在同一个web-server上?优点:只需要改nginx配置,不需要修改应用代码负载均衡,只要hash属性是均匀的,多台web-server的负载是均衡的可以支持web-server水平扩展(session同步法是不行的,受内存限制)?不足:如果web-server重启,一部分session会丢失,产生业务影响,例如部分用户重新登录如果web-server水平扩展,rehash后session重新分布,也会有一部分用户路由不到正确的session?session一般是有有效期的,所有不足中的两点,可以认为等同于部分session失效,一般问题不大。?对于四层hash还是七层hash,个人推荐前者:让专业的软件做专业的事情,反向代理就负责转发,尽量不要引入应用层业务属性,除非不得不这么做(例如,有时候多机房多活需要按照业务属性路由到不同机房的web-server)。?四、后端统一存储思路:将session存储在web-server后端的存储层,数据库或者缓存?优点:没有安全隐患可以水平扩展,数据库/缓存水平切分即可web-server重启或者扩容都不会有session丢失?不足:增加了一次网络调用,并且需要修改应用代码?对于db存储还是cache,个人推荐后者:session读取的频率会很高,数据库压力会比较大。如果有session高可用需求,cache可以做高可用,但大部分情况下session可以丢失,一般也不需要考虑高可用。?五、总结保证session一致性的架构设计常见方法:session同步法:多台web-server相互同步数据客户端存储法:一个用户只存储自己的数据反向代理hash一致性:四层hash和七层hash都可以做,保证一个用户的请求落在一台web-server上后端统一存储:web-server重启和扩容,session也不会丢失?对于方案3和方案4,个人建议推荐后者:we
您可能关注的文档
- 大型网站的架构设计模式.docx
- 分布式缓存的最佳实践案例分析.docx
- MQ架构应用场景分析.docx
- 互联网电商网站平台框架设计.docx
- 互联网秒杀系统架构优化方案.docx
- 互联网应用高并发架构设计.docx
- 互联网应用高可用架构设计.docx
- 浏览型网站静态化架构设计.docx
- 秒杀抢购电商网站架构优化设计.docx
- 软件生产环境系统监控方案设计.docx
- 新版教材高中通用技术【粤科版】第三章第三节技术试验(1).pptx
- 革命烈士诗抄阅读指导市公开课一等奖省赛课微课金奖PPT课件.pptx
- 高中历史第1单元中国传统文化主流思想的演变第3课清明之际儒学的发展省公开课一等奖新名师优质课获奖PP.pptx
- 非谓语动词作状语公开课省公开课金奖全国赛课一等奖微课获奖PPT课件.pptx
- 高三化学复习考情解读+知识通关+题型突破+能力提升专题1化学计量省公开课一等奖新名师优质课获奖PPT.pptx
- 雅趣益智猜字谜语免费动感面含蓄优雅有触发式答案与喜爱的朋友分享市公开课一等奖省赛课微课金奖PPT课件.pptx
- 雅思写作如何写高分句子市公开课一等奖省赛课微课金奖PPT课件.pptx
- 非线性方程及非线性方程组解法省公开课金奖全国赛课一等奖微课获奖PPT课件.pptx
- 高三地理复习第四部分第二章中国地理第一讲中国地理概况省公开课一等奖新名师优质课获奖PPT课件.pptx
- 高三化学复习第十二章有机化学基础第三节有机合成及其应用省公开课一等奖新名师优质课获奖PPT课件.pptx
文档评论(0)