问题标签 [hystrix]

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 投票
1 回答
2847 浏览

spring-cloud - 设置 server.contextPath 的 Spring Boot 与通过 Eureka Server 到 hystrix.stream 的 URL

我有运行 Turbine 实例的 Eureka Server 和一些连接到它的发现客户端。一切正常,但如果我注册一个已设置的发现客户端server.contextPath,它不会被识别,InstanceMonitor并且涡轮流无法组合它的hystrix.stream.

这是它在 Eureka/Turbine 服务器的日志中的样子:

它尝试从http://user-service:8887/hystrix.stream正确的 URL (包括 sever.contextPath 应该在的位置)获取 hystrix 流http://user-service:8887/uaa/hystrix.stream

application.yml客户端包含:

我的问题是:我应该向这个用户服务发现客户端添加一些额外的配置选项来注册正确的 hystrix.stream URL 位置吗?

我还没有深入研究,如果在得到该问题的答案之前发现了什么,我会告诉你。

当前解决方案

server.contextPath使用and时存在一个问题management.context-path。当两者都设置好时,涡轮机流正在运行${HOST_URL}/${server.contextPath}/${management.context-path}/hystrix.stream。在那种情况下,我不得不放弃使用server.contextPath(我用控制器中的前缀替换了它@RequestMapping)。

现在,当您使用 user 时management.context-path,您的 hystrix.stream 将从使用它作为前缀的 URL 提供。在这种情况下,您必须遵循 Spencer 的建议并设置

当然,这management.context-path必须为所有发现客户端设置相同的值 - 可以使用 Spring Cloud Config http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html轻松完成

0 投票
1 回答
310 浏览

java - Hystrix 与 MultiThreadedHttpConnectionManager

我们有一个使用 SpringMVC+JSP 实现的网页。为了获取每个页面所需的数据,我们调用外部 API。步骤总结如下: - 请求到达控制器 - 调用 API 以检索数据 - 将数据添加到 JSP 视图模型并返回给用户。

要调用 API,我们使用 RestTemplate 使用MultiThreadedHttpConnectionManager初始化连接和读取超时。如果 API 不可用,则 RestTemplate 会抛出由网页控制器处理的异常。

最近我在阅读有关 Hytrix 的文章,似乎它被用于在系统之间发出请求。我要求解释一下 Hytrix 如何帮助我们的系统以及如何集成它。

此外,API 实现从不同来源检索数据,其中之一是数据库。Hytrix 也可以在数据库出现故障的情况下提供帮助吗?

提前致谢。

0 投票
2 回答
3568 浏览

spring - 在 PCF 上部署 Spring Boot 的 Hystrix 仪表板不显示指标

我使用 Spring boot 和 spring cloud starter hystrix 库创建了一个简单的应用程序。

在我的 build.gradle 中:

我使用上述库将一个应用程序部署为 hystrix 仪表板,并且@EnableHystrixDashboard

然后我部署了另一个带有注释的应用程序@EnableHystrix

我添加了一个组件,该组件具有我通过控制器调用的命令,只是为了测试一下:

hystrix 应用程序运行良好。当我点击 URL 时,我看到了流,我在这里输入了一个要点的输出。

我只是看到一遍又一遍地重复。

我的仪表板已启动并正在运行,当我输入正在运行的 hystrix 示例应用程序的 URL 时,我会看到一个加载屏幕:

hystrix 仪表板加载屏幕

然后,当我再次检查我的 hystrix 应用程序时,我看到了:

我不知道从这里去哪里。我尝试部署 hystrix 仪表板战争,而不是自己构建它,我从这里下载但得到了相同的结果。

我还注意到浏览器控制台中的一些 JavaScript 错误输出,我将它们放在这里以防万一。

在服务器日志中,我一遍又一遍地看到这一点:

2015-02-15 20:03:55.324 信息 9360 --- [nio-8080-exec-9] ashboardConfiguration$ProxyStreamServlet:

代理打开连接到:http://myappurl/hystrix.stream

我现在要尝试让涡轮机运行,看看使用它是否能神奇地修复问题。以为我也会在这里发帖,尽管有人可能会根据我迄今为止所做的事情发现我的错误。

编辑:我没有提到的重要一点是我在 PCF 上部署了应用程序和仪表板。这似乎很重要,因为当我在本地部署时不会发生此问题。仍然不知道是什么原因造成的。

0 投票
1 回答
91 浏览

concurrency - 维护自己的线程池的库有什么影响?

我在我们的项目中使用 Google Guava 和 Netflix Hystrix 库。每个库都附带有自己的线程池,您可以对其进行配置。

那是考虑到它的影响。我的意思是每个库都在维护自己的线程池,当然,每个硬件都有自己的最佳设置。

假设我在其线程池中将 Guava 设置为 50,在其线程池中将 Hystrix 设置为 40。会发生什么?他们会争夺资源吗?

