Spring Cloud Turbine - 无法处理多个客户端?

Ken*_*ger 2 turbine spring-boot hystrix spring-cloud

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

我有6个独立的服务,一个eureka服务器和一个以独立模式运行的涡轮服务器.我可以从我的Eureka服务器上看到所有服务都已注册,包括涡轮机.我的涡轮机服务器已启动并运行,我可以看到它的/ hystrix页面没有问题.但是当我尝试用它来检查turbine.stream时,我只看到了在turb.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  
Run Code Online (Sandbox Code Playgroud)

当我运行这个并访问我的涡轮机实例上的hystrix仪表板,询问turb.stream时,输出中列出的ONLY断路器是appConfig中列出的第一个服务,在这种情况下是"句子"服务.奇怪的是,如果我重新安排这些服务的顺序并先放入另一个服务(比如"名词"),我只会看到那些服务的电路.仅显示列表中的第一个服务.

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

Mik*_*din 6

我没有足够的声誉来评论,所以我必须写一个答案:)

我有完全相同的问题:

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

    turbine:
        clusterNameExpression: new String("default")
        appConfig: test-service,other-service
Run Code Online (Sandbox Code Playgroud)

我的所有服务都在本地计算机上运行.

结果是:我的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
Run Code Online (Sandbox Code Playgroud)

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

    eureka:
        instance:
            hostname: localdomainx
Run Code Online (Sandbox Code Playgroud)