HTTP请求调用负载均衡详解
核心概念
负载均衡(Load Balancing)指将网络流量分配到多台服务器或资源上,以优化资源利用率、提升响应速度、避免单点故障,在HTTP请求场景中,主要用于分摊Web服务器压力,保障服务高可用性。
关键算法与策略
-
轮询法(Round Robin)
- 按顺序循环分配请求,适合负载均匀的场景。
- 问题:无法应对后端性能差异,可能导致部分服务器过载。
-
加权轮询(Weighted Round Robin)
- 为不同服务器设置权重,高性能服务器承担更多流量。
- 适用:后端服务器性能差异显著的场景。
-
IP哈希(IP Hash)
- 根据客户端IP计算哈希值,固定分配到同一后端服务器。
- 优势:保证用户会话连续性(如购物车场景)。
- 缺陷:服务器故障时可能导致会话中断。
-
最少连接数(Least Connections)
- 静态资源为主:优先使用CDN加速,结合DNS轮询分配源站。
- 动态请求密集:采用反向代理(如Nginx)+ 最少连接数算法,保障处理效率。
- 高并发且需会话保持:IP哈希或Cookie绑定,配合后端集群扩容。
- 云原生环境:直接使用云服务商LB(如AWS ALB),简化运维。
问题2:如何检测后端服务器是否健康?
解答:
- 配置健康检查路径:在负载均衡设备中设置
/health
等轻量级接口。 - 定义检查规则:
- HTTP状态码:要求返回200~399视为健康。
- 响应时间:超时则标记为不可用(如5秒未响应)。
- 自定义逻辑:检查数据库连接、磁盘空间等指标。
- 失效转移:自动将流量切换至备用节点,并定期重试故障