Ribbon负载均衡策略

x33g5p2x  于2022-04-10 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(417)

本文素材来自

Ribbon简介

Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。

Ribbon原理

1、服务消费者发起请求
2、LoadBalancerInterceptor拦截器拦截请求
3、RibbonLoadBanlancerClient根据请求中的uri获取到服务提供者的id
4、通过DynamicServerListLoadBalancer根据id从eureka服务端拉去服务列表
5、通过Ribbon负载均衡规则选择某个服务

Ribbon负载均衡策略

Ribbon的负载均衡规则是通过IRule的接口来定义的,其每个实现类都是一种规则

内置负载均衡规则类描述
RoundRobinRule简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。
AvailabilityFilteringRule对以下两种服务器进行忽略
WeightedResponseTimeRule为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个权重值会影响服务器的选择。
ZoneAvoidanceRule以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,而后再对Zone内的多个服务做轮询。
BestAvailableRule忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule随机选择一个可用的服务器。
RetryRule重试机制的选择逻辑

修改Ribbon负载均衡策略

第一种方式

在配置类中定义IRule的实现类

@Bean
    public IRule randomRule(){
        return new RandomRule();
    }

第二种方式

在配置文件application.yml文件中配置

userservice:
  ribbon:
    #负载均衡规则
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

饥饿加载

Ribbon默认是采用懒加载,即第一次访问时才会去创建LoadBalanceClient,请求时间会很长。而饥饿加载则会在项目启动时创建,降低第一次访问的耗时

userservice:
  ribbon:
    eager-load:
      #开启饥饿加载
      enabled: true
      #指定对多个服务饥饿加载
      clients: 
        - userservice 
        - yyyyservice
        - xxxxservice

相关文章