高并发负载均衡精讲

82 阅读4分钟

基础概念

高并发负载均衡精讲

上方URL获取资源

  • 负载均衡定义:将负载(工作任务、访问请求)平衡、分摊到多个操作单元(服务器、组件)上执行,旨在优化资源使用、提高响应速度、增强系统可靠性,解决高并发下的性能、可用性和扩展性问题。

  • 系统扩展方式:介绍纵向扩展(通过增加单机硬件处理能力提升服务器性能)和横向扩展(添加机器组成集群分担访问压力),说明在高并发场景下横向扩展结合负载均衡的重要性。

负载均衡类型

  • 按实现位置
    • 客户端负载均衡:客户端主动选可用服务实例,如 Netflix 的 Ribbon 或 Spring Cloud LoadBalancer。优点是减少网络中间环节、可利用客户端信息智能选择;缺点是客户端实现复杂,需更新客户端处理负载均衡逻辑。
    • 服务器端负载均衡:在服务器端如 API 网关或负载均衡器进行流量分发,像 Nginx、HAProxy 等。优点是集中管理流量分配策略、易实施安全等策略,简化客户端。
  • 按网络层次

    • DNS 负载均衡:最早的负载均衡技术,通过域名系统将域名解析为不同 IP 地址,根据用户地理位置分发请求到最近服务器。优点是使用简单、可加快访问速度;缺点是可用性差、扩展性低、维护性差。

    • IP 负载均衡:在网络层通过修改请求目标地址进行负载均衡,在内核进程完成数据分发,性能较好,但所有请求响应需经负载均衡服务器,集群吞吐量受限于其网卡带宽。

    • 链路层负载均衡:在数据链路层修改 MAC 地址实现,不修改 IP 地址,可让实际处理服务器直接将响应数据包返回给用户浏览器,性能好但配置复杂。

负载均衡算法

  • 轮询法:将请求依次分配给不同服务器,适用于服务器性能相近情况

  • 加权轮询法:为不同服务器设置权重值,按权重比例分配请求,用于服务器处理能力有差异场景

  • 最少连接法:将请求发送到当前连接数最少的服务器,适合长连接请求多的场景

  • 一致性哈希法:将请求特征通过哈希函数映射到服务器节点上,适用于需维持会话状态的场景。

  • IP 哈希法:根据请求者的 IP 地址进行哈希,使相同 IP 地址的请求始终定向到同一服务器

负载均衡实现方式

  • 软件负载均衡:如 Nginx、HAProxy、Traefik 等。Nginx 是常用的高性能 HTTP 和反向代理服务器,支持多种负载均衡算法;HAProxy 是开源高可用负载均衡器,支持 TCP 和 HTTP 负载均衡,功能强大

  • 硬件负载均衡:使用 F5、Citrix 等专用硬件负载均衡器,性能强大,可处理大量并发连接,但成本较高

  • 云负载均衡:如 AWS Elastic Load Balancing、Azure Load Balancer 和 Google Cloud Load Balancing 等,提供按需负载均衡服务,易于与云资源集成

监控与故障处理

  • 健康检查:负载均衡器定期检查后端服务实例健康状况,确保只将请求分发给健康实例

  • 故障转移:某个实例不可用时,负载均衡器自动将流量切换到其他健康实例,保证服务高可用性

  • 流量监控:实时监控流量和响应时间,帮助运维人员识别性能瓶颈和问题

实践案例

  • Nginx 负载均衡配置:展示如何安装 Nginx 及在配置文件中定义 upstream 块指定后端服务器,在 server 块中使用 proxy_pass 指令将请求转发到 upstream 组

  • Spring Cloud Ribbon 客户端负载均衡配置:说明在 Spring Cloud 项目中添加 Ribbon 依赖,在配置文件中定义服务实例列表,在代码中使用 @LoadBalanced 注解开启负载均衡功能等