负载均衡组件Spring Cloud Ribbon(二)- 自定义Ribbon配置整合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shenzhen_zsw/article/details/89446903

目录

负载均衡组件Spring Cloud Ribbon(二)- 自定义Ribbon配置整合

通过Java代码配置

创建一个Ribbon的配置类

在创建测试配置

启动服务测试

通过配置文件中的属性去自定义配置


负载均衡组件Spring Cloud Ribbon(二)- 自定义Ribbon配置整合

上面配置了一个简单的负载均衡,那如何自定义负载均衡的规则呢?要实现有两种方式

1)通过Java代码配置

2)通过配置文件中的属性去配置

   

    在SpringCloud中,Ribbon默认的配置类是RibbonClientConfiguration。也可使用一个POJO自定义Ribbon的配置(自定义配置会覆盖默认配置)。这种配置是细粒度的,不同的Ribbon客户端可以使用不同的配置。

通过Java代码配置

创建一个Ribbon的配置类

package com.TransientBa.cloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RibbonConfiguration class
 * 该类不应该在主程序上下文的@ComponentScan中
 */
@Configuration
public class RibbonConfiguration {
    @Bean
    public IRule ribbonRule(){
        return new RandomRule();
    }
}

在创建测试配置

在创建一个空类用来选择应用指定的Ribbon配置类。

package com.TransientBa.cloud.config;

import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.context.annotation.Configuration;

/**
 * TestConfiguration class
 * 使用RibbonClient注解来为特定name的Ribbon client定义配置
 * configuration属性指向了刚刚我们自定义的RibbonConfiguration配置类
 */
@Configuration
@RibbonClient(name="microservice-provider-user",configuration = RibbonConfiguration.class)
public class TestConfiguration {
}

说明:

    1)也可以不创建这个类,直接将注解@RibbonClient加到启动类中也是可以的;

启动服务测试

启动服务测试一下请求分布情况,依然访问http://localhost:8010/log-instance接口

说明:

    1)可以看到日志显示请求被随机分发了。

    2)需要注意的是:RibbonConfiguration类不能包含在主应用程序上下文的@ComponentScan中,否则该类中的配置信息就被所有的@RibbonClient共享。

    3)所以可以看到目录的结构,SpringBoot默认扫描的位置在Application启动类的同级及下属子目录,我们将RibbonConfiguration类拿到了外面。

通过配置文件中的属性去自定义配置

上面通过Java代码进行了配置,这种方式要产生两个类,那有没有办法简化配置?
下面我们通过属性配置来达到同样的效果。删除上面两个添加的配置类,只需要在yml配置文件中添加:

microservice-provider-user:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

启动服务测试后效果同Java配置。到这里我们可以看出使用属性配置明显比Java配置简化的多。

==============================

QQ群:143522604

群里有相关资源

欢迎和大家一起学习、交流、提升!

==============================

猜你喜欢

转载自blog.csdn.net/shenzhen_zsw/article/details/89446903
今日推荐