我是靠谱客的博主 无情导师,这篇文章主要介绍Ribbon的超时和重试机制,现在分享给大家,希望可以做个参考。

简介:

ribbon实现了负载均衡,如果访问某服务的A节点超时后,会触发ribbon的重试机制

Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为。为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求。Ribbon默认为我们提供了很多负载均衡算法,例如轮询、随机等。当然,我们也可为Ribbon实现自定义的负载均衡算法。 在Spring Cloud中,当Ribbon与Eureka配合使用时,Ribbon可自动从Eureka Server获取服务提供者地址列表,并基于负载均衡算法,请求其中一个服务提供者实例。在Spring Cloud 构建的微服务中,Ribbon作为服务消费者的负载均衡器,有两种使用方式,一种是与RestTemplate相结合,另一种是与Feign相结合。
 

application.yml

 
  1. ribbon:

  2. #连接超时时间(ms)

  3. ConnectTimeout: 6000

  4. #业务逻辑超时时间(ms)

  5. ReadTimeout: 6000

  6. #同一台实例最大重试次数,不包括首次调用(对当前实例的重试次数)

  7. MaxAutoRetries: 1

  8. #重试负载均衡其他的实例最大重试次数,不包括首次调用(切换实例的重试次数)

  9. MaxAutoRetriesNextServer: 2

  10. #是否所有操作都重试

  11. ribbon.OkToRetryOnAllOperations: false

pom中引入依赖 

 
  1. <dependency>

  2. <artifactId>spring-retry</artifactId>

  3. <groupId>org.springframework.retry</groupId>

  4. </dependency>

ribbon.MaxAutoRetries 设置为1,请求某服务6s超时后准备重试,该重试策略会先尝试再访问该实例,如果失败1次之后才更换实例访问。 ribbon.MaxAutoRetriesNextServer 决定了尝试更换2次实例。

Ribbon整合Eureka

重试机制

因为在微服务的实际生产环境中,有可能出现一种情况:某些服务的其中部分实例临时不可用。所以,我们希望能够提供一种重试的机制。比如:aservice-sms服务可以启动多个实例,当实例1由于某些原因(网络等)瞬时无法正常响应服务时,为了保证业务正常执行,所以自动的向该服务的其他实例发起请求。这就是微服务的调用的“重试机制”。

 需要注意的是:Ribbon有重试机制,Feign和OpenFeign也有重试机制(后面章节会介绍)。Feign和OpenFeign的底层就是Ribbon,所以当项目使用了Feign或OpenFeign的重试机制,就不要开启Ribbon的重试机制,反之亦然。否则重试配置重叠,实际重试次数是二者的笛卡尔积。

 

最后

以上就是无情导师最近收集整理的关于Ribbon的超时和重试机制的全部内容,更多相关Ribbon内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部