Turbine概述
Turbine真正做的,就是将每一個(指定)服務的Hystrix/stream中的狀态資訊取出,并集中處理(計算與展示),應該說,它是具有自己獨立的排程的,服務(執行個體)發現,服務連接配接,資料聚合,資料輸出,共四個過程。
如上圖: Turbine首先通過
InstanceDiscovery
子產品擷取所有的執行個體資訊(定期更新擷取),
ConnectionManager
負責連接配接到執行個體,連接配接上執行個體後,便會有源源不斷的資料流發送給聚合器
Aggregator
之後,再傳送給需要的地方。
使用Turbine聚合監控
在使用HystrixDashboard元件監控服務的熔斷器狀況時,每個服務都有一個HystrixDashboard首頁,當服務數量很多時,監控非常不友善。為了同時監控多個服務的熔斷器的狀況,Netflix 開源了Hystrix 的另一個元件Turbine。Turbine 用于聚合多個Hystrix Dashboard,将多個Hystrix Dashboard元件的資料放在一個頁面 上展示,進行集中監控。
依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
配置:
spring:
application:
name: service-turbine
server:
port: 8769
turbine:
aggregator:
clusterConfig: default #指定聚合哪些叢集,多個使用","分割,預設為default。可使用http://.../turbine.stream?cluster={clusterConfig}通路
app-config: eureka-ribbon-client,eureka-feign-client #配置Eureka中的serveceId清單,表明監控哪些服務
cluster-name-expression: new String("default")
# 1. ClusterNameExpression:指定叢集名稱,預設表達式appName;此時trubine.aggregatro.clusterConfig需要配置想要監控的應用名稱
# 2. 當ClusterNameExpression:default時,turbine.aggregator.clusterConfig可以不寫,因為預設就是default
# 3. 當ClusterNameExpression:metadata['cluster']時,假設想要監控的應用配置了
# eureka.instance.metadata-map.cluster:ABC,則需要配置,同時turbine.aggregator.clusterConfig:ABC
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka/
- turbine.aggregator.clusterConfig配置了需要監控的服務名
- clusterNameExpression預設為服務名的叢集,此時用預設的即可
- turbine.aggregator.clusterConfig預設就是default
示例:
turbine:
aggregator:
clusterConfig:CLOUD_SIMPLE_SERVICE
appConfig:cloud-simple-service
clusterNameExpression:metadata['cluster']
在hystrix dashboard的監控url中就應該輸入:
http://localhost:port/turbine.stream?cluster=CLOUD-SIMPLE-SERVICE
cluster對應clusterConfig中的名稱
開啟turbine
@SpringBootApplication
@EnableTurbine//開啟trubine
public class EurekaMonitorClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaMonitorClientApplication.class, args);
}
}
啟動工程eureka-server、eureka-client、 eureka-ribbon-client 和eureka-monitor -client。
在浏覽器上通路
http://localhost:8764hi?name-forezp和ht:/calhost:8765/hi?name=forezpo
在浏覽器上打開網址htp://localhost:8765/hystrix,這個界面為Hystrix Dashboard界面。
在界面上依次輸入監控流的Url位址
htp://localhost:8769/turbine.stream
、監控時間間隔2000毫秒和title,單擊“monitor”,可以看到如圖
這個頁面聚合了eureka-ribbon-client和eureka-feign-client的Hystrix Dashboard資料。