return rule;
}
BeanType 是 IRule,beanName 是ribbonRule,ClassName 是 ZoneAvoidanceRule,这是一种根据服务提供者所在 Zone 的性能以及服务提供者可用性综合计算,选择提供者节点的负载均衡规则。
在 Spring Cloud 中,Ribbon 默认的配置类是 RibbonClientConfiguration,也可以使用一个 POJO 自定义 Ribbon 的配置(自定义配置会覆盖默认配置)。这种配置是细粒度的,不同的 Ribbon 客户端可以使用不同的配置。
(1)、将上一篇的 microservice-eureka-ribbon 的 artifactId 改成 microservice-eureka-ribbon-customizing。
(2)、创建 Ribbon 的配置类
package com.riemann.microserviceproviderservicehi;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RibbonConfiguration {
@Bean
public IRule ribbonRule() {
// 负载均衡规则,改为随机
return new RandomRule();
}
}
(3)、创建一个空类,并在其上添加 @Configuration 和 @RibbonClient 注解。
package com.riemann.microserviceproviderservicehi;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Configuration;
/**
-
使用 RibbonClient,为特定 name的 Ribbon Client 自定义配置。
-
使用 @RibbonClient 的 configuration 属性,指定 Ribbon 的配置类
*/
@Configuration
@RibbonClient(name = “microservice-provider-service-hi”, configuration = RibbonConfiguration.class)
pu 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 blic class TestConfiguration {}
2、使用属性自定义 Ribbon 配置
从 Spring Cloud Netflix 1.2.0 开始(Spring Cloud Camden SR4 使用的版本是1.2.4),Ribbon 支持使用属性自定义 Ribbon 客户端。这种方式比使用 Java 代码配置的方式更加方便。
支持的属性如下,配置的前缀是 clientName.ribbon. 。
-
NFLoadBalancerClassName: 配置 ILoadBalancer 的实现类
-
NFLoadBalancerRuleClassName: 配置 IRule 的实现类
-
NFLoadBalancerPingClassName: 配置 IPing 的实现类
-
NIWSServerListClassName: 配置 ServerList 的实现类
-
NIWSServerListFilterClassName: 配置 ServerListFilter 的实现类
(1)、在 microservice-provider-service-ribbon-customizing 项目中的 application.yml 中添加以下内容即可: