SpringCloud Turbine

2023-11-22 13:39 更新

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

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

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


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

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

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

turbine:
  aggregator:
    clusterConfig: CUSTOMERS
  appConfig: customers

如果您需要自定義Turbine應(yīng)該使用哪些集群名稱(因為您不想在turbine.aggregator.clusterConfig配置中存儲集群名稱),請?zhí)峁╊愋蜑?code>TurbineClustersProvider的bean。

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

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

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

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

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

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

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

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號