Spring-BootSpring Boot 核心技术

跟我学Spring Cloud(Finchley版)-08-Ri

2019-01-09  本文已影响4人  周立_itmuch

上一节讲了Ribbon的入门姿势,本节深入探讨Ribbon的高级特性。

内置负载均衡规则

负载均衡规则是Ribbon的核心,下面来看一下Ribbon内置的负载均衡规则。

如需自定义负载均衡规则,只需实现IRule 接口或继承AbstractLoadBalancerRule、PredicateBasedRule即可 ,读者可参考RandomRuleRoundRobinRuleZoneAvoidanceRule 等内置Rule编写自己的负载均衡规则。

Ribbon配置自定义【细粒度配置】

Ribbon可实现精确到目标服务的细粒度配置。例如A服务调用服务B,A服务调用C,可以针对B服务一套配置,针对C服务另一套配置。

方式1、代码配置方式

在Spring Cloud中,Ribbon的默认配置如下(格式是BeanType beanName: ClassName):

代码示例

配套代码

GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-ribbon-config-java

Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-ribbon-config-java

方式2、属性配置方式【推荐】

<clientName>.ribbon. 如下属性

代码示例

user:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

TIPS

属性配置的优先级高于代码配置。

配套代码

GitHub:https://github.com/eacdy/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-ribbon-config-properties

Gitee:https://gitee.com/itmuch/spring-cloud-study/tree/master/2018-Finchley/microservice-consumer-movie-ribbon-config-properties

Ribbon配置自定义【全局配置】

方式1、代码配置方式

@RibbonClients(defaultConfiguration = DefaultRibbonConfig.class)
public class RibbonClientDefaultConfigurationTestsConfig {
}
@Configuration
class DefaultRibbonConfig {
  @Bean
  public IRule ribbonRule() {
    return new RandomRule();
  }
}

方法2、属性配置方式【推荐】

和上文细粒度配置类似,只需将目标服务名称前缀去掉即可。

ribbon:
  NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

Ribbon Eager加载

默认情况下Ribbon是懒加载的——首次请求Ribbon相关类才会初始化,这会导致首次请求过慢的问题,你可以配置饥饿加载,让Ribbon在应用启动时就初始化。

ribbon:
  eager-load:
    enabled: true
    # 多个用,分隔
    clients: microservice-provider-user

本文首发

http://www.itmuch.com/spring-cloud/finchley-8/

干货分享

全是干货
上一篇 下一篇

猜你喜欢

热点阅读