微服务负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是使用了ribbon
Bibbon负责均衡的流程
1.订单服务发起远程调用时,先到Ribbon;
2.由Ribbon到注册中心中拉去对应服务的实例列表
3.根据一定的策略(此时是轮询)选择选择其中一个服务实例发起远程调用
Ribbon负载均衡的策略?
记标红的就可以,对于最后一种简单来说就是:按区域就近原则去选择服务器,如果没有区域的概念再做轮询,这种也是默认的策略
自定义负载均衡策略如何实现?
在服务的发起方配置,有两种方式:
1.定义一个类实现IRule接口,再编写配置类指定负载均衡策略:使用Javaconfig将负载均衡策略对应的实现类对象注入到Ioc容器中。
全局生效:比如在订单微服务中加了这下面代码,订单微服务中的所有的远程调用都使用这种负载均衡策略
2.在yaml配置文件中配置:哪调用哪个服务的时候使用哪种负载均衡策略
局部生效:这种方式指定哪调用哪个服务的时候使用哪种负载均衡策略