1、什么是负载均衡?

负载均衡可以想象为将所有请求先聚在一起,然后根据负载均衡算法分发请求达到合理分配请求,将服务器处理请求的效率达到最大化,为微服务集群分担请求,降低系统的压力。。

负载均衡算法:

1、随机,通过随机选择服务进行执行,一般这种方式使用较少;
2、轮训,负载均衡默认实现方式,请求来之后排队处理;
3、加权轮训,通过对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力;
4、地址Hash,通过客户端请求的地址的HASH值取模映射进行服务器调度。
5、最小链接数;即使请求均衡了,压力不一定会均衡,最小连接数法就是根据服务器的情况,比如请求积压数等参数,将请求分配到当前压力最小的服务器上。
6、其他若干方式。

我们平时说负载均衡一般都是指服务端负载均衡,但因为分布式spring cloud分布式框架出现,也出现了客户端负载均衡这一概念,那么两者的区别是什么呢?

2、服务端负载均衡在这里插入图片描述

1)、服务端负载均衡分两种:

一种是硬件负载均衡,硬件比如:F5、Array等

另一种是软件负载均衡,软件比如:LVS、Nginx等

2)、具体流程:

客户端发送请求被服务端负载均衡拦截,根据负载均衡算法分发请求到具体服务器上处理请求

3、客户端负载均衡

在这里插入图片描述
1)、具体流程:

1、客户端负载均衡Ribbon从注册中心Eureka Server中获取服务列表

2、客户端负载均衡Ribbon根据负载均衡算法分发请求

客户端负载均衡Ribbon在分布式系统的位置

在这里插入图片描述
其实客户端负载均衡Ribbon的配置就处于微服务的消费者中,消费者通过restTemplate远程调用
触发Ribbon的负载均衡

服务端负载均衡和客户端负载均衡的区别

服务端负载均衡的流程:客户端——>负载均衡服务器——>服务器

客户端负载均衡:客户端——>服务器

所以我们可以看出服务端负载均衡是通过一台服务器达到负载均衡的,
而客户端负载均衡通过自己就能达到负载均衡(它先从注册中心获取服务列表),并不需要其他服务器

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