关于OpenFeigh前一篇已经介绍,这节主要介绍Ribbon
Ribbon是一个负载均衡组件,主要在针对多个提供者的时候,消费者选择哪一个提供者的一种负载均衡调用。
1.负载均衡算法
- RoundRobinRule(轮询策略)
默认采用的策略,按顺序来轮询
- RandomRule(随机策略)
随机选择一个
- RetryRule(失败重试轮询策略)
如果轮询失败则在指定时间内重试,默认500毫秒
- BestAvailableRule(并发量最小的策略)
连接消费者最小的提供者优先选择
- AvailabilityFilteringRule(过滤断开状态的或连接超时的提供者在轮询策略)
过滤掉断开状态的和连接超时的,在轮询选择
- ZoneAvoidanceRule(综合判断性能和可用性选择策略)
综合判断提供者所在区域性能和可用性选择服务器
- WeightedResponseTimeRule(权重响应时间策略)
刚启动会用轮询策略,根据提供者的平均响应时间计算权重,响应时间越短,权重越高,
后面越可能被选中
2.修改负载均衡策略
在消费者工程中application.yml中需要指定微服务名
#提供者微服务名称
msc-provider-depart:
ribbon: #指定策略
NFloadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule
3.负载均衡测试
复制之前的提供者工程,更改端口号,微服务名称不用改,开启3个提供者,输出通过端口区分
启动后可以看到eureka中一个提供者对应3个应用服务
访问消费者信息可以看到每次访问对应端口都会变
4.自定义负载均衡策略
实现IRule接口,重写方法choose实现自己的策略,然后再yml中指定自定义策略同上,最后再@configuration配置类中注册自己添加的策略bean
@bean
public IRule MyRule(){
return new MyCusRule();
}
目前阿里将ribbon放到了nacos服务发现的组件中了,如果再阿里云仓库下载openFeigh发现Rule接口没有