我是靠谱客的博主 无情导师,最近开发中收集的这篇文章主要介绍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的超时和重试机制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部