Ribbon负载均衡
1、Ribbon简介
Ribbon是一种客户端的负载平衡器,可让您对HTTP和TCP客户端的行为进行大量控制。Ribbon是提供客户端
负载均衡 的工具,其主要功能就是提供负载均衡算法和服务调用。
2、Ribbon负载均衡的规则
Ribbon负载均衡规则是通过一个叫做 IRule 的接口来定义的,其每一个子接口都是一种规则,一共有七种负载均衡的规则:
负载均衡规则类 | 描述 |
---|---|
RoundRobinRule | 轮询 |
RandomRule | 随机 |
AvailabilityFilteringRule | 过滤掉多次访问故障的服务,以及并发连接数超过阈值的服务,剩下的服务通过轮询策略访问 |
WeightedResponseTimeRule | 为每一个服务器赋予一个权重值,服务器响应时间越长,器权重值越小。会随机选择服务器,权重值会影响到服务器的选择 |
ZoneAvoidanceRule | 根据区域可用的服务器为基础进行选择。使用Zone对服务器进行分类,再对Zone内多个服务做轮询 |
BestAvailableRule | 过滤掉多次访问故障的服务,并选择一个并发量小的服务 |
RetryRule | 先按照轮询选择,如果选择的服务不能访问,则会进行重试,选择其他可用的服务 |
1.Ribbon默认的负载均衡策略 ZoneAvoidanceRule
2.自定义负载均衡策略
方式一:在配置类中自定义一个新的IRule
@Bean
public IRule randomRule(){
return new RoundRobinRule(); //轮询策略
}
方式二:配置application.yml
userservice:
ribbon:
NFLoadBanlancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #轮询策略
注:如果想使用其他的负载均衡策略,只需修改 NFLoadBalancerRuleClassName :后面的值即可,例如:**com.netflix.loadbalancer.RandomRule** 轮询策略
3、Ribbon的饥饿加载
Ribbon默认采用的是懒加载:即第一次访问才会去创建LoadBalanceClient,请求时间会很长。
而饥饿加载:则会在项目启动时创建,降低第一次访问的耗时。
application.yml中配置如下:
ribbon:
eager-load:
enabled: true # 开启饥饿加载
clients: #指定饥饿加载的服务名称
- userservice