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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。