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