负载均衡是分布式系统中很重要的一部分。那么什么是负载均衡呢?下面是个人的理解。
多台服务器以对称的方式组成一个服务器组合,组合中的每台服务器都可以单独对外提供服务。为了使这个服务器组合能够承受更大的并发量,需要将整个服务器组合收到的所有请求合理的分配给每一个服务器,这就叫做负载均衡。
下面是一些常见的负载均衡算法。其中,简单轮询和最小连接数法可能会出现木桶效应,成为整个服务器集群的瓶颈,因此不推荐使用。推荐使用加权轮询法(Nginx默认)、加权随机法。
简单轮询:
简单轮询是所有轮询算法中最简单的一种,所有的请求按顺序依次分发给所有服务器。但简单轮询不支持配置负载,所以当所有机器的性能处于同一水平的情况下可以考虑这一算法,否则极有可能产生木桶效应,性能差的机器扛不住较高的并发量。
加权轮询: Weight Round Robin
根据服务器配置的不同,给其分配不同的权重。服务器的配置越高,对应权重越高,处理的请求越多。Nginx负载均衡默认使用的就是加权轮询法。
加权随机:
和加权轮询一个思路,一个服务器配置越高,权重就越高,请求被随机到这个服务器的几率也就越高。
最小连接数法:
将任务分配给当前连接数最少的服务器。缺点和简单轮询是一样的,仅适用于所有服务器性能相同的情况,否则极有可能出现木桶效应。