【问题标题】:Spring Cloud Zuul Monitor/CircuitBreaker All Routes via HystrixSpring Cloud Zuul Monitor/CircuitBreaker 所有路由通过 Hystrix
【发布时间】:2015-12-06 01:19:40
【问题描述】:

我正在使用 Spring Cloud 和 @EnableZuulProxy 是否可以通过 /hystrix.stream 使用 hystrix 监视 application.yml 中配置的所有路由?在下面的示例中,我希望有一种简单的方法来监控对下游产品服务的所有请求。我知道我可以在产品服务本身上执行此操作,但是否可以监控 Zuul 请求。这对于任何不属于(第三方)且无法使用@HystrixCommand 注释的下游服务非常有用。

zuul: routes: item: serviceId: product path: /product/**

【问题讨论】:

    标签: spring-cloud hystrix netflix-zuul


    【解决方案1】:

    简单的答案是肯定的。将spring-cloud-starter-hystrix@EnableCircuitBreaker 添加到您的主类。这将启用/hystrix.stream。 Zuul 在转发到其他服务时使用 hystrix。

    【讨论】:

    • 感谢您的快速回复,执行此操作时,我返回空数据,/hystrix.stream 返回 ping:即使我生成到 /product 路径的流量,实际上任何 URL以localhost:8080/hystrix.stream/someurlthatdoesnexit 开头返回相同。
    • 所以@spencergibb 有什么反馈吗?或者什么是不简单的答案?如果您能指出正确的方向,我很乐意阅读这些文档。
    • @spencergibb 感谢 Zuul 在转发到其他服务时使用 hystrix。我对此产生了怀疑。由于我使用的是@EnableHystrix 注释,所以@EnableCircuitBreaker 是默认的元注释。
    • 我认为@EnableCircuitBreaker 已经在@EnableZuulProxy 上了。但是除非您使用功能区(服务 ID 不是硬编码的 URL),否则没有电路。无论如何,您在上面发布的代码将生成 /hystrix.stream。如果它是空的,那么它还没有处理任何请求。
    【解决方案2】:

    我遇到了同样的问题,将 @EnableCircuitBreaker 更改为 @EnableHystrix 解决了这个问题。

    使用@EnableHystrix,我可以在 Hystrix 仪表板上查看所有路由呼叫。

    更新

    请看下面的评论,这确实不是解决办法。

    【讨论】:

    • 我不认为这是解决办法。可能您只需要端点中的一些流量。
    • @DaveSyer 是的,你是对的。我恢复到旧的表示法,它仍然有效。我之前有流量,所以是其他东西触发了它。是否可以在我的路线中添加功能区属性?
    • 如果您不使用功能区,您将不会获得指标流,所以可能。这取决于你做了什么。
    • @DaveSyer 我以为 Ribbon 是自动使用的,它肯定在类路径中。我为我的路线添加了一个功能区属性,它会触发它吗?
    • 它只用于带有服务ID的路由,而不是带有url的路由。
    猜你喜欢
    • 2017-12-02
    • 2016-04-14
    • 2016-08-31
    • 2016-05-27
    • 2019-05-08
    • 2016-09-22
    • 1970-01-01
    • 2017-06-17
    • 2016-06-05
    相关资源
    最近更新 更多