我与DeepSeek读《大型网站技术架构》(6)- 上

永无止境:网站的伸缩性架构

伸缩性定义与实现目标

网站的伸缩性指通过增减服务器数量灵活调整服务能力,而无需改变软硬件设计。核心目标是实现线性扩容,即新增服务器数量与系统处理能力成正比。


两种基本伸缩设计手段

(1)物理分离功能实现伸缩

  • 纵向分层:将系统按功能分层(如应用层、数据层),分离到不同服务器集群。
    • 例如:将数据库服务与应用程序服务器分离。
  • 横向分业务:将不同业务模块(如用户系统、支付系统)部署到独立的服务器集群。
    • 例如:促销活动期间单独扩容订单处理子系统。

(2)单一功能集群伸缩

通过集群技术实现同功能服务器的横向扩展,典型策略包括:

  • 负载均衡:采用反向代理(如Nginx)或负载均衡设备,均匀分配用户请求至集群中的服务器。
  • 无状态设计:确保服务节点无本地会话数据(如使用分布式缓存存储Session),便于随时增减节点。

应用服务器集群的伸缩性设计

应用服务器需设计为无状态(不存储请求上下文信息),确保集群内任意服务器处理请求的结果一致。这一特性使得用户请求可被动态分发到任意一台服务器,支撑集群线性扩容。

负载均衡服务器是实现伸缩性的核心装置,其功能包括:

  • 请求分发:基于预设规则(如轮询、权重、响应时间)分配用户请求至集群节点。
  • 集群感知:动态发现上线/下线服务器节点,实时调整流量分配策略。
  • 高可用保障:通过心跳检测自动剔除故障节点,避免服务中断。

HTTP重定向负载均衡

(1)实现原理
  1. 用户访问域名后,DNS解析至负载均衡服务器
  2. 负载均衡服务器根据算法(如轮询、加权)生成实际物理服务器地址,返回HTTP 302重定向响应
  3. 浏览器自动重定向至目标应用服务器完成请求。
(2)优缺点
优点 缺点
实现简单,仅需HTTP协议支持 二次请求增加延迟,用户体验下降
逻辑透明,便于集成业务规则 重定向服务器可能成为单点故障

DNS域名解析负载均衡

(1)实现原理

在DNS服务器中为同一域名配置多个A记录(如www.mysite.com映射至多个IP地址)。用户请求解析时,DNS根据负载均衡算法返回不同IP地址,实现对多台服务器的流量分配。

(2)优缺点
优点 缺点
天然分布式,避免单点故障 DNS缓存导致下线服务器仍需处理旧请求(延迟更新问题)
支持地理就近解析,提升用户访问速度 控制权在域名服务商,扩展性受限

反向代理负载均衡

(1)实现原理

反向代理服务器(如Nginx)接收用户请求,按算法转发至后端真实服务器,同时缓存响应结果加速后续请求。Web服务器无需暴露真实IP(仅代理可见内部网络)。

(2)优缺点
优点 缺点
与反向代理功能集成,部署简单 所有请求/响应需经过代理,可能成为性能瓶颈
支持HTTP层精细控制(如缓存、SSL卸载) 处理性能低于底层(网络层/链路层)方案

IP负载均衡

(1)实现原理

负载均衡服务器在内核层修改数据包目标IP地址(SNAT),将请求转发至真实服务器。响应需经负载均衡服务器返回,实现地址回写(源地址转换为负载均衡服务器IP)。

(2)优缺点
优点 缺点
内核态处理,性能高于应用层方案 双向流量均通过负载均衡服务器,网卡带宽成瓶颈
透明性高,后端服务器无需特殊配置 不适合大文件下载或视频流等高吞吐场景

数据链路层负载均衡(直接路由DR模式)

(1)实现原理
  • 负载均衡服务器仅修改数据帧的mac地址(不修改IP地址),将请求转发至真实服务器。
  • Web服务器使用虚拟IP,响应直接通过网关返回用户,不经过负载均衡服务器
(2)优缺点
优点 缺点
响应数据直返用户,负载均衡服务器无带宽压力 需统一虚拟IP,网络架构复杂度高
高性能,支持大规模并发和高吞吐量 需要服务器网卡支持混杂模式(Promiscuous Mode)

负载均衡算法

(1)核心算法类型
算法 描述 适用场景
轮询(RR) 请求按顺序依次分发至各服务器,保证均衡 服务器硬件配置一致且负载类型单一的场景
加权轮询(WRR) 根据服务器性能预设权重,高性能服务器分配更多请求 服务器硬件性能差异较大的场景
随机(Random) 完全随机分配请求,简单且天然均衡 适合小规模集群和测试环境
最少连接(Least Conn) 优先分配请求至当前连接数最少的服务器 处理时间差异大的长连接服务(如WebSocket)
源地址散列(Hash) 根据用户IP计算哈希值,固定请求至特定服务器 需会话保持的场景(如购物车)
(2)算法对比
  • 会话粘连:源地址散列可实现,其他算法需结合Session共享机制。
  • 动态权重:加权轮询需手动调整权重,动态感知能力较弱;最少连接能实时响应负载变化。

未完待续…

你可能感兴趣的:(架构)