Ribbon策略改变实现步骤(基于Eureka服务注册中心)
前言
Ribbon作为服务调用的作用,自带的默认负载均衡机制是轮询机制也就是轮流访问机制。当然有时候并不是业务上都需要这种机制,这时候就需要改变。
机制类型
RoundRobinRule
轮询
RandomRule
随机
RetryRule
先进行轮询策略获取服务,如果失败则进行重试,再获取可用服务
WeightedResponseTimeRule
对轮询的扩展,响应速度越快的实例选择权重越大,越容易被选择。
BestAvailableRule
会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
AvailabilityFilteringRule
先过滤掉故障实例,再选择并发较小的实例
ZoneAvoidanceRule
复合判断server所在的区域的性能和server的可用性选择服务器
负载机制改变
前提是要有基本的微服务模块要有,所以只需要添加一个配置组件,将新的负载规则添加进去修改即可,这里的新配置规则类需要建在启动类的上一级包下,不得与主启动类在同一包及以下子包中。
接着在主启动类上添加一行:
@RibbonClient(name = “XXXX(生产者服务模块名称)”,configuration = MyBestRule.class)
值得注意的是生产者微服务模块名需要大写,否则有可能会失效,机制将无法更改。configuration属性则是我们所写的新规则!
这里我们将轮询负载机制更改成随机负载机制,再重新启动后更改机制就生效了
注意事项:
1、新建配置规则类名不可以是MyRule
2、不得与主启动类在同一包及以下子包中
3、新建的配置类是在消费者模块中的,不可与生产者弄混淆