我觉得负载均衡的主要意义就是,避免单一应用由于并发等原因,导致应用宕机从而导致系统整体无法使用,多负载同时工作,可以很好的解决高并发的问题,实现服务的高可用。
在我们项目中,服务的接入层由nginx管理,用户请求经过nginx之后,根据相应的域名,转发到对应的服务器去,由于nginx只负责请求转发,没有业务逻辑处理,所以效率上非常高。
nginx支持的负载均衡策略有很多,我们在nginx.conf中配置upstream模块即可。
首先是轮训,默认的就是这种方式
第二种权重的方式,就是根据服务器的性能,配置较大的权重,nginx就会分配更多的请求
第三种是iphash的方式,nginx会根据请求的ip地址,今夕那个hash运算,然后分配相应的服务器,后续来自同一ip的请求都会分配到这个服务器上
第四种是最少连接数,把请求转发给连接数较少的后端服务器
还有就是可以根据响应时间和url hash来做处理,我们项目中配置的是权重的方式。
在我们项目的微服务架构中,feign和zuul都集成了ribbon的的功能,它是负责在微服务之间相互调用的时候,帮我们实现负载均衡的功能,我们在将微服务注册到注册中心时,如果服务名称一致,就默认为一个集群,在进行远程调用或者路由转发的时候,都可以均衡的访问响应的服务器,ribbon的负载均衡机制有轮训和随机,默认是轮训,当然也可以自定义负载均衡的策略。