负载均衡(Load Balancing)是一种分布式系统架构中的技术,用于将网络请求或任务分散到多个服务器或资源上。
比如:当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展来提高整个系统的处理能力。
如下图所示:
上图的:tomcat-node1、tomcat-node2、tomcat-node3这些节点就可以横向扩展,通过多台服务器来承担并发压力。
负载均衡可以在不同的层次上实现,包括:
- 硬件负载均衡器: 使用专门的硬件设备来实现负载均衡,如硬件负载均衡器。
- 软件负载均衡器: 在应用层或网络层使用软件来实现负载均衡,如反向代理服务器、负载均衡算法。
在负载均衡的设计中,有几种常见的负载均衡策略:
- 轮询(Round Robin): 将请求依次分配给服务器列表中的每个服务器,每次请求后移动到下一个服务器。适用于服务器性能相近的情况。
- 权重轮询(Weighted Round Robin): 类似于轮询,但每个服务器有不同的权重,可以根据服务器性能调整权重。
- 最少连接(Least Connections): 将请求分配给当前连接数最少的服务器,以确保负载均衡。适用于长连接的情况。
- 权重最少连接(Weighted Least Connections): 类似于最少连接,但每个服务器有不同的权重,可以根据服务器性能调整权重。
- 随机(Random): 随机选择一个服务器来处理请求,适用于简单的负载均衡需求。
- IP 哈希(IP Hash): 根据客户端 IP 地址的哈希值来选择服务器,可以确保同一客户端的请求始终发送到同一服务器。
更加详细的请查看:5大负载均衡算法(原理图解)