客户端负载均衡-Ribbon
目录
1、Ribbon概述
2、整合Ribbon
3、后语
1、Ribbon概述
Ribbon是基于客户端的负载均衡算法、相较于Nginx、Ribbon的负责面很窄,只对所绑定的服务提供负载均衡,他将自己注册到Eureka后、就可以获得其所绑定服务的实例列表、然后根据配置的负载算法来指定一个微服务实例干活、值得注意的是、目前的Eureka-client -2.2.1版本依赖已经内置了Ribon的依赖包、所有我们并不需要在添加新的依赖,
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
2、 整合Ribbon
当我们没有配置任何Ribbon相关内容的时候、我们访问某个服务的客户端集群也会有默认的负载均衡-轮询算法所支持,这是Eureka-Client内置了RIbbon的结果、轮询算法也是Ribbon的默认算法、那么我们该如何显式的整合Ribbon、比如说指定一个其他的算法如随机算法。
2.1、配置随机算法实例
和普通Bean配置一样、将其实例注入IOC容器即可、
但需要注意的是、该实例的配置类不能在主启动类的同级目录下、否则在多服务依赖环境下将无法实现算法定制功能、
@Bean
public IRule randomRule(){
return new RandomRule();
}
2.2、启动类配置
比如下面的配置、绑定了一个服务、并为其注入了配置类MyRule、该类里就配置了我们的自定义算法。
//绑定一个服务名、为其指定其负载均衡算法
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE",configuration = MyRule.class)
至此、Ribbon 的整合就完成了
3、后语
Ribbon提供的几种算法各有自己的优点、选择自己适合的即可、当然你也可以自己实现一个算法、或者重写轮询算法、使用CAS。