首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跟我学Spring Cloud-08-Ribbon深入

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

内置负载均衡规则

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

AvailabilityFilteringRule:过滤掉一直连接失败的被标记为circuit tripped的后端Server,并过滤掉那些高并发的后端Server或者使用一个AvailabilityPredicate来包含过滤server的逻辑,其实就就是检查status里记录的各个Server的运行状态;

BestAvailableRule:选择一个最小的并发请求的Server,逐个考察Server,如果Server被tripped了,则跳过。

RandomRule:随机选择一个Server;

ResponseTimeWeightedRule:作用同WeightedResponseTimeRule,二者作用一样;

RetryRule:对选定的负载均衡策略机上重试机制,在一个配置时间段内当选择Server不成功,则一直尝试使用subRule的方式选择一个可用的server;

RoundRobinRule:轮询选择, 轮询index,选择index对应位置的Server;

WeightedResponseTimeRule:根据响应时间加权,响应时间越长,权重越小,被选中的可能性越低;

ZoneAvoidanceRule:复合判断Server所在区域的性能和Server的可用性选择Server;

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

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

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

方式1、代码配置方式

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

ribbonClientConfig:

ribbonRule:

ribbonPing:

ribbonServerList:

ribbonServerListFilter:

ribbonLoadBalancer:

ribbonServerListUpdater:

代码示例

1 创建一个空类,并在其上添加 注解和 注解。

由代码可知,使用 注解的configuration属性,即可自定义指定名称Ribbon客户端的配置。

2 创建Ribbon的配置类。

配套代码

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、属性配置方式【推荐】

如下属性

: should implement

: should implement

: should implement

: should implement

should implement

代码示例

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、代码配置方式

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

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

Ribbon Eager加载

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

您的关注是我最大的动力!

看完,赶紧点个“好看”鸭

点鸭点鸭

↓↓↓↓

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190107G061FT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券