百万并发是大型架构核心,下面我重点详解百万并发架构设计@mikechen
百万并发设计
面对百万并发,首要任务是在流量接入层进行极致优化和分流。
接入层(LVS + Keepalived):使用 LVS(四层负载均衡)作为第一道防线。
利用其内核态转发的高性能和 Keepalived 实现的高可用性,快速分发海量tcp/udp连接。
在 LVS 之后,部署 Nginx ,这一层负责七层负载均衡。
将复杂的业务逻辑处理从 LVS 分离,提高 LVS 的效率。
最后,作为所有微服务对外的统一入口,网关必须具备极高的性能和弹性。
负载并发设计
百万并发下,流量入口易成瓶颈,单层负载(如纯Nginx)难以支撑峰值。
为应对突发与持续的海量请求,采用多层负载均衡架构可分担网络与应用压力。
upstream microservices { least_conn; # 最少连接算法,优化高并发 server 192.168.1.10:8080 weight=3 max_fails=3 fail_timeout=10s; server 192.168.1.11:8080 weight=2; keepalive 32; # 连接池复用,提升吞吐 } server { listen 80; location /api/ { proxy_pass http://microservices; proxy_set_header X-Real-IP $remote_addr; health_check interval=3 fails=2 uri=/actuator/health; } }
第一层:通常使用LVS(Linux Virtual Server),在四层转发(L4)。
实现高性能、低开销的调度,负责将流量快速分发到集群入口。
第二层以Nginx等反向代理在七层(L7)进行智能路由、缓存静态内容与做SSL终端。
LVS负责高吞吐与连接分发,Nginx负责HTTP层的会话保持、请求过滤与缓存。
两者协同,可显著提高并发承载能力并降低单点瓶颈风险。
微服务网关架构
网关作为微服务统一入口,在百万并发下需处理认证、路由和流量整形。
Spring Cloud Gateway(基于WebFlux和Netty)取代Zuul。
承担认证鉴权、协议转换、路由聚合与统一限流等职责。
支持非阻塞I/O,单实例QPS超10万,适合高并发场景。
设计要点:
高并发架构:Reactor模型+异步处理,避免线程阻塞。
动态路由使用Predicate(路径/Header匹配)和Filter(限流/日志),集成Nacos服务发现实现负载均衡。
核心功能:JWT/OAuth认证、灰度发布(基于User-Agent)和缓存穿透防护。
与上游协同:Nginx卸载静态资源,Gateway专注业务路由。
典型链路:客户端→LVS/Nginx→Gateway→后端服务。
服务熔断
面对高并发和不稳定的网络环境,服务熔断是关键保障。
熔断器监控服务调用指标(如错误率、延迟),当异常超过阈值时,自动切断调用链,防止故障扩散到整个系统。
通过快速失败保护系统资源,避免雪崩效应,保证其余服务正常工作。
常用熔断框架包括Sentinel、Hystrix…等。
服务降级
降级与限流是保障核心业务可用性的最后防线。
限流通过令牌桶、漏斗或计数器等算法控制进入系统的请求速率,防止资源耗尽;
降级则在资源紧张或服务不可用时,将非核心功能或耗时操作退化为轻量处理或静态响应,从而优先保证关键路径的可用性。
关于mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
