ribbon基于接口配置超时_SpringCloud实战之Ribbon的重试、超时、负载均衡

最近在学习SpringCloud,也是遇到各种问题,各种查阅资料,但是相关资料很少,也是一步踩一个坑,所以总结一下,方便以后查看。

以下是请求连接和响应的超时时间配置

在SpringCloud项目中,RestTemplate一般通过负责均匀来使用,其超时时间不能通过ribbon直接来设置,这样设置是无效的。

错误的

#ribbon的超时时间

ribbon:

ReadTimeout: 500 #读取超时时间

ConnectTimeout: 2000 #连接超时时间

正确的

@Bean

@LoadBalanced //开启负载均衡注解

public RestTemplate restTemplate(){

HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();

httpRequestFactory.setConnectTimeout(500);

httpRequestFactory.setReadTimeout(2000);

return new RestTemplate(httpRequestFactory);

}

以下是重试相关配置

Ribbon通过增加Spring-retry还有相关配置开启了重试,这个重试机制对于OpenFeign是不起作用的,但是对于@LoadBalanced注解修饰的RestTemplate是有作用的。

pom

org.springframework.retry

spring-retry

1.2.4.RELEASE

yml

spring:

application:

name: consumer

cloud:

loadbalancer:

retry:

enabled: true

provider:

ribbon:

#负载均衡策略

NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 随机

# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询

# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试

# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重

# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule #配置规则 最空闲连接策略

# 同一实例最大重试次数,不包括首次调用

MaxAutoRetries: 1

# 重试其他实例的最大重试次数,不包括首次所选的server

MaxAutoRetriesNextServer: 2

# 是否所有操作都进行重试

#当OkToRetryOnAllOperations设置为false时,只会对get请求进行重试。

#如果设置为true,便会对所有的请求进行重试,如果是put或post等写操作,

#如果服务器接口没做幂等性,会产生不好的结果,所以OkToRetryOnAllOperations慎用。

OkToRetryOnAllOperations: false

provider是注册中心服务的名称,表示只对provider这个服务生效,其它服务不生效

记录一个问题,配置负载均衡策略的时候,使用全局ribbon配置不生效,只有指定服务才生效,原因暂时还不清楚,看的得撸一下源码了

如果不配置ribbon重试次数,默认重试一次

ribbon重试计算公式:MaxAutoRetries+MaxAutoRetriesNextServer+(MaxAutoRetries *MaxAutoRetriesNextServer),即重试5次 (不包括首次调用)一共产生6次调用。

楼主也是刚开始学习springcloud,如果有什么不对的地方,欢迎大家指出,一起学习!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值