0 投票
1 回答
2040 浏览

spring-cloud - Spring Cloud Turbine 空流

我有一个作为涡轮服务器和 Hystrix 仪表板的 Spring Cloud 应用程序。它有一个 Eureka 客户端,仪表板正常运行,可以看到一个单独的 Hystrix 流,但我在涡轮流中没有得到任何东西。

这是 application.yml:

如果我在 Turbine/dashboard 应用程序启动时查看日志,它看起来好像发现我的 Hystrix 服务正常:

如果我在

我得到:

当我查看涡轮机/仪表板日志时,我没有看到任何错误:

如果我直接或通过仪表板(例如http://nf-app1:8080/hystrix.stream )点击其中一个项目流,我将获得有效的 Hystrix 数据 。

看起来 Turbine 应用程序正在通过 Eureka 找到这两个项目服务,并且它们的 Hystrix 流端点是有效的并且可以工作,所以我无法弄清楚为什么 Turbine 流是空的。

0 投票
2 回答
9832 浏览

spring - 使用 Hystrix Spring Cloud 进行单元测试回退的任何样本

我想测试以下场景:

  1. 将该hystrix.command.default.execution.isolation.thread.timeoutInMillisecond值设置为较低的值,然后查看我的应用程序的行为。
  2. 检查我的后备方法是使用单元测试调用的。

请有人给我提供样品的链接。

0 投票
3 回答
6843 浏览

java - 如何强制 Hystrix 断路器打开?

我想以编程方式强制断路器为特定组打开。我想我可以通过在组中的命令上设置配置以强制打开并运行该命令来做到这一点。但是,这似乎不起作用。这可能吗?我应该采取不同的方法吗?这是我在第二次 assertEquals 调用中失败的测试。

0 投票
1 回答
1132 浏览

spring - Spring-Cloud、Hystrix 和 JPA - LazyInitializationException

我在尝试将 Hystrix 集成到现有的 Spring Boot 应用程序中时遇到以下问题。我正在使用带有 spring 数据(jpa 存储库)的引导。该应用程序的结构非常简单,我们有资源 -> 服务 -> 存储库。

我启用了 Hystrix 支持并注释了返回实体的服务方法之一,如下所示:

所以这可以按预期工作,真正的问题实际上存在于我将实体返回给客户端时。我正在使用 OpenEntityManagerInViewFilter 所以我可以用它的关系序列化我的模型。当我在我的服务方法中使用 @HystrixCommand 时,当它尝试序列化时我得到一个 LazyInitializatioException 。

我知道原因(或者至少我怀疑是什么问题),并且是因为 Hystrix 在另一个线程中执行,所以不是事务的一部分。将 Hystrix 隔离策略从 THREAD 更改为 SEMAPHORE,因为它是同一个线程,所以可以正常工作,但我知道这不是解决问题的正确方法。

所以我的问题是,我怎样才能让 Hystrix 执行线程成为事务的一部分。有什么我可以申请的解决方法吗?

谢谢!

0 投票
1 回答
1961 浏览

spring-boot - Hystrix Javanica 后备在 Spring Cloud 1.0 中不起作用

我基于@spencergibb feign-eureka spring cloud starter example 构建了一个超级简单的 Hystrix 短路示例。起初我以为我无法触发 hystrix javanica 默认 fallbackMethod 由于 feign.. 现在,删除 feign,hystrix 默认 fallbackMethod 仍然没有捕获异常。

pom.xml

主文件:

}

HelloClientComponent.java(创建是因为我知道 javanica 期望在 spring 托管组件或服务中):

我启动了 2 台服务器,一台总是成功并响应,另一台将在 30% 的时间内失败并出现 500 错误。当我卷曲这个客户端(到'/')时,非强制失败调用的事情正常进行。轮询也可以正常工作。当第二个服务器确实返回 500 错误时,不会调用 fallbackMethod 并且 curl 到 '/' 结束并返回错误。

根据 Spencer 和 Dave 的建议更新解决方案。 更改为以下内容:

主要申请文件:

HelloClientComponent.java:

0 投票
4 回答
4672 浏览

java - Spring 是否使 SecurityContext 可用于执行 Hystrix 命令的线程

我正在运行一个 spring boot 应用程序,并且刚刚开始从 spring-cloud-netflix 集成 Hystrix。我正在使用 @HystrixCommand 来包装使用 feign 客户端进行的服务到服务调用。

这个 feign 客户端使用 spring 安全上下文向它发出的请求添加安全标头。

我遇到的问题是,当执行 HystrixCommand 时,它在 Hystrix 线程池的单独线程中运行,当我的代码尝试访问 spring 安全上下文时,它在新线程上不可用。

我正在像这样访问 spring 安全上下文:

我的问题是,spring 是否提供了一种将 spring 安全上下文(和应用程序上下文)传递给运行 Hystrix 命令的 Hystrix 线程的方法?