Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >应用服务器集群的Session管理1 Session 复制2 Session绑定(黏滞sticky)3 利用Cookie 记录Session4 Session服务器

应用服务器集群的Session管理1 Session 复制2 Session绑定(黏滞sticky)3 利用Cookie 记录Session4 Session服务器

作者头像
JavaEdge
发布于 2018-05-16 08:29:11
发布于 2018-05-16 08:29:11
1.2K0
举报
文章被收录于专栏:JavaEdgeJavaEdge

应用服务器的高可用架构设计主要基于服务无状态这一特性,但是事实上,业务总 是有状态的,

  • 在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户每次 购买请求都是向购物车中增加商品
  • 在社交类的网站中,需要记录用户的当前登录状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息

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

集群环境下,Session 管理主要有以下几种手段

1 Session 复制

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

使用Session复制实现应用服务器共享Session

1.1 优点

虽然简单,从本机读取Session信息也很快速,但只能使用在集群规模比较小的情况下

1.2 缺点

  • 当集群规模较大时,集群服务器间需要大量的通信进行Session复制,占用服务器和网络的大量资源,系统不堪负担
  • 而且由于所有用户的Session信息在每台服务器上都有备份,在大量用户访问的情况下,甚至会出现服务器内存不够Session使用的情况
  • 而大型网站的核心应用集群就是数千台服务器,同时在线用户可达千万,因此并不适用这种方案

2 Session绑定(黏滞sticky)

可以利用负载均衡的源地址Hash算法实现

负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上(也可以根据Cookie信息将同一个户的请求总是分发到同一台服务器上,当然这时负载均衡服务器必须工作在HTTP 协议层) 这样在整个会话期间,用户所有的请求都在同一台服务器上处理,即Session绑定在某台特定服务器上,保证Session总能在这台服务器上获取

利用负载均衡的会话黏滞机制将请求绑定到特定服务器

但是Session绑定的方案显然不符合我们对系统高可用的需求

缺点

一旦某台服务器宕机,那么该机器上的Session也就不复存在了,用户请求切换到其他机器后因为没有Session而无法完成业务处理

因此虽然大部分负载均衡服务器都提供源地址负载均衡算法,但很少有网站利用这个算法进行Session管理

3 利用Cookie 记录Session

早期系统使用C/S架构,一种管理Session的方式是将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完请求后再将修改过的Session响应给客户端 如今的B/S架构,网站没有客户端,但是可以利用刘览器支持的Cookie记录Session

利用Cookie 记录Session信息

3.1 缺点

  • 受Cookie大小限制,能记录的信息有限
  • 每次请求响应都需要传输Cookie,影响性能
  • 如果用户关闭Cookie,访问就会不正常

但是

3.2 优点

由于Cookie的

  • 简单易用
  • 可用性高
  • 支持应用服务器的线性伸缩
  • 而大部分应用需要记录的Session 信息又比较小

因此事实上,许多网站都或多或少地使用Cookie记录Session。

4 Session服务器

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

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

利用Session服务器共享Session

这种方案事实上是将应服务器的状态分离,分为

  • 无状态的应用服务器
  • 有状态的Session服务器

然后针对这两种服务器的不同特性分别设计其架构

对于有状态的Session服务器,一种比较简单的方法是利用

  • 分布式缓存 即使用cacheDB存取session信息,应用服务器接受新请求将session信息保存在cache DB中,当应用服务器发生故障时,web服务器会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去cache DB中查找,如果找到则复制到本机,这样实现session共享和高可用。
  • 数据库

