Spring Cloud:使用Hystrix實現斷路器原理詳解(下)

程式設計師私房菜發表於2019-01-30

Spring Cloud:使用Hystrix實現斷路器原理詳解(下)

閱讀文字大概需要 3 分鐘。

上一節主要介紹了 Spring Cloud 中使用 Hystrix 來做服務的熔斷與降級處理,確保整個系統正常執行,而不至於發生“雪崩效應”。那麼如果我們想在一個視覺化介面來監控這些服務,該怎麼做呢?

1. Hystrix Dashboard 監控

除了隔離依賴服務的呼叫以外,Hystrix 還提供了準實時的呼叫監控(Hystrix Dashboard),Hystrix 會持續記錄所有透過 Hystrix 發起的請求的執行資訊,並以統計報表和圖形的形式展示給使用者,包括每秒執行多少請求,有多少成功或者失敗等。Spring Cloud 也提供了 Hystrix Dashboard 的整合,對監控內容轉化成視覺化介面。

2. 如何監控?實際落地操作

我們新建一個工程:microservice-order-consumer-hystrix-dashboard,用來完成視覺化監控。埠號設定為 9002。

2.1 匯入監控相關的依賴

首先要匯入 dashboard 的依賴:

<dependencies>
   <!-- hystrix -->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
   </dependency>
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
   </dependency>
</dependencies>

2.2 新增啟動註解

在啟動類中,需要新增 @EnableHystrixDashboard 註解。

@SpringBootApplication
@EnableHystrixDashboard
public class OrderConsumerHystrixDashboard {

   public static void main(String[] args) {
       SpringApplication.run(OrderConsumerHystrixDashboard.class, args);
   }
}

2.3 服務提供方需要新增監控依賴

在服務提供方,也需要新增一個 Spring Boot 監控依賴:

<!-- spring boot actuator 監控資訊 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.4 測試一下

OK,這樣的話,hystrix dashboard 就基本配置好了,啟動一下我們新建的這個監控專案,在瀏覽器中輸入:,如果出現下面的這隻豪豬兄,那說明 dashboard 沒有問題。

Spring Cloud:使用Hystrix實現斷路器原理詳解(下)

3. 如何來監控其他服務

OK,上面我們能正常啟動豪豬兄了,但是如何監控其他服務呢?我們以帶有 hystrix 的訂單提供服務為例(埠號為8001)。如果要實現被監控,我們需要在被監控的服務上做一些準備。

3.1 依賴匯入

首先在這個訂單服務上新增 hystrix 依賴(當然了,該8001埠的訂單提供服務已經新增過了該依賴了):

<!-- hystrix -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

3.2 啟動類註解

在啟動類上新增註解:@EnableCircuitBreaker

@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.itcodai.springcloud.dao")
@EnableCircuitBreaker
public class OrderProvider01 {

   public static void main(String[] args) {
       SpringApplication.run(OrderProvider01.class, args);
   }
}

3.3 application.yml 配置檔案

最後,在配置檔案中開啟指標流端點,這個在後面監控時候需要用到,下文再來描述。

# 配置hystrix dashboard的url訪問
# 開啟指標流端點
management:
 endpoints:
   web:
     exposure:
       include: hystrix.stream

3.4 測試一下

萬事俱備,只欠東風了,接下來我們來測試一下效果。首先:使用8001埠的訂單服務為例,首先啟動eureka叢集,然後啟動帶有hsytrix的訂單服務,我們在瀏覽器裡輸入 可以獲取訂單服務資訊,確定訂單服務正常。

然後開啟 能出現豪豬兄,說明 dashboard 沒有問題。

Spring Cloud:使用Hystrix實現斷路器原理詳解(下)

我們看到,這個url 就是用來監控某個服務的狀態,上面在application.yml檔案裡配置的url就是作用於此,我們新開啟一個瀏覽器視窗,輸入:,可以看到一直在刷一些資訊,這些資訊就是該服務相關介面的資訊,但是很不直觀,接下來我們看一下直觀的效果。

在豪豬兄的頁面輸入, delay延遲設定為2000(2秒),Title自己取個名字即可。開啟後即可在視覺化頁面監控 8001 這個埠的介面呼叫資訊,我們呼叫兩個介面:


多次重新整理幾次呼叫,可以看到視覺化介面的一些資訊,如下:

Spring Cloud:使用Hystrix實現斷路器原理詳解(下)

從這個監控儀表盤中可以很清楚的看到服務被呼叫的狀態,至於如何看,不同的部分表示什麼?大家可以去百度一下,解釋的很清楚,這裡不再贅述。

注意一下:Hystrix dashboard 皮膚正常顯示,所監控的介面方法上必須要有 @HystrixCommand 註解,否則會一直顯示 Loading,這是一個注意的地方。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31558358/viewspace-2565241/,如需轉載,請註明出處,否則將追究法律責任。

相關文章