1. 程式人生 > >spring cloud(八):Turbine的應用

spring cloud(八):Turbine的應用

spring cloud Turbine

1、概念

Turbine 是聚合服務器發送事件流數據的一個工具,用來監控集群下 hystrix 的 metrics 情況。

2、引入依賴

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-netflix-turbine</artifactId>

</dependency>

3、創建應用

TurbineApplication

@SpringBootApplication

@EnableTurbine

public class TurbineApplication {

public static void main(String[] args) {

new SpringApplicationBuilder(TurbineApplication.class).web(true).run(args);

}

}

4、對應配置信息

server.port=8031

spring.application.name=turbine

turbine.appConfig=app01,app02

turbine.aggregator.clusterConfig= app

turbine.clusterNameExpression= metadata['cluster']

turbine.appConfig 配置需要聚合的應用
turbine.aggregator.clusterConfig turbine需要聚合的集群名稱 通過 http://localhost:8031/turbine.stream?cluster=app 訪問
turbine.clusterNameExpression 獲取集群名表達式,這裏表示獲取元數據中的cluster數據,在app01、app02為配置對應信息

5、創建EurekaServer服務

6、創建應用app01

@Configuration

@EnableAutoConfiguration

@EnableDiscoveryClient

@EnableCircuitBreaker

@RestController

public class App01 {

public static void main(String[] args) {

SpringApplication.run(App01.class, args);

}

@Autowired

private HelloService service;

@RequestMapping("/")


public String hello() {

return this.service.hello();

}

@Component

public static class HelloService {

@HystrixCommand(fallbackMethod = "fallback")

public String hello() {

return "Hello World";

}

public String fallback() {

return "Fallback";

}

}

}

對應配置:

server.port= 8091
spring.application.name=app01
eureka.instance.hostname=localhost
eureka.instance.metadata-map.cluster=app

7、創建應用app02

對應配置:

server.port= 8092
spring.application.name=app02
eureka.instance.hostname=localhost
eureka.instance.metadata-map.cluster=app

8、三個應用同時註冊到EurekaServer,然後啟動大盤服務,在大盤服務裏面輸入http://localhost:9031/turbine.stream?cluster=app得到監控界面;

9、監控界面的各個指標的含義

  1. 圓形顏色和大小:代表健康情況和流量

  2. 折線:2分鐘內的吞吐率變化情況

  3. hosts:集群中節點個數

  4. median: 每個請求時間的中位數

  5. mean: 平均每個請求消耗的時間

  6. subscriberGetAccount:
    綠200545:代表成功請求數量
    藍0:代表斷路數量
    黃19:代表表超時的線程數量
    紫94:代表線程池拒絕次數,即線程不夠用
    紅0: 失敗或異常數量
    灰0%: 最後10秒錯誤率

  7. host: 各節點每秒的平均請求吞吐量

  8. cluster: 集群每秒的請求吞吐量

  9. circuit:代表斷路器狀態即:是否打開斷路器 90th,99th,99.5th:
    最後1分鐘各種延遲的百分比。如圖:90%的請求小於10ms;而99%的請求小於44ms,99.5%的請求在61ms完成。

10、總結

通過turbine可以監控集群的請求量,可以知道系統的請求高峰期,從而更好的知道系統的短板在哪裏

spring cloud(八):Turbine的應用