美文网首页
Spring Cloud Ribbon使用

Spring Cloud Ribbon使用

作者: G__yuan | 来源:发表于2021-03-10 11:01 被阅读0次

细力度的给某个微服务配置负载均衡

a:编写java代码的方式

1.alibaba discovery 组件,已经添加了ribbon组件依赖,所以项目无需再次添加

image.png

2.自定义一个RibbonConfiguration类

/**
 * 细力度的给某个微服务配置负载均衡策略
 */
@RibbonClient(name="xxx-wechat-web",configuration = RibbonConfiguration.class)
@Configuration
public class WechatWebRibbonConfiguration {
}

3.指定ribbon负载均衡的规则

@Configuration
public class RibbonConfiguration {
    @Bean
    public IRule ribbonRule(){
        return new RandomRule();
    }
}

需要注意的是,在指定ribbon负载均衡规则的时候,该类的包结构一定不要与spring boot 的扫描包的路径一致,因为这样的话会引起,父子上下文的重复扫描,从而将给该规则成为了全局的规则,而不是访问某个微服务特定的负载均衡规则,这个说明在spring cloud的官方文档上有说明。


image.png

重复扫描是因为,@SpringBootApplication 注解继承@SpringBootConfiguration,@SpringBootConfiguration注解用又继承Configuration,所以会重复扫描。
就类似,之前通过xml的方式配置ssh框架一样,spring mvc的xml配置中只指定,扫描controller包结构的bean,而spring的xml配置文件中配置扫描service以及dao等结构的包,如果两个都扫描全部包之后,会导致事务无法回滚等乱七八糟的现象。

b:通过配置的方式实现细力度的负载均衡

neofaith-wechat-web: 具体负载的微服务的名称
com.netflix.loadbalancer.RandomRule:ribbon中实现规则的全类名

neofaith-wechat-web.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule

配置全局的负载均衡规则、策略

只需要将上面java代码中WechatWebRibbonConfiguration类的注解变成下面所写即可

@Configuration
@RibbonClients(defaultConfiguration = RibbonConfiguration.class)
public class WechatWebRibbonConfiguration {
}

相关文章

网友评论

      本文标题:Spring Cloud Ribbon使用

      本文链接:https://www.haomeiwen.com/subject/kzxwqltx.html