一、作用
- 聚集同一個微服務的相同的commandKey、Threadpool、commandGroupKey數據進行聚合
二、配置
1、集群(cluster)(turbine聚集數據的粒度)
turbine.aggregator.clusterConfig=myserviceA-dev,myserviceA-prod,myserviceB-dev,myserviceB-prod
說明:
- turbine會對同一個集群下的相同的commandKey、Threadpool、commandGroupKey數據進行聚合。
- 通常,我們會將相同環境的相同微服務化為一個集群(如上),當然也可以設置成myserviceA-dev1,myserviceA-dev2這樣的分別進行統計。
2、host連接配置(turbine連接hystrix-dashboard的url)
全局:
turbine.instanceUrlSuffix=:7080/hystrix.stream
單個指定:
turbine.instanceUrlSuffix.myserviceA-dev=:8001/hystrix.stream
turbine.instanceUrlSuffix.myserviceA-prod=:8001/hystrix.stream
turbine.instanceUrlSuffix.myserviceB-dev=:8001/hystrix.stream
turbine.instanceUrlSuffix.myserviceB-prod=:8001/hystrix.stream
說明:
- turbine的host鏈接指定的優先級:單個指定>全局,只有在某個集群沒有單個指定的時候,才使用全局指定
3、server配置(InstanceDiscovery,用於指定某個集群下有哪些server要連接)
turbine.ConfigPropertyBasedDiscovery.myserviceA-dev.instances = 11.0.11.11,22.0.22.22
以上三者的關系:1指定常量(用在2和3中),2和3拼裝成訪問的url,如上,myserviceA-dev的turbine訪問路徑就是把11.0.11.11:8001/hystrix.stream和22.0.22.22:8001/hystrix.steam的metrics統計在一起,然后在turbineIP:turbinePORT/turbine/turbine.stream?cluster=myserviceA-dev下進行展示。
注意:turbine的訪問路徑下必須有cluster名字的指定,除非在配置文件中cluster使用default,如下:
這樣的話,所有的服務都屬於一個集群,我們把所有的機器實例配在instances處就可以。這樣做的話,有幾點疑問:
疑問1:要把所有的機器實例ip都配在instances部分,這樣的話,每添加一個服務,都要在這里添加幾個IP嗎?這個是怎樣做到自動化的?
疑問2:instanceUrlSuffix部分的端口設置為8001,這樣的話,每一個服務都必須以8001端口啟動才行?
疑問3:假設服務A和服務B中都有name為hello的commandKey,那這兩個commandKey的metrics豈不是就會匯聚在一起,這樣的話不是就不准確了嗎?
參考:
- https://github.com/Netflix/Turbine/wiki/Getting-Started-(1.x)
- https://github.com/Netflix/Turbine/wiki/Configuration-(1.x)