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

首頁 慕課教程 Spring Cloud Hystrix Spring Cloud Hystrix Hystrix 服務容錯與服務降級概念講解與實操

Hystrix 服務容錯與服務降級概念講解與實操

1. 前言

在之前的幾篇小節中,我們對 Hystrix 的集成和常用的配置項做了詳細的講解,這些內容是學習 Hystrix 基礎中的基礎,在介紹完這些基礎內容之后,接著我們需要來對 Hystrix 所提供的各種特性進行介紹,這也是為什么在 Spring Cloud 微服務框架中使用 Hystrix 的原因。

本節會對 Hystrix 中首當其沖的特性 - 服務容錯與服務降級,進行詳細的介紹,包括基本概念的解釋以及在 Spring Cloud 中實現服務容錯與服務降級。

本節主要內容:

  • Hystrix 服務容錯與服務降級概念剖析;

  • Hystrix 服務容錯與降級實操。

2. Hystrix 服務容錯與服務降級概念剖析

在介紹 Hystrix 服務容錯與服務降級概念之前,我們先拋開 Hystrix 來了解一下傳統意義上所說的容錯指的是什么意思。

針對容錯這一名詞,對不同的行業領域有不同的意思,針對于計算機科學與技術等計算機相關專業而言,容錯指的是:當系統在運行時,有錯誤被激活的情況下,仍能保證不間斷提供服務的方法和技術。 通過這段話可以看出,對計算機相關專業而言,容錯指的是一種方法或技術。

Tips: 這里強調一點,容錯指的是一種方法或技術,而不是指一個方法或技術,具體含義我們繼續往下看。

在明白了什么是傳統意義上的容錯之后,我們回到 Hystrix 中,對于服務容錯而言,我們可以這樣定義,即:在我們的系統正常運行時,當系統中出現了可以直接影響系統正常運行的錯誤時,仍能夠保證服務不間斷的正常運行的一種技術,我們把這種技術稱為服務容錯。

我們都知道,服務容錯是 Hystrix 主要提供的特性,那么,如果我們想實現這一特性,我們需要通過什么方法來實現呢,或者說通過采用哪種方法可以實現服務容錯呢?

在 Hystrix 中,我們需要通過 Hystrix 提供的服務降級策略來實現服務容錯,這是 Hystrix 默認提供的實現方法,同時也只有通過這種方法可以來實現 Hystrix 的服務容錯機制。

在理解了什么是服務容錯之后,接著我們來看一下什么是服務降級。

Tips:
1. 在微服務中,服務容錯指的就是當一個服務發生故障時,通過一定的手段或者技術,來保證該故障不會影響系統正常的運行。而這種技術,在 Hystrix 中指的就是服務降級,即通過服務降級來實現服務容錯。
2. 我們可以這樣理解,服務容錯是一種技術實現目標,而服務降級則是實現服務容錯的一種方法或技術手段。

在 Hystrix 中,從某種意義上講,服務降級其實就是服務容錯,只不過換了一種叫法而已,其本質是一成不變的,我們理解了什么是服務容錯,也就理解了什么是服務降級了。

從上述內容中,我們可以知道,服務降級是實現服務容錯的一種方法或技術手段,那么,在 Hystrix 中實現服務容錯都有哪些方法或技術手段呢,接下來讓我們結合具體的代碼實操一起來看一下。

3. Hystrix 服務容錯與降級實操

3.1 通過配置 Hystrix 注解實現

要想在我們的項目中使用 Hystrix 所提供的服務容錯與服務降級特性,需要我們首先在我們的項目中啟用 Hystrix 功能,具體代碼如下:

@SpringBootApplication
@EnableHystrix
public class DemoApplication {

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

}

代碼解釋:

第 2 行,我們在項目的啟動類的上方,添加了 EnableHystrix 注解,表示我們的項目需要使用 Hystrix 功能服務。

在將 Hystrix 功能服務啟用之后,我們需要在應用服務容錯與服務降級的具體類中,去聲明相應的注解,具體代碼如下:

@RequestMapping(value = "hello", method = RequestMethod.GET)
@ResponseBody
@HystrixCommand(fallbackMethod = "helloFail")
public String hello() throws InterruptedException {
    Thread.sleep(1000);
    return "helloWorld";
}

public String helloFail() {
    return "helloFailed";
}

代碼解釋:

第 3 行,我們在具體方法的上方,添加了 HystrixCommand 注解,表示該方法應用了 Hystrix 的配置參數,接著,我們在該注解中,引入了 fallbackMethod 屬性,其值是用來指定當 hello 方法不能正確響應時所返回的錯誤處理方法,這里指向了 helloFail 方法。

Tips:
1. 當我們配置完 HystrixCommand 注解的 fallbackMethod 屬性之后,就表明我們已經成功配置好了 Hystrix 中的服務容錯與服務降級特性,就可以正常往下開展我們的業務開發工作了;
2. fallbackMethod 屬性就是用來配置 Hystrix 服務容錯與服務降級的屬性,它沒有其他額外的用途,在實際工作中,我們經常會用到該屬性。

3.2 通過引入 Open Feign ,配合 Hystrix 實現

此種實現方式,需要在項目中引入 Open Feign 遠程服務調用中間件,并且要將該中間件集成到 Hystrix 中才能實現服務容錯與降級,由于我們的課程是針對與 Hystrix 的,所以,在這里我只是簡單提出一下,讓各位同學知道,還有一種這樣的實現方案,后續我們在介紹 Open Feign 再做詳細的介紹。

4. 視頻演示

5. 小結

本節內容概覽

本小節為大家介紹了什么是服務容錯、什么是服務降級,以及對服務容錯和服務降級的代碼實操,希望各位同學通過學習本節的內容,可以對服務容錯與服務降級有自己的理解和看法,這樣,在實際的工作中,我們在管理微服務項目時,才能得心應手,在遇到問題時,才能從容應對。