春季重试vs Hystrix

问题描述

@CircuitBreaker的{​​{1}}和spring-retry的{​​{1}}有什么区别?

他们似乎都实现了断路器模式。

Spring官方指南正在使用@HystrixCommandhttps://spring.io/guides/gs/circuit-breaker/

在他们的示例中:

spring-cloud-starter-netflix-hystrix

(据我所知)相当于:

@HystrixCommand

解决方法

  1. @CircuitBreaker- 不确定它是否是实际注释。 AFAIK,事实并非如此。
  2. spring-retry- @Retryable 是用于实现此目的的注释。这基本上是根据特定条件重试当前方法执行指定的次数。
  3. @HystrixCommand- 该注解实际上会在方法执行时触发断路器功能。

有效差异-

  1. @Retryable 与断路器无关。即使结果每次都失败,它也会盲目地重试操作。它在当前请求的本地上下文上运行。这意味着它不知道系统上重试的全局状态。它所关心的只是每个请求都必须重试多次。
  2. @HystrixCommand 是一个智能注释。它知道系统的全局状态,如果失败次数超过指定的断路器阈值,它实际上会停止执行该方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...