负载均衡是大型架构的必备技能,下面我重点来详解负载均衡架构@mikechen
负载均衡
负载均衡,是分布式系统中的核心技术,用于将请求、或任务合理分配到多个服务器。

通过将请求:分发到多个后端节点并发处理,系统的整体处理能力大大提升,能够支撑更高的并发数。
当系统负载增加时,可以方便地添加新的后端服务器到负载均衡器中,实现系统的水平扩展,应对不断增长的用户需求。
并且,当某个后端服务器发生故障时,负载均衡器可以将流量导向其他健康的服务器,保证服务的持续高可用。
负载均衡架构
根据规模、和复杂度不同,常见的负载均衡架构大致分为三类:

单层负载均衡架构
单层负载均衡架构是最常见的一种负载均衡模式,常使用 Nginx。。。等反向代理工具。
一般,部署在服务入口处,负责将用户请求分发至多个后端服务节点。

客户端请求,首先到达单层负载均衡器。
客户端请求
↓
[Nginx / HAProxy]
↓
后端服务1 后端服务2 后端服务3
然后,负载均衡器根据配置的算法(如轮询、最少连接、IP哈希…等),将请求分发到后端多台服务器节点。
采用这种方式,简单易部署,架构清晰,配置相对简单。
但是,不支持跨地域、或多数据中心,不具备强大的连接转发能力(相比 LVS)。
双层负载均衡架构
双层负载架构,通常第一层使用性能强大的四层负载均衡器(如 LVS),负责大规模的连接转发。
第二层使用功能更丰富的七层负载均衡器(如 Nginx),负责更精细的流量控制、和应用层处理。
如下图所示:

第一层:LVS 工作在四层,负责高性能连接调度;
第二层:Nginx 工作在七层,支持 URL 路由、Header 分发、缓存控制;
LVS 可通过 DR 模式实现内核级转发,性能极高;
多个 Nginx 实例可部署在不同节点上,实现横向扩展。
支持高可用部署(Keepalived + VIP),适合大中型互联网服务,但是运维和架构门槛提升。
多层负载均衡架构
多层负载均衡架构,引入更多层次的负载均衡、和流量管理。
以实现全球范围的服务分发、加速和高可用性。

多层分发策略,流量逐级过滤、加速、和调度。
DNS 实现地域级请求分发,如:阿里云云解析…等等。
CDN 缓存静态资源、降低源站压力,SLB 实现公网入口负载均衡;
内部再做一层 Nginx/LVS,实现微服务、或模块级调度。
支持跨地域负载均衡,但是配置和维护难度较大,成本较高,需要对各个层次的原理和配置有深入的理解。