2.2.4.2 大型网站技术和java中间件-大型网站及其架构演进过程:应用服务器警告高,如何让应用从服务器走向集群:解决Session的问题

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

2.2.4.2 大型网站技术和java中间件-大型网站及其架构演进过程:应用服务器警告高,如何让应用从服务器走向集群:解决Session的问题

影响解决:解决应用服务器变为集群后的Session问题(使用负载均衡)

问题:如下图,如果不做操作,

-> Browser的请求第一次落到了左边的服务器创建了Session,第二次就可能落到第二个服务器

 

 

 

方案一:Session Sticky(Session 粘贴)

 

1.这个方案非常简单,对应Web服务器而言,该方案和单机是一样的

2.主要操作的地方在负载均衡器上。可以让同样的Session发送到同一个应用服务器上

需要注意的问题:

1.如果一台Web服务器宕机或者重启,这台应用服务器上的数据会丢失,用户需要重新登录

2.会话表示在应用层信息,需要解析应用层数据,开销比底层负载均衡大

3.负载均衡变成了有状态的节点,要把会话保存到具体服务器的映射;和无状态节点相比,内存消耗会更大,内存消耗会更大,容灾比较麻烦

 

 

 

 

方案二: Session Replication(Session 复制)

 

1.在Session Replication中,不在要求负载均衡器保持同一个会话到同一个应用服务器

2.应用服务器之间增加了Session同步 -> 保证了多个应用服务器之间的Session数据一致

3.一般的应用容器都支持Session Replication方式

需要注意的问题:

1.同步Session数据造成了网络带宽消耗:只要Session数据有变化,就需要把数据同步到所有的其他机器上,机器越多,同步带来的网络带宽开销就越多

2.每台Web服务器都所有的Session数据,如果整个集群Session很多,每台应用服务器上的Session占用会很严重

总结

不合适集群机器多的场景,如果只有几台机器,这个方案可以

 

 

 

 

方案三:Session集中存储

1.把Session数据集中存储起来,然后不同的Web服务器从同样的地方获取Session

2.负载均衡器步不再需要转发到固定的应用服务器上

3.Session不需要在应用服务器之间复制,Session存储在同一个地方

  3.1 无论在哪台应用服务上修改Session,最终修改是保持一致

4.可以使用数据库,也可以使用其他分布式存储方式  

需要注意的问题:

1.读写Session数据引入了网络操作,可能存在延时和不稳定 -> 使用内网问题不大

2.如果集中存储Session的机器或者集群有问题,就会影响我们的应用

总结:

相对于Session Replication,当Session比价大的时候,这个存储方案优势非常明显

 

 

 

方案四:Cookie Based

1.Cookie Based方案也是不限定具体应用处理机器

2.Cookie Based方案是同Cookie来传递Session数据的(Session是存放在Cookie中的)

3.Cookie Based方案不依赖外部获取,不依赖外部存储,写入Session的网络延时

 

需要注意的问题:

1.Session长度限制:Cookie长度的限制,这个会限制Session的长度

2.安全性问题:Session本来就是应用服务器上数据,Cookie Based方案让服务器端数据到了外网及客户端,存在安全性问题(虽然可以加密,但是物理上不可接触才是安全的)

3.带宽消耗:影响了数据中心整体带宽

4.性能影响:每次HTTP请求和响应都带有Session数据,很大的影响性能

总结:

Session Sticky(粘贴)Session数据集中处理是比较好的方案

 

Web应用可用架构实战:从单机到负载均衡、CDN、WAF的全栈演进 在构建现代Web应用时,可用与性能是核心目标。其基础原理在于通过架构解耦与组件分工,将单一应用拆分为可独立扩展的无状态服务。这带来了显著的技术价值:提升系统吞吐量、保障服务连续性并增强安全性。典型的应用场景包括应对突发流量、保障全球用户访问速度以及防御网络攻击。本文聚焦于无状态设计、对象存储(OSS)、负载均衡、CDN加速及WAF防护等热词,深入解析如何将这些组件串联,构建一个从单机部署演进至具备弹性伸缩与全面防护能力的生产级架构解决文件共享、会话保持、资源加速与安全防护等工程实践中的共性难题。 阅读详情

相关推荐

Spring Security 6.x会话安全实战:防御固定攻击与Redis共享配置

会话(Session)是Web应用中维持用户状态的核心机制,其原理是通过服务器生成的唯一标识符(如JSESSIONID)来关联用户请求与状态数据。在安全层面,会话管理不当会引发严重漏洞,例如会话固定攻击,攻击者可利用已知会话ID劫持用户身份;在架构层面,单机会话存储无法满足分布式系统的扩展需求。Spring Security作为Java生态的主流安全框架,提供了内置的会话固定攻击防护策略,通过认证后强制变更会话ID来粉碎此类攻击。同时,结合Spring Session与Redis等技术,可实现效、安全的分

