应用服务器集群的Session管理

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介:

         应用服务器的高可用架构设计主要基于服务无状态这一特性,但实际上,业务总是有状态的,在交易类的电子网站,需要有购物车记录用户的购买信息,用户每次购买请求都是向购物车中增加商品;在社交类网站中,需要记录用户的当前登录状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息。

        Web应用中将这些多次请求修改使用的上下文对象称作会话(session),单机情况下,session可由部署在服务器上的web容器管理。在使用负载均衡的集群环境中,由于负载均衡服务器可能会将请求分发到集群的任何一台服务器上,所以保证每次请求依然能够获得正确的session比单机时要复杂很多。

     集群环境下,session管理主要有一下几种手段。

  • Session复制

       Session复制是早期企业应用系统使用较多的一种服务器集群session管理机制。应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每台服务器上都保存所有用户的session信息,这样任何一台机器宕机都不会导致session数据的丢失,而服务器使用session时,也只需要在本机获取即可。

 

wKiom1anNJeRxz4sAAA1vCbBnTs895.png

         这种方案虽然简单,从本机读取session信息很快,但只能用在集群规模比较小的情况下。当集群较大时,集群服务器间需要大量的通信进行session复制,占用服务器和网络的大量资源。而且由于所有用户的session信息在每台服务器上都有备份,在大量用户访问的情况下,会出现服务器内存不够session使用的情况。

     而大型网站的核心应用集群就是数千台服务器,同时在线用户可达千万,因此不适应这种方案。

  • Session绑定

        Session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上(也可以根据Cookie信息将同一个用户的请求总是分发到同一台服务器上,当然这时负载均衡服务器必须工作在HTTP协议层上。)这样在整个回话期间用户所有的请求都在同一台服务器上处理,即session绑定在某台特定的服务器上,保证session总能在这台服务器上获取。这种方法又被称作回话粘滞。

 

wKioL1anNPyyERMeAAAxBuVSnUI683.png

       但是session绑定的方案显然不符合我们对系统高可用的需求,因为一旦某台服务器宕机,那么该机器上的session也就不复存在了,用户请求切换到其他机器后因为没有session而无法完成业务处理。因此虽然大部分负载均衡服务器都提供源地址负载均衡算法,但很少有网站利用这个算法进行session管理。

  • 利用Cookie记录Session

        早期的企业应用系统使用C/S(客户端/服务器端)架构,一种管理session的方式是将session记录在客户端,每次请求服务器的时候,将session放在请求中发送给服务器,服务器处理完请求后再将修改过的session响应给客户端。

网站没有客户端,但是可以利用浏览器支持的Cookie记录session。

      利用Cookie记录session也有一些缺点,比如受Cookie大小限制,能记录的信息有限;每次请求响应都需要传输Cookie,影响性能;如果用户关闭Cookie,访问就会不正常。但是由于Cookie的简单易用,可用性高,支持应用服务器的线性伸缩,而大部分应用需要记录的session信息又比较小。因此事实上,许多网站都或多多少的使用Cookie记录session。

  • Session服务器

         那么有没有可用性高、伸缩性好、性能也不错,对信息大小又没有限制的服务器集群session方案呢?

        答案就是session服务器。利用独立部署的session服务器(集群)统一管理session,应用服务器每次读写session时,都访问session服务器。

 

wKiom1anNcuAIYt3AAA6Fpj18sE204.png

这种解决方案事实上是将应用服务器的状态分离,分为无状态的应用服务器和有状态的session服务器,然后针对这两种服务器的不同特性分别设计其架构。

         对应有状态的session服务器,一种比较简单的方法是利用分布式缓存、数据库等,在这些产品的基础上进行包装,使其符合session的存储和访问要求。如果业务场景对session管理有比较高的要求,比如利用session服务集成单点登录(SSO)、用户服务等功能,则需要开发专门的session服务管理平台。


本文转自 www19 51CTO博客,原文链接:http://blog.51cto.com/doujh/1738686,如需转载请自行联系原作者

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力
优化SSR应用以减少服务器压力,可采用代码分割、缓存策略、数据预加载、服务端性能优化、使用CDN、SSR与SSG结合、限制并发请求、SSR与CSR平滑切换、优化前端资源及利用框架特性等策略。这些方法能有效提升性能和稳定性,同时保证用户体验。
110 4
|
5月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
149 2
|
12天前
|
消息中间件 分布式计算 资源调度
基于云服务器的数仓搭建-集群安装
本文介绍了大数据集群的安装与配置,涵盖Hadoop、Zookeeper、Kafka和Flume等组件。主要内容包括: 1. **数据模拟** 2. **Hadoop安装部署**:详细描述了HDFS和YARN的配置,包括NameNode、ResourceManager的内存分配及集群启动脚本。 3. **Zookeeper安装**:解压、配置`zoo.cfg`文件,并创建myid文件 4. **Kafka安装**:设置Kafka环境变量、配置`server.properties` 5. **Flume安装**:配置Flume采集日志到Kafka,编写启动脚本进行测试。
80 1
|
24天前
|
机器学习/深度学习 运维 资源调度
深度学习在资源利用率优化中的应用:让服务器更聪明
深度学习在资源利用率优化中的应用:让服务器更聪明
101 6
|
4月前
|
弹性计算 开发工具 git
2分钟在阿里云ECS控制台部署个人应用(图文示例)
作为一名程序员,我在部署托管于Github/Gitee的代码到阿里云ECS服务器时,经常遇到繁琐的手动配置问题。近期,阿里云ECS控制台推出了一键构建部署功能,简化了这一过程,支持Gitee和GitHub仓库,自动处理git、docker等安装配置,无需手动登录服务器执行命令,大大提升了部署效率。本文将详细介绍该功能的使用方法和适用场景。
2分钟在阿里云ECS控制台部署个人应用(图文示例)
|
3月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
4月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
85 2
|
4月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
5月前
|
存储 缓存 前端开发
如何优化 SSR 应用以减少服务器压力?
如何优化 SSR 应用以减少服务器压力?
|
5月前
|
机器学习/深度学习 人工智能 边缘计算
高算力服务器的应用场景
【10月更文挑战第18天】高算力服务器作为现代信息社会不可或缺的计算资源,正广泛应用于各行各业。从人工智能到科学研究,从智能交通到数字孪生,它为复杂的计算任务提供了不可替代的支持。
168 0