随着应用服务访问量的增多,后台服务会遇到访问数量瓶颈,这个时候需要我们在后台应用服务之前通过负载均衡技术实现请求的转发,后台的应用服务采取集群的方式对接到前端的负载均衡服务中,这样提升我们系统的访问并发量。市面上实现负载均衡技术的产品有很多,比如硬负载F5,软负载HAProxy、Nginx。在这里我选择Nginx软负载的方式实现系统的负载均衡功能。选择Nginx的主要原因是开源免费,以及项目中已经使用了它作为反向代理的作用。
接触到的负载均衡算法有以下几种:随机算法、轮询算法,IP Hash算法、加权轮询算法、最少连接数算法、加权最少连接数算法。这里列举的算法在Nginx中使用到的是最简单的轮询算法,配置了以后满足了系统的需求。下面说明上述列举出来的负载均衡算法的实现思路:
一、随机算法
这个算法实现起来比较简单,主要是通过Random随机函数进行连接选取,然后进行转发。
二、轮询算法
这个算法实现起来也比较简单,主要是按照配置的顺序依次取出连接进行转发。
三、IP Hash算法
对客户端的访问IP进行Hash算法计算,然后对应到我们的集群服务地址上实现转发,同一个客户端地址会被
转发到相同的集群服务地址。
四、加权轮询算法
对配置的集群地址设置Weight权重值,请求过来以后根据Weight值进行计算,筛选出高权重的服务地址进
行转发,可以实现对后台高性能的服务器进行优先访问。
五、最少连接数算法
负载均衡程序存储转发给后台集群服务的连接数,以此为标准,对后续到来的请求,筛选出哪个后台集群服
务被分配请求数量最少,找出连接数量最少的地址进行转发。
六、加权最少连接数算法
在上述最少连接数算法的基础上,加入Weight权重值作为衡量筛选后端连接地址的指标。