最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

首頁 慕課教程 Spring Cloud Hystrix Spring Cloud Hystrix 實際業(yè)務(wù)場景下 Hystrix 服務(wù)監(jiān)控實戰(zhàn)

實際業(yè)務(wù)場景下 Hystrix 服務(wù)監(jiān)控實戰(zhàn)

1. 前言

在之前的小節(jié)中,我們已經(jīng)對 Hystrix 提供的微服務(wù)監(jiān)控平臺做了詳細(xì)的介紹,基本上已經(jīng)把這個微服務(wù)監(jiān)控平臺的常用內(nèi)容都介紹完畢了,那么在本節(jié)中,將會結(jié)合這些基本參數(shù)對我們的微服務(wù)進(jìn)行一個監(jiān)控和配置。

本節(jié)主要內(nèi)容:

  • 實際業(yè)務(wù)場景描述;

  • 業(yè)務(wù)場景實現(xiàn)思路分析與實操。

2. 實際業(yè)務(wù)場景描述

業(yè)務(wù)場景描述

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

在拆分了項目架構(gòu)之后,雖然可以支撐持續(xù)增長的業(yè)務(wù)需要,但是,在拆分后的項目架構(gòu)中,Hystrix 無法對所有項目進(jìn)行監(jiān)控,即 Hystrix 服務(wù)監(jiān)控平臺只能監(jiān)控一個分散的項目,無法對項目整體進(jìn)行監(jiān)控。

問題原因分析

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

上述場景場景中,項目的架構(gòu)方式是微服務(wù)的分布式架構(gòu),而一般來說的 Hystrix 微服務(wù)監(jiān)控平臺默認(rèn)只對一個項目實例起作用,所以,也就導(dǎo)致了一個微服務(wù)平臺只對一個微服務(wù)實例起作用。

3. 業(yè)務(wù)場景實現(xiàn)思路分析與實操

實現(xiàn)思路分析

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

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

我們只需要將 Turbine 引入到我們的項目中去,即可實現(xiàn)分布式架構(gòu)下的多微服務(wù)監(jiān)控了。

實操

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

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

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

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

代碼解釋

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

第 4 行,我們通過 appConfig 屬性來配置需要繼承到 turbine 中的微服務(wù),即需要同時刻進(jìn)行監(jiān)控的微服務(wù),多個微服務(wù)使用英文狀態(tài)下的逗號隔開。

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

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

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

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

代碼解釋

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

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

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

http://localhost:port/turbine.stream

我們即可在瀏覽器中看到多個微服務(wù)已經(jīng)被監(jiān)控了,如下圖所示:

Hystrix Dashboard 多微服務(wù)同時監(jiān)控

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

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

4. 小結(jié)

本節(jié)內(nèi)容概覽

本小節(jié)以一個真實業(yè)務(wù)場景為大家介紹了 Hystrix 的另一個組件 Turbine ,以及 Turbine 的應(yīng)用方法。Hystrix 的微服務(wù)監(jiān)控平臺一共就包含這兩部分內(nèi)容,而這兩種情況分別對應(yīng)不同的使用場景,同學(xué)們要注意區(qū)分。