跳到主要内容
版本:1.0

路由、负载均衡与 CDN

5.1 路由基础​

路由表核心字段:目的网络/掩码、下一跳(Next Hop)、出接口、管理距离/度量值(metric)。

最长前缀匹配原则:一个目的 IP 可能同时命中多条路由(如默认路由 0.0.0.0/0 与 10.1.1.0/24),路由器始终选掩码最长(最精确)的那条。这是路由转发的根本规则,也是策略路由/流量精细化控制的基础。

静态路由 vs 动态路由:

维度静态路由动态路由
配置方式手工逐条配置路由协议自动学习、收敛
优点精确可控、无协议开销自动适应拓扑变化、适合大规模
缺点不能自动适应故障、维护量大占用资源、有收敛延迟
场景小网络、出口默认路由、精确引流中大型网络

常见动态路由协议:

  • RIP(距离矢量):以跳数为度量,最大 15 跳(16 = 不可达),周期性广播整表,收敛慢、有环路风险(水平分割缓解),只适合小网络;
  • OSPF(链路状态):每台路由器泛洪链路状态通告(LSA),全网同步一张拓扑图,跑 Dijkstra(SPF)算法算最短路径;以带宽计算开销,支持区域化分层,收敛快,中大网络主流内部网关协议(IGP);
  • BGP(路径矢量):自治系统(AS)之间的外部网关协议(EGP),基于策略选路,互联网骨干的黏合剂(校招了解概念即可)。

5.2 负载均衡(LB)​

四层负载均衡(LVS 为代表):

  • 工作在传输层,只看 IP + 端口,不解析应用内容;
  • 通过修改报文头(NAT 模式改 IP/端口;DR 模式改 MAC;TUN 隧道模式)把流量转发给后端;
  • 在内核态转发,性能极高、吞吐大、协议无关(TCP/UDP 都行,甚至 MySQL、Redis、K8s 流量)。

七层负载均衡(Nginx 为代表):

  • 工作在应用层,完整解析 HTTP/HTTPS;
  • 可以按 URL 路径、Host 域名、Cookie、Header 做精细化分流和改写;
  • 支持 HTTPS 加解密卸载、缓存、压缩、限流、重写等高级功能;
  • 用户态处理,性能低于四层,但功能强、灵活。

四层健康检查:对后端端口做 TCP 三次握手探测——握手成功即认为服务存活(只证明端口活着,不证明应用正常)。

七层健康检查:向后端发真实 HTTP 请求,根据返回状态码判断:200 正常;301/302 视策略;404/502 等视为异常。检查路径常配专用接口(如 /healthz)。

常用调度算法:

算法规则适用
轮询(RR)依次分发后端性能相同
加权轮询(WRR)按权重比例分发后端性能不均
最小连接(LC)分给当前连接数最少的请求处理时长差异大
源 IP 哈希同一 IP 固定打到同一后端需要会话保持(但破坏均衡,后端挂了会话丢失)
一致性哈希环形哈希空间,节点变动只影响相邻区间缓存代理(CDN、Redis 客户端分片)

5.3 CDN:内容分发网络​

核心原理:把内容缓存到离用户物理距离近的边缘节点,让用户就近取数,降低时延、减轻源站压力。

工作流程:

  1. 用户解析域名时,DNS 通过 CNAME 把解析导向 CDN 的智能调度系统(GSLB);
  2. GSLB 根据用户 IP 归属、节点负载、网络质量,返回最优边缘节点的 IP;
  3. 用户向边缘节点请求资源:
    • 命中缓存 → 直接返回(绝大多数请求到此结束);
    • 未命中(miss)→ 边缘节点回源(向上层节点或源站拉取),缓存一份再返回给用户。

关键概念:边缘节点(用户侧缓存)、中心节点(回源汇聚层)、回源(缓存未命中向上拉取)、缓存过期策略(TTL、purge 刷新)。

适用场景:静态资源(图片、视频、JS/CSS、安装包、直播拉流);动态请求无法直接缓存(可用动态加速/边缘计算优化链路)。

CDN 的好处:降低访问延迟、分担源站带宽与压力、抗流量高峰与部分 DDoS、提高可用性(就近多节点冗余)。

5.4 LVS vs Nginx 选型(必考)​

什么时候选 LVS(四层):

  • 大流量、高并发、追求极致转发性能;
  • 转发的是非 HTTP 协议:MySQL、Redis、Kafka、K8s Service(kube-proxy 的 IPVS 模式就是 LVS 技术)。

什么时候选 Nginx(七层):

  • 需要按 URL 路径、Host、Cookie 做内容分流(如 /api 走 A 集群、/static 走 B 集群);
  • 需要 HTTPS 加解密卸载、Gzip 压缩、缓存、限流、灰度发布等应用层能力。

企业典型架构(标准答法):

用户 → DNS 解析 → LVS(四层,扛流量入口) → Nginx(七层,按内容分流 + TLS 卸载) → 后端应用服务器集群 → 数据库/缓存。

分工:LVS 顶在最前面负责高性能转发,Nginx 在后面做精细化流量治理,各取所长。