在这些产品的基础上进行包装,使其符合Session 的存储和访问要求。如果业务场景对Session 管理有比较高的要求,比如利用Session 服务集成单点登录(SSO)、用户服务等功能,则需要开发专门的Session服务管理平台。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
web服务器集群集群是什么?分布式是什么?集中式是什么?例子缺点
概述 集群和分布式都是从集中式进化而来的。分布式和集群会相互合作的,同时的集群和分布式。在这里重点说说集群 集群是什么? 集群能提高单位时间内处理的任务数量,提升服务器性能 有多台服务器去处理任务,
用户1174983
2018/02/05
3K0
web服务器集群集群是什么?分布式是什么?集中式是什么?例子缺点
「架构技术专题」构建网站高可用架构(详细分析篇)(6)
可用性指标时网站架构设计的重要指标,对外是服务承诺,对内是考核指标,具体到每个工程师,更多的是使用故障分。
java进阶架构师
2018/08/15
2890
「架构技术专题」构建网站高可用架构(详细分析篇)(6)
Nginx系列教程(五)| 利用 Nginx+Keepalived 实现高可用技术
高可用(High Availability)是分布式系统架构设计中必须考虑的因素之一,通常是指:通过设计从而减少系统不能提供服务的时间。
杰哥的IT之旅
2020/06/18
1.4K0
Nginx系列教程(五)| 利用 Nginx+Keepalived 实现高可用技术
普元应用服务器高可靠方案
伴随着网络带宽的提升和移动终端的普及,现代的web应用平台几乎时时刻刻都在处理着来自用户成千上万的访问请求。在某些特定的场景下(如电商抢购、春运抢火车票等),这些web平台要承受瞬间暴涨的用户访问量。如何在高并发请求的情况下做到服务不瘫痪并且给与用户良好的使用体验,是所有web平台都要面临的挑战。构筑具备高可靠的web平台,是企业避免用户流失的重要手段,是增强自身竞争力的必要环节,具有十分重要的意义。
yuanyi928
2022/09/27
1.3K0
普元应用服务器高可靠方案
分布式Session共享解决方案「建议收藏」
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,一般来说解决Session共享有以下几种方案。
全栈程序员站长
2022/07/21
1.9K0
分布式Session共享解决方案「建议收藏」
《大型网站技术架构》读书笔记之五:万无一失之网站的高可用架构
此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。
Edison Zhou
2018/08/20
5110
《大型网站技术架构》读书笔记之五:万无一失之网站的高可用架构
性能优化中的系统架构优化
系统架构优化是性能优化的一个重要方面,它涉及到对整个IT系统或交易链上各个环节的分析与改进。通过系统架构优化,可以提高系统的响应速度、吞吐量,并降低各层之间的耦合度,从而更好地应对市场的变化和需求。业务增长导致的性能问题推动架构的发展,系统架构的演变过程来分析系统性能与调优方式。
漫谈测试
2025/02/10
1660
性能优化中的系统架构优化
分布式Session共享解决方案
Session是服务器用来保存用户操作的一系列会话信息,由Web容器进行管理。单机情况下,不存在Session共享的情况,分布式情况下,如果不进行Session共享会出现请求落到不同机器要重复登录的情况,一般来说解决Session共享有以下几种方案。 1、session复制 session复制是早期的企业级的使用比较多的一种服务器集群session管理机制。应用服务器开启web容器的session复制功能,在集群中的几台服务器之间同步session对象,使得每台服务器上都保存所有的session信息,这
Java技术栈
2018/03/30
7780
分布式Session共享解决方案
实现服务高可用奇淫技巧(一)
在上一篇通知文章有说过,六月份会开始更新公众号,虽然现在已到月底了,但好歹也算没有失言,赶上了末班车了。
测试开发技术
2020/01/17
8810
实现服务高可用奇淫技巧(一)
针对负载均衡集群中的session解决方案的总结
在日常运维工作中,当给Web站点使用负载均衡之后,必须面临的一个重要问题就是Session的处理办法,无论是PHP、Python、Ruby还是Java语言环境,只要使用服务器保存Session,在做负载均衡时都需要考虑Session的问题。 通常面临的问题 从用户端来解释,就是当一个用户第一次访问被负载均衡代理到后端服务器A并登录后,服务器A上保留了用户的登录信息;当用户再次发送请求时, 根据负载均衡策略可能被代理到后端不同的服务器,例如服务器B,由于这台服务器B没有用户的登录信息,所以导致用户需要重新登录
洗尽了浮华
2018/01/23
1.1K0
单点登录实现和多服务器下解决共享session共享的方案
➢ 如果网站请求流量较大,那么单台 tomcat 设备是无法承接这些流量的,这个时候就需要开始对服务器做集群。在多服务器下我们通常要在客户端和服务器之间用一定的条件(比如按业务划分了)做一个负载均衡服务器LB(load balance),将不同的请求划到不同的服务器上进行处理,这就可能出现我们在一台服务器上记录了sessionid而其他服务器上没有的情况,若服务器将请求转发到这个没有sessionid的服务器,那么请求就又变成无连接的了
名字是乱打的
2022/05/13
1.3K0
单点登录实现和多服务器下解决共享session共享的方案
Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
  应用层服务器(这里一般指Web服务器)处理网站应用的业务逻辑,应用的一个最显著的特点是:应用的无状态性。
