2020-06-25 13:57:19
负载均衡是分布式系统中将计算或请求任务合理分配到不同节点,以优化资源利用、提升系统性能和可靠性的技术,其核心目标包括性能均衡、业务均衡及高可用性,常见实现方式有DNS、硬件、软件三类,算法涵盖轮询、哈希、随机及资源调度等。具体内容如下:
一、负载均衡的核心概念负载均衡的“负载”可指数据或请求:
负载均衡的目标不仅是性能均衡,还需考虑业务均衡,例如不同任务分片算法的目标可能不同。此外,负载均衡不仅存在于分布式系统,任何同时开启多个服务节点的业务场景均可使用。
二、负载均衡的常见实现方式1. DNS负载均衡
简单,应用服务器无需调整。
可根据用户位置返回就近地址,加快访问速度。
DNS分级存储可能导致缓存失效延迟,服务器下线时访问可能失败。
对后台服务器压力无感知,可能造成压力不均。
扩展性差,难以根据业务特点调整。
功能强大,支持4-7层负载均衡及多种协议、加密、状态监控等。
性能高,并发能力可达100万以上,例如F5部分性能指标:
每秒L7请求数:1M
每秒L4连接数:400K
L4吞吐量:40Gbps
价格昂贵(十多万至几十万)。
功能扩展性受限,不支持的功能无法实现。
主流软件包括LVS、Nginx、HAproxy:
LVS(Linux Virtual Server):
原理:通过内核链(PREROUTING、INPUT、POSTROUTING)实现请求转发,支持NAT、DR、tun、full-nat模式。
优点:
性能高(可达80万/s),资源消耗低。
稳定性高,支持热备方案Keepalived。
工作在四层,支持几乎所有协议。
缺点:
伸缩能力一般,Director可能成为瓶颈。
无法完全判断节点故障。

Nginx:
原理:支持四层和七层负载均衡,可配置多种算法(如轮询、权重、ip_hash、least_conn、fair)。
优点:
搭建和维护简单,成本低(开源)。
灵活性强,可根据后台服务器状态调整策略,支持插件开发。
缺点:性能相对较差。
Nginx配置示例:
未考虑请求资源差异(如CPU密集型与内存密集型任务)。
同一客户端的两次请求可能由不同机器处理,导致缓存失效。
不利于缓存数据。
未考虑服务器性能差异和任务种类。