2

我在让 Turbine 在 Spring Cloud 中工作时遇到了一些麻烦。简而言之,我无法确定如何将其配置为一次聚合来自多个应用程序的电路。

我有 6 个独立的服务,一个 eureka 服务器和一个以独立模式运行的涡轮服务器。我可以从我的 Eureka 服务器上看到所有服务都已注册,包括涡轮机。我的涡轮服务器已启动并正在运行,我可以毫无问题地看到它的 /hystrix 页面。但是当我尝试用它来检查turbo.stream时,我只看到turbo.appConfig中列出的FIRST服务器,其余的都被忽略了。

这是我的 Turbine 服务器的 application.yml,或者至少是相关部分:

---
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8010/eureka/
server:
  port: 8030
info:
  component: Turbine
turbine:
  clusterNameExpression: new String(“default”)
  appConfig: sentence,subject,verb,article,adjective,noun
management:
  port: 8990  

当我运行它并访问我的涡轮机实例上的 hystrix 仪表板,请求涡轮机.stream 时,输出中列出的唯一断路器是 appConfig 中列出的第一个服务,在这种情况下是“句子”服务。奇怪的是,如果我重新排列这些服务的顺序并将另一个放在首位(如“名词”),我只会看到该服务的电路。仅显示列表中的第一个服务。

我承认对一些术语有些困惑,比如流、集群等,所以我可能在这里遗漏了一些基本概念,但我的理解是 Turbine 可以从多个服务中消化流并聚合它们在单个显示器中。建议将不胜感激。

4

1 回答 1

6

我没有足够的声誉来发表评论,所以我必须在答案中写下这个:)

我遇到了完全相同的问题:

有两个服务“test-service”和“other-service”,每个都有自己的工作 hystrix-stream 和一个 Turbine-Application,配置如下:

    turbine:
        clusterNameExpression: new String("default")
        appConfig: test-service,other-service

我所有的服务都在我的本地机器上运行。

结果是:我的 Hystrix-Dashboard 只显示来自“测试服务”的指标。

原因:

看起来,以所述方式配置的 Turbine-Client 在同一主机上运行时不会处理多个服务。

这在这里解释:

https://github.com/Netflix/Hystrix/issues/117#issuecomment-14262713

Turbine 维护所有这些实例的状态以保持与它们的持久连接,并且它确实依赖于“主机名”,如果主机名相同,则它不会实例化与同一服务器的新连接(在不同的端口上)。

所以重点是,您的所有服务都必须使用不同的主机名进行注册。下面描述了如何在本地计算机上执行此操作。

更新 2015-06-12/2016-01-23:本地测试的解决方法

更改您的主机文件:

    # ...
    127.0.0.1 localhost
    127.0.0.1 localdomain1
    127.0.0.1 localdomain2
    # ...
    127.0.0.1 localdomainx

然后将每个客户端的主机名设置为不同的域条目,如下所示:
application.yml:

    eureka:
        instance:
            hostname: localdomainx
于 2015-06-11T09:41:03.373 回答