问题标签 [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 回答
335 浏览

javascript - 节点承诺断路器 - 从被调用函数返回一个值

我正在尝试使用 promise-circuitbreaker 节点模块。我可以将参数传递给被调用函数,但是,我无法让被调用函数返回值。此外,我不断收到我不明白的超时。我显然遗漏了一些东西,但是我在文档中找不到任何解决方案(http://pablolb.github.io/promise-circuitbreaker/

我制作了一个非常简单的示例应用程序来展示我的困难:

我从中得到的输出是:

就我而言,我希望返回一个简单的字符串。我不想要超时错误。

如果我取消注释 testFcn() 中的 //err('This is an error callback') 行,我会得到以下输出:

因此,被调用函数中的第二个参数似乎用于错误处理。

任何帮助将不胜感激。

0 投票
0 回答
1237 浏览

java - Hystrix 断路器不会打开?

我正在尝试学习如何使用 Hystrix。我在下面创建了这个类:

使用以下单元测试:

这基本上是在验证调用在 5 处失败,并且在成功执行后它确实停止了指定的时间段。调试语句表明电路永远不会关闭,但它应该在第一次调用后关闭,因为那个会引发异常,因此表明失败。有谁可以帮我离开这里吗?

0 投票
2 回答
29254 浏览

short-circuiting - Hystrix 配置

我正在尝试使用 hystrix-javanica 为我的应用程序实现 hystrix。

我已经配置了 hystrix-configuration.properties 如下

短路模式工作正常,但我对此有疑问hystrix.command.default.circuitBreaker.requestVolumeThreshold=3

  1. 它是在 3 次故障后声明开路还是
  2. 在 3 次并发故障后打开电路。

通过文档链接

有人可以回答吗?

 

 

0 投票
1 回答
6857 浏览

tdd - 试驾 Hystrix 断路器配置

我们的应用程序是通过使用 Hystrix 实现断路器模式以防脆弱的方式编写的。

整个应用程序是使用测试驱动的实践创建的,但是我们需要通过在方法上配置相同的方法来实现断路器策略。

以下是我们使用的示例配置 -

如果有可用的功能或机会在我的集成测试中测试驱动它(加载整个 WebApplicationContext,因此知道应用程序可用的所有配置),任何人都可以发表评论吗?

或者,如果这根本不可能在我的应用程序上下文中得到验证?

任何输入都是有价值的。

0 投票
0 回答
329 浏览

java - Hystrix Stream 阻止其他请求被执行

为我的一项服务实现断路器模式,在服务中,我为 2-3 个函数调用添加了 Hysrtix 命令,并且 hystrix.stream.maxConcurrentConnections 设置为 5(默认值)。

问题:当我在浏览器中打开所有 5 个 /hystrix.stream 时,这工作正常,但是当这些请求得到服务时,服务器不接受任何其他新请求,甚至不接受 /info(spring boot 端点)。一旦我关闭 /hystrix.stream 浏览器窗口之一,它就会开始接受其他请求。

这是因为 /hystrix.stream 占用了服务器的所有线程吗?

0 投票
1 回答
2062 浏览

apache-kafka - 当目标系统关闭时,停止 Spring Cloud Stream @StreamListener 监听

我有一个从 Kafka 获取消息并调用目标系统来更新旧版 Oracle 数据库的应用程序。

我想启用一个场景,如果目标系统关闭,则将消息留在 Kafka 总线上,并且在给定的时间段内不处理它们。我正在考虑一些基于断路器 Hystrix 的解决方案,但我找不到任何机制来告诉 Spring Cloud Stream“停止”事件监听。我能想到的唯一其他选择是如果断路器打开,将这些消息传输到错误/重新处理主题,但这对我来说听起来像是一种反模式。我应该能够暂停系统处理事件,这是微服务应用程序中发布/订阅的全部优势。

任何帮助都将不胜感激。

0 投票
1 回答
559 浏览

spring-boot - 带断路器的 hystrix 是否适合呼叫转移和高 TPS 情况?

我有三个服务 A、B 和 C。A 接收来自两个源的调用,并将大多数调用转发到 B 服务,一些到 C,并根据 URI 处理一些。在将呼叫转接到 B 或 C 之前,A 做了一些琐碎的工作。服务 A 每秒处理的峰值请求数约为 60。在 60 个 API 调用中,有 55 个 API 调用被转移到服务 B。我们知道服务 B 有两到三个高频 API。请注意,所有调用本质上都是同步的。

我正在使用 Spring Boot 1.4.1 和 Spring Cloud Camden.RELEASE。根据我在本地 Windows 机器上使用 JMeter 的实验,我看到服务能够每秒处理预期的请求。一旦我将服务 A 作为断路器并使用@HystrixCommand包装高频 API 调用,我发现性能变得比以前更差。许多 API 调用都被 hystrix 失败,并且调用了回退。然后将execution.isolation.thread.timeoutInMilliseconds命令属性值增加到“30000”和coreSize线程池属性值为“50”,所有调用均已通过。我观察到启用 hystrix 的东西后,服务 A 需要比以前多 50 个线程。随着负载的增加,API 执行时间变得更长,因此增加了 timeout 属性值。

想知道

  1. 如果将服务 A 设为断路器并使用 hystrix 命令将对服务 B 的高频调用(或所有调用)包装在服务 A 中是好的决定

  2. 如果是的话,根据未来更多的 TPS 需求,通过 hystrix 池中的配置手动更改/增加线程数是否不错?如果没有 hystrix,情况很简单,因为 spring boot 会自动处理线程池以提供负载

  3. 由于我需要修改 timeout 属性,现在当服务 B 停止时,A 或 hystrix 需要几秒钟才能检测到服务 B 无法访问。使用 hystrix 停止级联排气或停止服务的真正优势并不大。还是推荐hystrix?

  4. Netflix 建议核心大小默认为 10,并且他们一直使用到 25,而不是超过。在我的情况下,需要是 50

您的建议在这里会有所帮助,特别是要知道带断路器的 hystrix 是否对我有用,或者我们如何使它有用,或者它在哪里更合适(任何服务的 TPS 都很低)。

0 投票
0 回答
298 浏览

spring-cloud - 如何跟踪从电路打开到关闭的转换以通知开发人员?

我已经编写了自定义事件通知器并在 HystrixPlugins 中注册了它。我有需要在打开和关闭电路时发送通知的要求。要跟踪电路开路,我可以使用以下事件类型

但是从打开到关闭的过渡呢?hystrix 中是否有任何方法可以跟踪以前打开的电路现在已关闭?

下面是我的事件通知器。

0 投票
5 回答
9178 浏览

java - 以编程方式更改 Hystrix 属性

我设置了一个断路器,我想更改运行时的参数。线程和超时之类的东西需要在客户现场进行调整。

我像这样创建一个 HystrixCommandProperties.Setter:

MyCommand 实现标准 HystrixCommand 并调用 super(hystrixProps)。

这是第一次工作,但是当我尝试在运行时更改属性(相同的组名)时没有任何反应。还有另一种以编程方式改变这种情况的方法吗?

我不想浏览属性文件或指定 Archaius 的 URL。

还有一些答案告诉我使用 ConfigurationManager.getConfigInstance().setProperty("...") 通过 Archaius。但肯定有一种类似于我创建的原始设置器的方法吗?这样做完全不同,因为这是第二次,感觉很尴尬。

0 投票
1 回答
1473 浏览

java - CircuitBraker 设计模式可以与 Java 中基于 SOAP 的 Web 服务一起使用吗

我是 Spring 云环境的新手,我正在尝试使用基于 SOAP 的 Web 服务来实现断路器模式......

我用 REST 实现了断路器,并在关键的云代工厂中上传。

是否可以在基于 SOAP 的 Web 服务中实现它。?