Ribbon介绍——核心组件IRule替换规则

文章目录

  • Ribbon是什么
  • 核心组件IRule
    • IRule:根据特定算法从服务列表中选取一个要访问的服务
      • 主要算法
      • 如何替换

官网

Ribbon是什么

Ribbon其实就是一个软负载均衡的客户端组件, 他可以和其他所需请求的客户端结合使用。就是负载均衡+RestTemplate调用。

核心组件IRule

IRule:根据特定算法从服务列表中选取一个要访问的服务

主要算法

  • com.netflix.loadbalancer.RoundRobinRule:轮询
  • com.netflix.loadbalancer.RandomRule:随机
  • com.netflix.loadbalancer.RetryRule:先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内进行重试,获取可用的服务
  • WeightedResponseTimeRule:对RoundRobinRule的扩展,响应速度越快的实例选择权重越多大,越容易被选择
  • BestAvailableRule:会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
  • AvailabilityFilteringRule:先过滤掉故障实例,再选择并发较小的实例
  • ZoneAvoidanceRule:默认规则,复合判断server所在区域的性能和server的可用性选择服务器

如何替换

  • 新建配置类
    ** 在启动类上一层建rule包,注意是上一层**
    Ribbon介绍——核心组件IRule替换规则_第1张图片
    新建配置类
@Configuration
public class MySelfRule {

   @Bean
   public IRule myRule() {
       // 定义为轮询
       // return new RoundRobinRule();
       // 随机
       return new RandomRule();
   }
}
  • 主启动类添加@RibbonClient
@RibbonClient(name = "CLOUD-PAYMENT-SERVICE", configuration = MySelfRule.class)

指定客户端和配置的规则类

你可能感兴趣的:(SpringCloud)