Spring Cloud:Ribbon基础知识
时间:2020-09-05 17:29:01
收藏:0
阅读:75
一.简介
Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。
简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动帮助你基于某种规则去连接这些机器。我们很容易使用Ribbon实现自定义的负载均衡算法。
Ribbon在工作时分成两步:第一步选择EurekaServer,他优先选择在同一个区域内负载较少的server。第二步再根据用户指定的策略,再从server取到的服务注册列表中选择一个地址。
二.Ribbon基本使用
依赖
在新版eureka-client依赖中,已经默认导入了Ribbon的相关依赖了。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
我们如果想要使用Ribbon,只需要在RestTemplate的配置类中加上@LoadBalanced注解即可。(默认使用的是轮询算法)然后进行服务调用,Ribbon就开始工作了。
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
三.Ribbon的负载规则
Ribbon默认自带一下负载规则:
- RoundRobinRule:轮询
- RandomRule:随机
- RetryRule:先按照RoundRobinRule的策略获取服务,如果获取服务失败则会在指定时间进行重试,获取可用的服务。
- WeightedResponseTimeRule:对RoundRobinRule的扩展,相应速度越快的实列选择权重越大,越容易被选择。
- BestAvailableRule:会优先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务。
- AvailablityFilterRule:会过滤掉故障实例,再选择并发较小的实例。
- ZoneAvoidanceRule:默认规则,符合判断server所在区域的性能和server的可用性选择服务器。
四.替换Ribbon的负载规则
原文:https://www.cnblogs.com/wwjj4811/p/13617929.html
评论(0)