路由、负载均衡与 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:内容分发网络
核心原理:把内容缓存到离用户物理距离近的边缘节点,让用户就近取数,降低时延、减轻源站压力。
工作流程:
- 用户解析域名时,DNS 通过 CNAME 把解析导向 CDN 的智能调度系统(GSLB);
- GSLB 根据用户 IP 归属、节点负载、网络质量,返回最优边缘节点的 IP;
- 用户向边缘节点请求资源:
- 命中缓存 → 直接返回(绝大多数请求到此结束);
- 未命中(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 在后面做精细化流量治理,各取所长。