Edison Zhou
2018/08/20
6310
Key/Value之王Memcached初探:三、Memcached解决Session的分布式存储场景的应用
「架构技术专题」超详细网站伸缩性架构的设计(7)
使用服务器集群,即将相同服务部署在多台服务器上构成一个集群整体对外提供服务。具体来说,集群伸缩性又分为应用服务器集群伸缩性和数据服务器集群伸缩性。这两种集群对于数据状态管理的不同,技术实现也有很大的区别。
java进阶架构师
2018/08/15
4490
「架构技术专题」超详细网站伸缩性架构的设计(7)
微服务架构下的分布式Session管理(PPT详解)
大家好,很高兴在这里和大家进行微课堂的分享,今天进行分享的主题是《微服务架构下的分布式Session管理》。 主要大纲: 一、应用架构变迁下的Session管理 二、微服务架构下的Session管理
yuanyi928
2018/04/02
2.9K0
微服务架构下的分布式Session管理(PPT详解)
《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构
一、网站架构的伸缩性设计 01、不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性; (2)横向分离:将不同的业务模块分离部署,实现系统的伸缩性; 02
小小科
2018/05/04
6260
《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构
分布式web架构中对session同步的常用处理方法以及优缺点
最近在读一本来自淘宝技术团队大牛的书,名字叫《大型网站系统与Java中间件实践》。开篇的章节详细地介绍了一个网站架构由小变大不断演进的过程,其中从单机架构升级到集群架构的过程中着重介绍了关于session同步问题, 这也是很多人在聊到分布式时绕不过去的话题。下面就整理下书中的内容,也算是做个读书笔记,方便以后参考。
HOHO
2020/04/27
1.4K0
分布式web架构中对session同步的常用处理方法以及优缺点
Spring Session - Cookie VS Session VS Token 以及 Session不一致问题的N种解决方案
我们在学习Spring Session 之前, 先聊聊 几种主流的会话方式以及发展历史
小小工匠
2021/08/17
1.1K0
Tomcat利用MSM实现Session共享方案解说
Session共享有多种解决方法,常用的有四种: 1)客户端Cookie保存 2)服务器间Session同步 3)使用集群管理Session(如MSM) 4)把Session持久化到数据库 针对上面Session共享四种方法的详解: 1)客户端Cookie保存以cookie加密的方式保存在客户端.优点是减轻服务器端的压力,每次session信息被写在客服端,然后经浏览器再次提交到服务器。即使两次请求在集群中的两台服务器上完成,也可以到达session共享。 2)将session持久化到数据中这种共享ses
洗尽了浮华
2018/01/23
1.1K0
Tomcat利用MSM实现Session共享方案解说
大型网站技术架构核心原理与案例分析(一)
高并发,大流量;高可用;海量数据;用户分布广泛,网络情况复杂;安全环境恶劣;需求快速变更,发布频繁;渐进式发展;
硬核项目经理
2019/08/06
8350
大型Web网站架构演变之9大阶段
我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。
Java编程指南
2019/08/05
6220
大型Web网站架构演变之9大阶段
推荐阅读
相关推荐
web服务器集群集群是什么?分布式是什么?集中式是什么?例子缺点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档