亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

首頁 慕課教程 Spring Cloud Hystrix Spring Cloud Hystrix 實際業務場景下 Hystrix 服務監控實戰

實際業務場景下 Hystrix 服務監控實戰

1. 前言

在之前的小節中,我們已經對 Hystrix 提供的微服務監控平臺做了詳細的介紹,基本上已經把這個微服務監控平臺的常用內容都介紹完畢了,那么在本節中,將會結合這些基本參數對我們的微服務進行一個監控和配置。

本節主要內容:

  • 實際業務場景描述;

  • 業務場景實現思路分析與實操。

2. 實際業務場景描述

業務場景描述

有這樣一個真實的業務場景:在某大廠某銷售業務項目中,由于某大廠銷售業務板塊業務的持續增加,導致之前原本設計好的項目架構出現了問題,不足以支撐持續增長的業務需要,于是,某大廠程序員對項目架構做了拆分,并最終形成了以 Spring Cloud 為基礎架構的微服務分布式項目架構。

在拆分了項目架構之后,雖然可以支撐持續增長的業務需要,但是,在拆分后的項目架構中,Hystrix 無法對所有項目進行監控,即 Hystrix 服務監控平臺只能監控一個分散的項目,無法對項目整體進行監控。

問題原因分析

在解決問題之前,我們首先來分析一下這種問題產生的原因。

上述場景場景中,項目的架構方式是微服務的分布式架構,而一般來說的 Hystrix 微服務監控平臺默認只對一個項目實例起作用,所以,也就導致了一個微服務平臺只對一個微服務實例起作用。

3. 業務場景實現思路分析與實操

實現思路分析

針對上述場景,我們需要將所有拆分出來的微服務都要集成到 Hystrix 的微服務監控平臺中去,但是我們應該怎么集成呢?

Hystrix 針對不同場景下,提供了不同的微服務監控方式:針對單體架構或只需要對一個服務實例進行監控的業務場景,我們只需要像我在介紹微服務監控平臺時那樣,進行配置即可;針對分布式的項目結構,或同時需要監控多個微服務的場景,Hystrix 提供了一個名為 Turbine 的多服務器微服務監控組件。

我們只需要將 Turbine 引入到我們的項目中去,即可實現分布式架構下的多微服務監控了。

實操

要想在項目中引入 Turbine ,我們首先需要將 Turbine 的依賴引入到項目中:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-turbine</artifactId>
</dependency>

在引入了 Turbine 依賴之后,我們需要對 Turbine 進行一些簡單的配置,在 yml 配置文件中:

turbine:
  aggregator:
    clusterConfig: default   
  appConfig: service-one,service-two,service-three
  clusterNameExpression: "'default'"

代碼解釋

第 3 行,我們通過 clusterConfig 屬性來配置 turbine 采用的集群策略,一般我們配置 default 即可。

第 4 行,我們通過 appConfig 屬性來配置需要繼承到 turbine 中的微服務,即需要同時刻進行監控的微服務,多個微服務使用英文狀態下的逗號隔開。

第 5 行,我們通過 clusterNameExpression 屬性來配置集群的名稱表達式,一般也是采用 default 配置即可。

yml 配置文件配置完成后,我們需要在項目的啟動類中添加 turbine 的注解:

@SpringBootApplication
@EnableHystrix
@EnableHystrixDashboard
@EnableTurbine
public class SaleApplication {

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

代碼解釋

第 4 行,我們添加了 @EnableTurbine 注解,來在項目中開啟 turbine 服務,以支持同時監控多個微服務。

在配置完了上述兩部分后,我們的 Hystrix Turbine 組件就引入到了我們的項目中,我們就可以對多個微服務進行監控了。

配置完成后,運行我們的項目,在瀏覽器地址欄中輸入我們的監控地址:

http://localhost:port/turbine.stream

我們即可在瀏覽器中看到多個微服務已經被監控了,如下圖所示:

Hystrix Dashboard 多微服務同時監控

從上圖可知,這里我們對兩個微服務進行了監控,其圖中的各項監控參數和我們在之前介紹 Hystrix 微服務監控平臺中的參數一樣,這里就不再贅述了。

Tips:
1. 在 appConfig 屬性配置中,屬性的值為每個需要監控的微服務的 serviceId 名稱,同學們不要配置錯了。
2. 各位在引入 Turbine 的依賴時,注意不要引錯依賴了,如果大家引入了 aitifactId 為 spring-cloud-starter-turbine 的依賴,我們是無法使用 Turbine 的,因為這個依賴并不是 Spring Cloud 微服務組件中所提供的 Turbine 服務,而是單獨的 Turbine 服務,我們無法在微服務項目中使用。
3. 各位同學在訪問 Turbine 多微服務監控平臺時,注意訪問地址發生了變化,大家使用之前的微服務監控平臺訪問地址時訪問不到的,這點需要同學們注意。

4. 小結

本節內容概覽

本小節以一個真實業務場景為大家介紹了 Hystrix 的另一個組件 Turbine ,以及 Turbine 的應用方法。Hystrix 的微服務監控平臺一共就包含這兩部分內容,而這兩種情況分別對應不同的使用場景,同學們要注意區分。