附7 turbine


一、作用

  • 聚集同一個微服務的相同的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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM