SpringCloud Turbine

2023-11-22 13:39 更新

從系統(tǒng)的整體運(yùn)行狀況來(lái)看,查看單個(gè)實(shí)例的Hystrix數(shù)據(jù)不是很有用。Turbine是一個(gè)應(yīng)用程序,它將所有相關(guān)的/hystrix.stream端點(diǎn)聚合到一個(gè)組合的/turbine.stream中,以便在Hystrix儀表板中使用。個(gè)別實(shí)例通過(guò)Eureka定位。運(yùn)行Turbine需要使用@EnableTurbine注釋對(duì)您的主類進(jìn)行注釋(例如,通過(guò)使用spring-cloud-starter-netflix-turbine設(shè)置類路徑)。 Turbine 1 Wiki中記錄的所有配置屬性均適用。唯一的區(qū)別是turbine.instanceUrlSuffix不需要預(yù)先添加的端口,因?yàn)槌?code>turbine.instanceInsertPort=false,否則它將自動(dòng)處理。

默認(rèn)情況下,Turbine通過(guò)在Eureka中查找其hostNameport條目,然后將/hystrix.stream附加到已注冊(cè)實(shí)例上來(lái)查找/hystrix.stream端點(diǎn)。如果實(shí)例的元數(shù)據(jù)包含management.port,則使用它代替/hystrix.stream端點(diǎn)的port值。默認(rèn)情況下,名為management.port的元數(shù)據(jù)條目等于management.port配置屬性??梢允褂靡韵屡渲酶采w它:

eureka:
  instance:
    metadata-map:
      management.port: ${management.port:8081}


turbine.appConfig配置密鑰是Eureka serviceId的列表,渦輪使用它們來(lái)查找實(shí)例。然后,在Hystrix儀表板中使用渦輪流,其URL類似于以下內(nèi)容:

https://my.turbine.server:8080/turbine.stream?cluster=CLUSTERNAME

如果名稱為default,則可以省略cluster參數(shù)。cluster參數(shù)必須與turbine.aggregator.clusterConfig中的條目匹配。從Eureka返回的值是大寫的。因此,如果存在一個(gè)向Eureka注冊(cè)的名為customers的應(yīng)用程序,則以下示例可用:

turbine:
  aggregator:
    clusterConfig: CUSTOMERS
  appConfig: customers

如果您需要自定義Turbine應(yīng)該使用哪些集群名稱(因?yàn)槟幌朐?code>turbine.aggregator.clusterConfig配置中存儲(chǔ)集群名稱),請(qǐng)?zhí)峁╊愋蜑?code>TurbineClustersProvider的bean。

clusterName可以通過(guò)turbine.clusterNameExpression中的SPEL表達(dá)式進(jìn)行自定義,其中根目錄為InstanceInfo的實(shí)例。默認(rèn)值為appName,這意味著Eureka serviceId成為群集密鑰(即,客戶的InstanceInfoappNameCUSTOMERS)。一個(gè)不同的示例是turbine.clusterNameExpression=aSGName,它從AWS ASG名稱獲取集群名稱。以下清單顯示了另一個(gè)示例:

turbine:
  aggregator:
    clusterConfig: SYSTEM,USER
  appConfig: customers,stores,ui,admin
  clusterNameExpression: metadata['cluster']

在前面的示例中,來(lái)自四個(gè)服務(wù)的群集名稱是從它們的元數(shù)據(jù)映射中拉出的,并且期望其值包括SYSTEMUSER。

要將“ 默認(rèn) ”群集用于所有應(yīng)用程序,您需要一個(gè)字符串文字表達(dá)式(如果在YAML中,也要使用單引號(hào)和雙引號(hào)進(jìn)行轉(zhuǎn)義):

turbine:
  appConfig: customers,stores
  clusterNameExpression: "'default'"

Spring Cloud提供了spring-cloud-starter-netflix-turbine,它具有運(yùn)行Turbine服務(wù)器所需的所有依賴關(guān)系。要添加Turbine,請(qǐng)創(chuàng)建一個(gè)Spring Boot應(yīng)用程序并使用@EnableTurbine對(duì)其進(jìn)行注釋。

默認(rèn)情況下,Spring Cloud允許Turbine使用主機(jī)和端口以允許每個(gè)主機(jī),每個(gè)集群多個(gè)進(jìn)程。如果你想建立在本地Netflix的行為Turbine,以使每臺(tái)主機(jī)的多個(gè)進(jìn)程,每簇(關(guān)鍵實(shí)例ID是主機(jī)名),集合turbine.combineHostPort=false。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)