系统分析师笔记(五)-- 案例分析
软考案例分析:基于 LVS 的负载均衡集群升级
一、题目背景
某电子商务公司的主要业务是书籍、服装、家电和日用品的在线销售。随着公司业务发展和用户规模不断扩大,现有的网上交易系统无法正常处理日益增大的请求流量,公司决策层决定升级其网上交易系统。
在确定使用基于负载均衡集群的系统升级方法后,李工给出了一个基于 LVS(Linux Virtual Server)的负载均衡集群实现方案。公司的系统分析师在对现有系统进行深入分析的基础上,认为以下两个实际情况对升级方案影响较大,需要对该方案进行改进:
- 系统需要为在线购物提供购物车功能,用来临时存放选中的产品。
- 系统需要保证向所有的 VIP 用户提供高质量的服务。
在实际应用中,通常会将传输层负载均衡方法与应用层负载均衡方法结合起来使用,以提高系统整体的性能、可用性和可靠性。
二、问题
请分析上述两个实际情况对基于 LVS 的负载均衡升级方案的影响,并给出相应的改进措施。
三、参考答案
1. 问题一:购物车功能(应用会话数据支持)
影响分析
HTTP 协议是无状态的。如果单纯使用 LVS 的四层负载均衡(基于 IP+端口转发),同一个用户的请求可能会被轮询分发到不同的业务服务器上。
例如:
- 用户在服务器 A 将商品加入购物车(数据存在 A 的内存中)。
- 用户下一次请求被 LVS 转发到服务器 B。
- 服务器 B 的内存中没有该用户的购物车数据,用户会发现“购物车空了”。
这会导致严重的用户体验问题。
改进措施
- 引入会话服务器(Session Server)机制:将应用会话数据(如购物车)从业务服务器中剥离,统一存放在服务端的 Session Server(如 Redis 集群)中。
- 保证会话数据容错:教材特别强调,应用会话数据大多数情况下是不可恢复的。如果 Session Server 宕机,所有用户的购物车将全部丢失。因此必须采用支持会话数据容错的方案,例如:
- Redis 主从复制 + 哨兵模式
- Redis Cluster 集群
- 会话数据持久化到数据库
- 多副本冗余存储
这样,无论 LVS 将请求分发到哪台业务服务器,它们都从同一个 Session Server 读取数据,保证购物车状态一致。
2. 问题二:VIP 用户高质量服务(客户端联系 Client Affinity)
影响分析
当数据量不断增长时,业务服务器和会话(或缓存)服务器之间可能会反复移动较大的数据,导致网络开销增大,无法保证 VIP 用户的服务质量。
如果 VIP 用户的请求每次都被分发到不同的服务器,服务器需要频繁地从 Session Server 拉取该用户的专属数据,延迟增加,体验下降。
改进措施
- 采用应用层负载均衡实现客户端联系(Client Affinity):将某个客户端(VIP 用户)的所有请求,通过应用层负载均衡器(如 Nginx、HAProxy)强制转发到相同的服务器实例上。
- 实现数据本地化:使得一个用户会话的所有请求被同一台服务器处理,该服务器可以在本地内存中缓存该 VIP 用户的专属数据,避免反复跨网络拉取,从而降低延迟,保证服务质量。
- 常用技术:
- Nginx 的
ip_hash策略 - Nginx 的
sticky模块(基于 Cookie) - HAProxy 的
balance source或 Cookie 保持
- Nginx 的
3. 整体架构改进:四层 + 七层结合
在实际应用中,通常将传输层(四层)负载均衡与应用层(七层)负载均衡结合使用,兼顾高并发吞吐量和灵活的业务路由能力。
- LVS 层:负责四层抗压,把海量流量分摊到后端的 Nginx 集群。
- Nginx 层:负责七层解析,识别 Cookie 或 URL,将 VIP 用户的请求通过
ip_hash或sticky模块固定分配给某台业务服务器(Client Affinity)。 - 业务服务器:处理具体业务,并读写 Session Server 中的共享数据。
- Session Server:集中存储会话数据,并具备高可用和容错能力。
四、答题金句(软考踩分点)
如果下午案例题问到:“针对该电商系统的升级,请分析系统分析师提出改进方案的原因。”
标准踩分话术:
-
针对购物车问题:
HTTP 协议是无状态的,纯 LVS 四层负载均衡无法保持会话状态。需要引入 Session Server(会话服务器) 集中存储会话数据,并必须考虑会话数据的容错机制(如集群、持久化),防止单点故障导致购物车数据丢失。
-
针对 VIP 服务质量问题:
为避免业务服务器与 Session 服务器之间频繁传输大量数据导致性能下降,应采用应用层负载均衡实现客户端联系(Client Affinity),将同一客户端的请求固定转发到同一台服务器实例,实现数据本地化,从而保证特定用户的服务质量。
-
整体架构:
应采用四层(LVS)与七层(Nginx)负载均衡相结合的架构,兼顾高并发吞吐量和灵活的业务路由能力。
五、总结
| 问题 | 影响 | 改进方案 |
|---|---|---|
| 购物车功能 | HTTP 无状态,LVS 四层无法保持会话 | 引入 Session Server,并做会话容错 |
| VIP 服务质量 | 数据反复跨网络传输,延迟高 | 应用层负载均衡 + Client Affinity,数据本地化 |
| 整体架构 | 单一四层负载均衡不够灵活 | 四层 + 七层结合,分层处理 |
一句话记忆:
LVS 抗压,Nginx 路由,Session Server 存状态,Client Affinity 保 VIP。
浙公网安备 33010602011771号