Ribbon是Spring Cloud核心组件之一,它提供的最重要的功能就是负载均衡,和硬件负载均衡F5不同,它的负载均衡是基于客户端的,Zuul网关和Feign可以通过Ribbon轻松的实现服务的负载均衡,同时避免了与业务无关的冗余代码。

1 基本使用

配置文件中配置:

服务消费者中定义
userservice:  #服务提供者
   ribbon:    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule# 负载均衡规则类

代码

    @Bean
    public IRule randomRule(){
        //返回实现IRule的实例 可自定义策略
        return new RandomRule(); //随机 
    }

轮询策略.png

可以自定义类实现 IRule 接口 然后再配置文件中配置自定义的实现类达到自定义负载均衡策略,默认策略是同一区下进行轮询 配置中可以配置区(zone)名

2 Ribbon负载均衡流程图

流程图.png

流程
1 通过url获取服务名称
2 通过服务名称去注册中心获取服务实例
3 通过负载均衡策略选择其中一个实例
4 通过实例修改url,发起请求

3 懒加载和饥饿加载

Ribbon默认是懒加载,当第一次访问服务时再去拉取服务、调用 ,后续放在缓存中,第一次调用慢
饥饿加载则是项目启动时加载服务

Ribbon改为饥饿加载的方式为:

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

多个服务则改为:

    clients: 
        -userservice
        -xxservice

不语
4 声望1 粉丝