cuixie2370的博客 457

java session 共享方案_分布式session共享常用的几种方式

tomcat session共享常用的几种方式1、请求精确定位 粘性会话:session sticky例如基于访问ip的hash策略,即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息, 如果宕机,则等同于单点部署,会话会丢失,会话不复制。2session复制共享:session replication如tomcat自带session共享,主要是指集群环境...

weixin_30134531的博客 416

HTTP与HTTPS协议详解:从明文传输到加密通信的演进与实践

在计算机网络通信中,HTTP协议作为应用层的基础协议,定义了客户端与服务器之间的请求与响应格式,是Web应用开发的基石。然而,HTTP协议采用明文传输数据,存在窃听、篡改冒充三大安全风险,无法满足现代互联网对隐私安全的需求。为了解决这些问题,HTTPS协议应运而生,它在HTTP协议与TCP层之间加入了TLS/SSL安全层,通过数字证书实现身份认证,利用混合加密机制确保数据传输的保密性,并借助消息认证码保障数据的完整性。这种从“明文快递”到“武装押运”的演进,对于构建可信的在线服务至关重要。在实际应用中,

weixin_30765505的博客 422

Tomcat 8如何配置Session Replication实现Session共享

部署服务器集群离不开Session共享,实现Session共享方式有很多种,对于小型集群(5台服务器内)我们可以采用Session Replication来实现Session共享,这样实现起来容易,又可以 优点: 1,实现简单。 2,不需要使用共享数据库,节点少,降低了故障率。 缺点: 1,同步Session数据造成了网络带宽的开销。只要Session数据有变化,就需要将数据同步到所有其他

施勇 5750

[分布式会话]springboot中实现session replication

分布式会话处理方式 分布式Session一般分为以下几种处理方式: 粘性会话(sticky session):通过使每个用户每访问的服务端实例为同一个来确保session的正常使用 会话拷贝(session replication):通过各个服务端实例之间的session复制,来确保每个服务端实例均具有session中的信息,以达到session的一致性 会话第三方管理:通过redis等第三方的...

Sool179的博客 1368

技术心得】大型网站Session会话状态方案

  为什么要讨论大型网站session 的方案 首先作为大型网站,用户量大,session的量也就很大,以下是一个普通的大型网站架构。   由于存在多台web服务器,进而可能存在多个子站点。在这些大型多台web服务器,以及多个子站点间,需要进行共同的session管理,由此产生的就是一个大型网站需要在网站架构初期考虑session管理的方案。 有哪些Session管理方...

coolfiry 232

大型网站系统与JAVA中间件实践 学习总结 一

大型网站系统与JAVA中间件实践 学习总计 一前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import

qq_27756989的博客 913

大型网站java中间件_《大型网站系统与Java中间件实践》--大型网站及其架构演进过程(上)...

我们在此定义的大型网站的要素必须包括并发的访问量较大的数据量,此外本身业务系统的复杂度也是考察的方面。大型网站要支撑海量数据非常并发的访问量,那么它肯定是一个分布式系统。下面的演进过程将从一个单机的交易网站开始说起单机(单服务器)负载警告,数据库与应用分离当网站放置在公网对外访问后,访问量不断增大,单台服务器的负载持续升。我们可以想到的就是把数据库与应用从一台机器分到两台机器。那么 网...

weixin_39623716的博客 221

大型网站系统与Java中间件实践》--大型网站及其架构演进过程(上)

我们在此定义的大型网站的要素必须包括并发的访问量较大的数据量,此外本身业务系统的复杂度也是考察的方面。大型网站要支撑海量数据非常并发的访问量,那么它肯定是一个分布式系统。 下面的演进过程将从一个单机的交易网站开始说起单机(单服务器)负载警告,数据库与应用分离当网站放置在公网对外访问后,访问量不断增大,单台服务器的负载持续升。我们可以想到的就是把数据库与应用从一台机器分到两台机器。 那

微瞰技术的博客 662

大型网站系统与Java中间件—读书笔记2大型网站演进

