# 负载均衡

作者:Ethan.Yang
博客:https://blog.ethanyang.cn (opens new window)


上一篇文章介绍了现代架构的演进,本篇将深入讲解**负载均衡(Load Balancing)**的核心概念与常见实现。

# 一、常见的指标

衡量系统性能的常见指标包括:

# 1. 并发数(Concurrency)

  • 并发用户数:同时在线使用业务的用户数(部分用户可能处于挂机状态)。
  • 并发连接数:客户端与服务器之间的连接数(部分连接仅保持活跃)。
  • 并发请求数:系统同时处理的请求数(包括静态请求和写操作)。
  • 并发线程数:系统内部并发运行的线程数量。

并发数的高低直接影响系统的负载能力。


# 2. 吞吐量(Throughput)

单位时间内系统处理请求的总量。吞吐量受业务逻辑复杂度和请求数据大小的影响。


# 3. TPS & QPS

  • TPS(Transactions Per Second):每秒完成的事务数,一个事务通常代表一次完整的业务操作(如“打开首页”)。
  • QPS(Queries Per Second):每秒查询次数,偏向接口级调用统计。

TPS 与 QPS 的区别在于度量粒度:TPS 是“业务级”,QPS 是“接口级”。


# 4. 平均响应时间(Response Time)

从请求发出到收到响应的平均耗时。该指标体现了用户体验


# 5. 可靠性指标

  • 平均无故障时间(MTBF):系统从上线到第一次故障发生之间的平均运行时间。
  • 平均修复时间(MTTR):从故障发生到恢复的平均时间。

这些指标通常是系统优化的核心目标,而优化的根本在于分流

将原本指向单一系统的请求分散到多个系统上,从而降低单节点压力。


# 二、DNS 负载均衡

DNS 的主要职责是:将域名解析为 IP 地址

# 1. 常见记录类型

  • A 记录(Address Record):域名 → IP 地址
  • CNAME 记录(Canonical Name):域名 → 域名

# 2. DNS 负载均衡原理

通过在同一个域名下配置多个 A 记录(多个 IP 地址),实现流量分散到不同服务器上。

# 三、CDN 加速与分流

# 1. CDN 基本原理

CDN(Content Delivery Network,内容分发网络)通过将内容分发到距离用户网络拓扑最近的节点,提升访问速度并降低源站压力。

  • CDN 节点(Edge Node):离用户最近的缓存节点。
  • 源站(Origin Server):内容的原始服务器。

CDN 的“近”并非地理距离,而是指网络拓扑上的最优路径,它会动态评估网络负载、节点可用性等因素。


# 2. CDN 的作用

  1. 减少源站系统的并发压力;
  2. 降低平均响应时间;
  3. 缓解网络带宽拥堵。

# 3. 缓存策略

  • 静态内容(图片、CSS、JS 等):在 CDN 节点缓存;
  • 动态内容:直接请求源站。

缓存规则由配置策略(如路径、文件类型、参数)决定哪些内容可被缓存。


# 4. CDN 工作流程概览

  1. 用户请求访问 taobao.com
  2. DNS 将请求解析至最近的 CDN 节点;
  3. CDN 节点检查本地缓存:
    • 若命中缓存:直接返回;
    • 若未命中:向源站请求内容并缓存。

CDN 的核心是“拦截 + 缓存 + 注册中心映射”。


# 四、动态内容的分流——直连方案

静态内容可通过 CDN 缓存优化,而动态请求需要直接访问源站。
这时可以采用 直连方案

  • 用户 → 注册中心(地址映射) → 实际源站

通过在注册中心维护地址映射关系,实现动态请求的智能分流,从而进一步减轻主站压力。

CDN 适用于静态资源加速

DNS 适用于简单的流量分发

直连或注册中心适用于动态业务请求分流。

系统的每一步优化,都是从问题中演化而来
“好的架构设计不出来,只能演化出来。”