电商百万QPS架构方案:L4+L7多层混合实战!

电商是大型架构核心系统,下面我详解电商百万QPS方案@mikechen

电商百万QPS

在大型电商系统中,流量高峰往往具有显著的突发性:大促开场、秒杀活动、直播带货联动。

这些场景,都会在极短时间内将请求量推向极高水平。

要支撑百万级 QPS,不仅需要足够的计算与存储能力,更关键的是构建一套稳定、高效、可扩展的负载均衡体系。

电商百万QPS架构方案:L4+L7多层混合实战!-mikechen

其中,L4(传输层)+ L7(应用层)多层混合负载均衡,已经成为电商高并发场景中的主流实践方案。

 

L4+L7多层混合架构

一个典型的多层混合方案通常如下:

电商百万QPS架构方案:L4+L7多层混合实战!-mikechen

Client
   ↓
CDN
   ↓
L4负载(LVS)
   ↓
L7负载(Nginx)
   ↓
Gateway
   ↓
Service
   ↓
Cache / DB

L4 层:基于 LVS 的极速转发

L4 入口一般由高性能四层代理或云四层 SLB 承担,负责:

  • TCP 连接分发;
  • 多机房流量接入;
  • 后端 L7 集群的粗粒度负载均衡;

这一层强调“快”和“稳”。

电商百万QPS架构方案:L4+L7多层混合实战!-mikechen

# ipvsadm 配置示例(DR模式)
ipvsadm -A -t 公网VIP:80 -s wrr          # 加权轮询
ipvsadm -a -t 公网VIP:80 -r RS1:80 -g    # -g 表示DR模式
ipvsadm -a -t 公网VIP:80 -r RS2:80 -g

# Real Server上必须配置VIP(lo接口,抑制ARP)
ip addr add 公网VIP/32 dev lo
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

通常用 LVS、云 NLB / SLB 等 L4 产品,或者 DPDK 优化后的专有 L4 负载均衡器。

职责:

接受大量 TCP/HTTP/HTTPS 连接,做高并发、高吞吐连接转发。

基于 IP + 端口把请求分发到后端 L7 节点池,可以使用 DR / DNAT / Tunnel 模式或云提供的透明模式。

 

L7 层:基于 Nginx的精细化控制

LVS 将流量分发到 Nginx 资源池后,Nginx 负责具体的业务逻辑分发。

电商百万QPS架构方案:L4+L7多层混合实战!-mikechen

worker_processes auto;
worker_rlimit_nofile 512000;

upstream backend {
    least_conn;                    # 最小连接
    server 10.0.0.1:8080 weight=10;
    server 10.0.0.2:8080 weight=10;
    keepalive 2000;                # 长连接复用
}

server {
    listen 80 reuseport;           # 复用端口提升性能
    location /seckill {
        limit_req zone=seckill burst=100 nodelay;   # 限流
        limit_conn addr 50;                         # 连接数限制
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
    }
}

Keepalive(长连接): 在 Nginx 与后端(Upstream)之间维持长连接,减少高并发下频繁创建 TCP 连接的开销(三路握手)。

Upstream 动态发现: 利用 Consul 或 Kubernetes Service 发现后端 POD,避免频繁 reload Nginx。

流程:

用户请求到 L4 LB,L4 基于后端 L7 IP 列表进行五元组分发,将百万并发连接分摊到多台 L7 节点。

L4 LB 内部维护连接表、做负载均衡算法(如一致性哈希、最少连接)。

并配合健康检查,自动把异常 L7 节点从池子剔除。

评论交流
    说说你的看法