问题标签 [circuit-breaker]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
310 浏览

java - @HystrixCommand 中未调用后备方法

试图测试我的后备方法,但不幸的是它从未被调用:(某些类调用这样的方法:

这就是我的 HystrixService 的样子:

我的测试:

为什么我的 serviceOne 从不返回存根“blablabla”,它不断抛出 RuntimeException 并且从不使用回退方法。我做错了什么?

0 投票
1 回答
454 浏览

kubernetes - Istio(0.7.1):断路器不适用于 httpConsecutiveErrors

断路器不会因 httpConsecutiveErrors: 1 跳闸(对于 500 响应)。所有请求都通过并给出 500 。断路器应该跳闸并且应该返回 503(服务不可用)。

按照步骤断路器设置

一旦 httpbin 启动,您可以使用它模拟 500 Request :

运行这个将模拟 20 个返回 500 的请求。

但是如果你已经应用了断路器,如果应该只允许一个请求为 500,其余的请求应该被触发并返回一个 503。这不会发生。在 github 上提出的问题 Github 问题

0 投票
1 回答
198 浏览

microservices - 微服务断路器和发现服务模式

我是微服务的新手,并且怀疑谷歌并没有真正帮助我。我知道一个微服务必须是独立的,所以即使它的对应物之一离线,它也应该保持正常工作。

考虑到这一点,我无法真正理解断路器甚至服务发现,比如我应该把它放在哪里?由于我对任何微服务的每次调用都会通过断路器,假设我的断路器服务的服务器离线,所以我的整个应用程序注定要失败,直到我修复它。如何解决这个问题?

最重要的是,我应该把断路器放在哪里,在微服务中呢?

0 投票
0 回答
162 浏览

java - 回退函数中的 Hystrix executionException 和 failedExecutionException

我正在使用 HystrixCommand 类为我的代码提供断路器功能。
我创建了以下类,它封装了带有回退的函数执行:

我陷入了我应该为后备提供什么例外的问题上。HystrixCommand 中有两种方法返回异常:getExecutionExceptiongetFailedExecutionException

我已经阅读了 javadoc,但我仍然不完全清楚我应该在后备函数中使用哪一个来获取从提供的函数抛出的原始异常。

你会推荐什么,为什么?

0 投票
0 回答
575 浏览

spring-boot - 测试弹簧重试断路器

我在我的一个 Spring Boot 应用程序中使用 Spring Retry Circuit Breaker:

现在我正在尝试使用 Junit 5 对其进行测试:

然后我尝试了:

不应该有3次互动吗?还是会是一个?任何解释都会有很大帮助。任何其他有关测试断路器的技巧都值得赞赏(我几乎找不到任何测试此断路器的示例)。谢谢

0 投票
1 回答
815 浏览

rest - Golang 频道流

我对 Golang 比较陌生,并不完全理解流。我有一个正在调用 Rest 的函数(断路器函数)。我让它工作,但它只是流回“responseBody”。我实际上想将整个请求流回 Body 和 Header 一起流回。

当我尝试在“标题”上使用类似的方法时,我收到一个错误,即标题不可流式传输。

有没有一个好的/最好的方法来做到这一点?谢谢你。下面是我的功能。

0 投票
1 回答
9193 浏览

spring - 带断路器的弹簧重试

我正在尝试利用弹簧重试的重试和断路器机制。我尝试在特定功能(如下所示)中使用这两个注释(@Retryable 和@CircuitBreaker),但断路器不起作用。

然后我尝试将功能分为两个不同的功能,分别具有@Retryable 和@CircuitBreaker。在这种情况下,重试机制不起作用。请在下面找到代码片段。

PS:exec 方法(Circuit Breaker 方法)是从控制器调用的。

谁能告诉它为什么会这样。

另外请告知是否存在更好的方法来实现重试和断路器。PS:我既不想使用resilience4j,也不想使用retryTemplate。

0 投票
3 回答
2455 浏览

java - API架构中断路器设计模式的优势是什么?

很抱歉,如果这个问题不适合 SO。

但我试着寻找很多答案。

我正在研究断路器设计模式,据我了解,它用于使您具有 API 容错能力。现在我很困惑的是,

假设我有调用支付 api 的 API,假设我将电路配置为在 5 个调用连续失败时打开。

现在根据断路器设计,我将在打开电路后将后续调用路由到回退方法。假设接下来的 5 次通话,在第 6 次通话时,如果 api 在线,我将调用支付 API,我将关闭电路。

但我没有发现这种模式的任何优势,比如 catch 块和断路器之间的区别。

我们可以在回退方法中做什么?这有什么帮助?

0 投票
1 回答
1708 浏览

spring-boot - 使用spring-boot断路器(Hystrix)时如何将数据从业务方法传递到回退方法?

在官方https://spring.io/guides/gs/circuit-breaker/手册中有

  1. 业务方法(readingList)
  2. 后备方法(可靠)

如何将数据从业务方法传递到回退方法?使用 ThreadLocal、不可变集合、并发集合、任何想法/最佳实践?

0 投票
1 回答
248 浏览

ruby - 编写一个带有线程支持的简单断路器

我正在寻找扩展一个简单的电路断路器编写的 ruby​​ 以跨多个线程工作......

到目前为止,我设法完成了这样的事情..

但我不确定一些事情......

  • 多线程代码一直让我感到困惑,因此我对说这些东西似乎正确的方法并不完全有信心。

  • 读操作不在互斥锁下:虽然(我认为,我确保两个线程之间不会发生数据竞争条件)互斥锁应用于写操作,但读操作是互斥锁免费的。现在,由于可能存在线程 1 在更改 @circuit 或 @failure 变量时持有互斥锁但另一个线程读取过时值的情况。因此,我无法通过实现完全一致性(同时应用读锁)来彻底考虑是否值得在这里进行权衡。一致性可能是 100%,但由于过多的锁,执行代码会变慢。