应用服务器集群的session管理-阿里云开发者社区

开发者社区> 余二五> 正文

应用服务器集群的session管理

简介:
+关注继续查看

1、什么是session

  a、web应用中将这些多次请求修改使用的上下文对象称作会话(session)

  b、Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

  c、当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话


2、session的应用场景

  在高可用的架构中,业务总是有状态的,比如电商交易类平台中,需要有购物车记录用户的购买信息;在社交类的网站中,需要记录用户的当前登陆状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息


3、session管理的几种手段

a)session复制

  应用服务器开启web容器的session复制功能,在集群中几台服务器之间同步session对象,使得每台服务器上都保存所有用户的session信息

  较大规模的情况下(session复制就会显得不足了)

wKiom1kuG5CzUnpGAABJUcA4Gc8169.jpg

b)session绑定

  ession绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一个IP的请求分发到同一台服务器上,显然session绑定不符合我们对系统高可用的要求,因为一旦服务器宕机,那么该机器上的session就不复存在了

  优点:实现简单、配置方便、没有额外网络开销

  缺点:网络中有机器Down掉时、用户Session会丢失、容易造成单点故障

wKiom1kuG9ux6bWAAABMWrCJqbs722.jpg

c)利用cookie记录session

  说明:网站没有客户端,可以利用浏览器支持的cookie记录session(事实上,许多网站或多或少地使用cookie记录session)

  不足:

  •   受cookie大小限制,能记录的信息有限

  •   每次响应请求都要传输Cookie,影响性能

  •   如果用户关闭cookie,访问就会不正常

wKiom1kuHDXzTHLmAABLwqUlt7s388.jpg


d)session服务器

  •  利用独立部署的服务器(集群)统一管理session

  •  应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器

  •  对于有状态的session服务器:分布式缓存+数据库等

  •  业务场景要求高的情况下,利用session服务集成单点登录(SSO)、用户服务等功能,或者开发专门的session服务管理平台

wKioL1kuHIeADS4WAABUyzXM01M697.jpg










本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1930803,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot开发案例之分布式集群共享Session
前言 在分布式系统中,为了提升系统性能,通常会对单体项目进行拆分,分解成多个基于功能的微服务,如果有条件,可能还会对单个微服务进行水平扩展,保证服务高可用。 那么问题来了,如果使用传统管理 Session 的方式,我们会遇到什么样的问题? 案例 这里拿下单举例,用户小明在天猫上相中了一个的娃娃,觉得不错,果断购买,选尺寸,挑身高,然后确认选择,赶紧提交订单,然后就跳转到了登录页面!小明表示很郁闷,大写的问号??? 小明进入娃娃页面,此时请求通过代理服务发送到业务系统一。
1046 0
如何使用Terraform管理容器服务Kubernetes集群之-标准版集群
#### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。
980 0
如何使用Visual Studio Code调试PHP CLI应用和Web应用
在按照Jerry的公众号文章 什么?在SAP中国研究院里还需要会PHP开发? 进行XDebug在本地的配置之后,如果想使用Visual Studio Code而不是Eclipse来调试PHP应用,步骤也比较简单。
1075 0
SpringCloud迁移至EDAS微服务——Series3:在容器服务K8s集群中部署应用
SpringCloud迁移至EDAS微服务——Series3:在容器服务K8s集群中部署应用
2567 0
阿里云虚拟主机、轻量应用服务器和ECS云服务器的区别
阿里云虚拟主机、轻量应用服务器和ECS云服务器有什么区别?三者都可以用来建站,那么有哪些区别呢?云服务器吧从技术难易度、权限等方面来说说阿里云虚拟主机、轻量应用服务器和ECS云服务器之间的区别: 虚拟主机、轻量应用服务器和ECS云服务器的区别 简单来说,云虚拟主机预装建站环境,不需要用户参与服务器...
15080 0
+关注
20382
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载