引入Nacos需要优先排出,如果不接入,请跳过
代码语言:javascript复制 <!--nacos服务发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.1.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>复制
配置文件需要加入关闭Ribbon即可,不然会报错!
代码语言:javascript复制spring.cloud.loadbalancer.ribbon.enabled=false复制
引入Eureka-Client会自动引入Ribbon,但是新的3.0,就没有引入,就需要我们手动添加依赖
代码语言:javascript复制 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>复制
请求进入LoadBalanceInterceptor负载均衡拦截器,
Ribbon实现的负载均衡策略
- com.netflix.loadbalancer.RoundRobinRule :以轮询的方式进行负载均衡。
- com.netflix.loadbalancer.RandomRule :随机策略
- com.netflix.loadbalancer.RetryRule :重试策略。
- com.netflix.loadbalancer.WeightedResponseTimeRule :权重策略。会计算每个服务的权重,越高的被调用的可能性越大。
- com.netflix.loadbalancer.BestAvailableRule :最佳策略。遍历所有的服务实例,过滤掉故障实例,并返回请求数最小的实例返回。
- com.netflix.loadbalancer.AvailabilityFilteringRule :可用过滤策略。过滤掉故障和请
如何定义Ribbon负载均衡的策略
1、自定义IRule Bean使其子类实现是策略对象,比如随机策略
代码语言:javascript复制@Bean
public IRule randomRule{
return new RandomRule();
}复制
原来代码不需要修改,直接使用原来的LoadBalance测试即可
2、修改配置文件,一定在Maven依赖库看到Ribbon才可以(Cloud3.0 Eureka-Client删除了依赖)
代码语言:javascript复制Eureka-Client.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule复制
Ribbon 饥饿加载
Ribbon默认是懒加载的,第一次访问时间会变成,开启饥饿加载就可以实现快速访问了,相当于关闭懒加载
代码语言:javascript复制ribbon.ReadTimeout=5000
# 饥饿加载,并配置对饥饿加载对服务
ribbon.eager-load.enabled=true
ribbon.eager-load.clients=Eureka-Client复制
特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!