大型网站定义       特征:访问量 海量数据 二 大型网站架构演进       1 用JAVA技术与单机构件的网站           应用 数据库  WEB容器(如Tomcat) Servlet/JSP HTML CSS SSM            对于大型网站核心功能:计算(应用存储(数据库)       2 单机负载警告           数据库与应用分离 ...

lpckr94的博客 303

SpringBoot+Tomcat集群与Redis分布式锁实战:解决并发与数据一致性

在分布式系统架构中,并发场景下的数据一致性是核心挑战之一。其原理在于,当多个服务实例同时访问共享资源时,需要一种协调机制来保证操作的原子性顺序性,避免出现数据错乱。分布式锁正是实现这一目标的关键技术,它通过在集群范围内提供一个全局互斥量,确保同一时刻只有一个线程能执行关键操作。从技术价值看,分布式锁是构建可用、性能系统的基石,能有效解决商品超卖、库存扣减等经典并发问题。在实际应用场景中,Redis因其性能丰富的数据结构,常被选作分布式锁的实现载体,结合SpringBoot等现代化框架,可以快速构

weixin_34314962的博客 411

Nginx核心原理与并发实战:事件驱动、反向代理与生产避坑指南

Nginx是一种基于事件驱动模型的性能HTTP服务器与反向代理,其单线程异步非阻塞架构显著区别于传统多线程Web服务器(如Apache),在并发场景下具备极低内存占用与超吞吐能力。它通过epoll/kqueue机制实现万级连接复用,结合模块化配置体系,可灵活承担静态服务、API网关、负载均衡、SSL终结等多重角色。技术价值体现在毫秒级响应、零拷贝传输(sendfile)、智能缓存控制及HTTP/2与Brotli压缩支持。典型应用场景包括Vue/React前端路由404修复、502 Bad Gatewa

weixin_30512043的博客 416

# Linux实战笔记:WordPress文创项目部署全流程记录

WordPress是一款开源免费 PHP+MySQL架构的内容管理系统(CMS,Content Management System),2003 年正式发布,基于 GPLv2 开源协议,任何人都可免费使用、修改、二次开发、商用,无需授权费。核心定位:快速搭建各类网站,无需大量代码基础,是全球占有率最的建站程序,全球超 43% 网站基于 WordPress 搭建。WordPress可演变成为:博客、企业官网、商城、资讯门户、课程网站、作品集、下载站等,需要程序员二次开发。

weixin_46136019的博客 434

【信息科学与工程学】【安全领域】 第八十八篇 网络空间安全21

如果员工认为安全政策流程(如复杂的密码规则、频繁的认证、繁琐的软件安装审批)阻碍了工作效率,他们可能会寻找变通方法,例如:写下密码、共享账户、使用未经批准的云服务(影子IT)、绕过安全控制。例如,一个用于显示用户列表的API,可能返回每个用户的完整个人资料,包括邮箱、地址、电话等敏感字段,而前端可能只显示了姓名。:在OAuth 2.0或OIDC流程中,攻击者可能截获授权请求中的“授权码”,或窃取“访问令牌”,然后将其用于另一个客户端(非原始授权的客户端),从而以用户身份访问受保护的资源。

weixin_49199313的博客 418

2.2.2 大型网站技术java中间件-大型网站及其架构演进过程:从一个单机的交易网站说起

2.2.2 大型网站技术java中间件-大型网站及其架构演进过程:从一个单机的交易网站说起 举例: 交易网站的三个功能 用户:用户管理,用户注册,用户维护 商品:商品展示,商品管理 交易:创建交易,交易管理 交易完整的单机架构 下图的两个注意点:(后面的围绕这这两个地方有不同的变化) 1.各个功能模块之间是内部方法调用来构成 2.应用数据库之间是通过JDBC进行访问 ...

one_chao的博客 1321

4.1 大型网站技术java中间件-服务框架 :网站功能丰富后的困境应对

4.1 大型网站技术java中间件-服务框架 :网站功能丰富后的困境应对 场景: 当网站处于下面的结构时,随着网站的规模变大 ->每个应用的都变得复杂,臃肿(会有重复代码,冗余代码) (虽然可以使用共享库的方式,但是应用起来不方便) 优点: 1.实现的成本低,整体容易把控...

one_chao的博客 736

3.大型网站技术java中间件-构建java中间件

3.大型网站技术java中间件-构建java中间件

one_chao的博客 451

2.1 大型网站技术java中间件-大型网站及其架构演进过程 :什么是大型网站

2.1 大型网站技术java中间件-大型网站及其架构演进过程 :什么是大型网站 什么是大型网站 大型网站没有精确的定义: 大型网站应该有海量的数据非常并发是的访问量 ->肯定是分布式,而不是靠单机支持 ...

one_chao的博客 351
上一篇: 2.2.5 大型网站技术和java中间件-大型网站及其架构演进过程:数据集读压力变大,读写分离吧
下一篇: 7.2 linux shell 管理 : 变量
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值