OpenFeign负载均衡配置
OpenFeign负载均衡
Ribbon内置负载均衡算法
1、 RoundRobinRule
轮询策略:Ribbon 默认采用的策略。若经过一轮轮询没有找到可用的provider,其最多轮询 10 轮(代码中写死的,不能修改)。若还未找到,则返回 null。
2、RandomRule
随机策略:从所有可用的 provider 中随机选择一个。
3、RetryRule
重试策略:先按照 RoundRobinRule 策略获取 server,若获取失败,则在指定的时限内重试。默认的时限为 500 毫秒。
4、BestAvailableRule
最可用策略:选择并发量最小的 provider,即连接的消费者数量最少的provider。其会遍历服务列表中的每一个server,选择当前连接数量minimalConcurrentConnections 最小的server。
5、AvailabilityFilteringRule
可用过滤算法:该算法规则是过滤掉处于熔断状态的 server 与已经超过连接极限的server,对剩余 server 采用轮询策略。
更换内置策略
若要更换负载均衡策略,则首先要了解负载均衡策略的定义接口 IRule。Ribbon 默认采用的是 RoundRobinRule,即轮询策略。但通过修改消费者工程的配置文件,或修改消费者的启动类或 JavaConfig 类可以实现更换负载均衡策略的目的。
1、修改配置文件
修改配置文件,在其中添加如下内容,指定要使用的负载均衡策略 . .NFLoadBalancerRuleClassName。该方式的好处是,可以为不同的微服务指定相应的负载均衡策略
provider001Nacosconfig:#服务提供者name
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
2、修改JavaConfig类
在 JavaConfig 类中添加负载 Bean 方法。全局所有feign对应服务都可以生效。
@Configuration
public class FeignConfiguration {
/**
* 配置随机的负载均衡策略
* 特点:对所有的服务都生效
*/
@Bean
public IRule loadBalancedRule() {
return new RandomRule();
}
}
负载均衡器SpringCloudLoadBalancer
由于 Netflix 对于 Ribbon 的维护已经暂停,所以 Spring Cloud 对于负载均衡建议使用由其自己定义的 Spring Cloud LoadBalancer。对于Spring Cloud LoadBalancer 的使用非常简单。
1、关闭Ribbon的负载均衡器
spring:
application:
name: consumer-name
cloud:
loadbalancer:
# 关闭Ribbon的负载均衡器
ribbon:
enabled: false
2、pom中添加LoadBalancer依赖
<!--spring cloud loadbalancer 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
更多推荐
所有评论(0)