1.轮询
轮询算法把每一个请求轮流发送到到每一个服务器上,例如一共有6个服务器产生了6个请求,这6个请求按照(1,2,3,4,5,6)
的顺序发送,最后(1,3,5)
的请求会被发送到服务器1,(2,4,5)
的请求会被发送到服务器2,这种负载均衡称为轮询。
2.加权轮询
加权论寻是在轮询的基础上,根据服务器的性能差异为服务器赋予了一定的权值,例如服务器1被赋予的权值为5,服务器2被赋予的权值为1,那么(1,2,3,4,5)
请求会被发送到1,(6)
被发送到服务器2。
3.最小连接
由于每个请求的连接时间不一样,使用轮询或者加权轮询算法的话,可能会让一台服务器当前连接数过大,而另一台服务器的连接数过小,造成负载不均衡,例如(1,3,5)
请求会被发送到服务器1,但是(1,3)
很快就断开连接了,此时只有请求(5)
连接服务器1,(2,4,6)
请求发送到服务器2,且此时只有(2)
的请求断开,该系统继续运行时服务器2会承担过大的负担。
4.加权最小连接
在最小连接的基础上,根据服务器的性能为每一台服务器分配权重,再 根据权重计算出每一台服务器能处理的连接数。
5.随机算法(Random)
根据请求随机发送到服务器上,和轮询算法类似,该算法比较适合服务器性能产不多的场景。
6.源地址哈希法(IP Hash)
源地址哈希算法通过对客户端IP哈希计算得到一个数值,用该数值对服务器数进行取模运算,取模结果为目标服务器的序号。
优点:保证同一IP的客户端请求都会被Hash到统一台服务器上。
缺点:不利于集群扩展(后台服务器数量的变化会影响Hash结果,可以采用一致性Hash进行改进)