Ribbon是Spring Cloud外围组件之一,它提供的最重要的性能就是负载平衡,和硬件负载平衡F5不同,它的负载平衡是基于客户端的,Zuul网关和Feign能够通过Ribbon轻松的实现服务的负载平衡,同时防止了与业务无关的冗余代码。
1 根本应用
配置文件中配置:
服务消费者中定义userservice: #服务提供者 ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule# 负载平衡规定类
代码
@Bean public IRule randomRule(){ //返回实现IRule的实例 可自定义策略 return new RandomRule(); //随机 }
能够自定义类实现 IRule 接口 而后再配置文件中配置自定义的实现类达到自定义负载平衡策略,默认策略是同一区下进行轮询 配置中能够配置区(zone)名
2 Ribbon负载平衡流程图
流程
1 通过url获取服务名称
2 通过服务名称去注册核心获取服务实例
3 通过负载平衡策略抉择其中一个实例
4 通过实例批改url,发动申请
3 懒加载和饥饿加载
Ribbon默认是懒加载,当第一次拜访服务时再去拉取服务、调用 ,后续放在缓存中,第一次调用慢
饥饿加载则是我的项目启动时加载服务
Ribbon改为饥饿加载的形式为:
ribbon: eager-load: enabled: true # 开启饥饿加载 clients: userservice # 指定对userservice这个服务饥饿加载
多个服务则改为:
clients: -userservice -xxservice