第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 Spring Cloud Hystrix Spring Cloud Hystrix Hystrix 服務(wù)快速失敗概念講解與實(shí)操(一)

Hystrix 服務(wù)快速失敗概念講解與實(shí)操(一)

1. 前言

在之前的小節(jié)中,我們對(duì)服務(wù)容錯(cuò)與服務(wù)降級(jí)的定義做了詳盡的介紹,同時(shí),也在 Spring Cloud 中實(shí)現(xiàn)了 Hystrix 的服務(wù)容錯(cuò)與服務(wù)降級(jí),這只是 Hystrix 最主要的一個(gè)特性,接下來(lái)讓我們來(lái)看一下 Hystrix 的其他特性 - 服務(wù)快速失敗。

服務(wù)快速失敗分為普通版本和斷路器版本,在本節(jié)中,我將對(duì) Hystrix 中提供的普通版本的服務(wù)快速失敗的定義做詳細(xì)的介紹,在介紹完定義之后,我們會(huì)通過(guò)一段代碼示例,來(lái)在 Spring Cloud 中實(shí)現(xiàn)普通版本的 Hystrix 的服務(wù)快速失敗。

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

  • 什么是服務(wù)快速失??;

  • Hystrix 服務(wù)快速失敗實(shí)操。

2. 什么是服務(wù)快速失敗

在介紹服務(wù)快速失敗之前,我們需要首先了解一個(gè)概念,那就是雪崩效應(yīng),那么什么是雪崩效應(yīng)呢?

雪崩效應(yīng),是一種微服務(wù)項(xiàng)目間出現(xiàn)的一種不良現(xiàn)象,一般是指:由一個(gè)微服務(wù)發(fā)生故障之后,影響到了其他微服務(wù)的正常運(yùn)行,或者說(shuō),當(dāng)一個(gè)微服務(wù)發(fā)生故障不能正常運(yùn)行時(shí),所導(dǎo)致的其他微服務(wù)也跟著受影響,導(dǎo)致其他的微服務(wù)也不能正常運(yùn)行。

假設(shè)現(xiàn)在有 4 個(gè)微服務(wù),分別用服務(wù) A 、服務(wù) B 、服務(wù) C 、服務(wù) D 表示,并且,服務(wù) B 的運(yùn)行依賴于服務(wù) A ,服務(wù) C 的運(yùn)行依賴于服務(wù) B ,服務(wù) D 的運(yùn)行也依賴于服務(wù) B , 這 4 個(gè)微服務(wù)之間的正常運(yùn)行關(guān)系如下圖所示:

假想微服務(wù)架構(gòu)

為了驗(yàn)證雪崩效應(yīng),現(xiàn)在,我們假設(shè)服務(wù) B 由于外界因素發(fā)生了宕機(jī)現(xiàn)象,那么此時(shí)的服務(wù) B 由于沒(méi)有任何保護(hù)措施,所以服務(wù) B 無(wú)法正常運(yùn)行。

由于服務(wù) B 不能正常運(yùn)行,所以,導(dǎo)致依賴于服務(wù) B 的服務(wù) C 和服務(wù) D 都不能繼續(xù)正常運(yùn)行了,如下圖所示:

雪崩效應(yīng)產(chǎn)生原理

Tips:
1. 在實(shí)際工作中,在正式開(kāi)發(fā)項(xiàng)目之前,應(yīng)該就可能會(huì)出現(xiàn)雪崩現(xiàn)象的因素展開(kāi)集中討論,并將討論結(jié)果以書(shū)面文件形式進(jìn)行存儲(chǔ),這樣一來(lái),在真正發(fā)生雪崩現(xiàn)象時(shí),可以及時(shí)啟用應(yīng)急方案;
2. 在開(kāi)發(fā)微服務(wù)項(xiàng)目時(shí),我們應(yīng)該盡最大可能的去避免雪崩現(xiàn)象的發(fā)生,因?yàn)檠┍垃F(xiàn)象除了會(huì)影響業(yè)務(wù)的正常開(kāi)展之外,也會(huì)影響我們的資源消耗。

在了解了什么是雪崩效應(yīng)之后,接下來(lái)我們來(lái)看一下什么是服務(wù)快速失敗。

服務(wù)快速失敗,就微服務(wù)而言,是指:當(dāng)微服務(wù)之間發(fā)生雪崩現(xiàn)象時(shí),在程序中通過(guò)采用某種技術(shù)方法或手段,來(lái)將引起雪崩效應(yīng)的微服務(wù)快速處理,其處理的最終目的是要保證該微服務(wù)不會(huì)導(dǎo)致其他后續(xù)的微服務(wù)出現(xiàn)故障。

說(shuō)白了,服務(wù)快速失敗就是當(dāng)微服務(wù)發(fā)生故障時(shí),所采取的一個(gè)兜底的方案,該方案的執(zhí)行會(huì)迅速終止發(fā)生故障的微服務(wù)的繼續(xù)運(yùn)行,且可以保證后續(xù)微服務(wù)的正常運(yùn)行,具體如下圖所示:

服務(wù)快速失敗的作用

在上圖中,我們可以看到,發(fā)生故障的服務(wù) B,由于采用了服務(wù)快速失敗機(jī)制,導(dǎo)致在發(fā)生故障時(shí)采取了快速失敗措施,且同時(shí)也保證了服務(wù) C 和服務(wù) D 的正常運(yùn)行(至于如何保證的服務(wù) C 和服務(wù) D 的正常運(yùn)行,就涉及到了源碼層面,由于該知識(shí)不符合本套課程的初衷,所以這里不予介紹)。

Tips:
1. 服務(wù)快速失敗幾乎稱為了每個(gè)微服務(wù)項(xiàng)目中必不可少的措施,所以,我們?cè)陂_(kāi)發(fā)微服務(wù)項(xiàng)目時(shí),一定要采用服務(wù)快速失敗機(jī)制,來(lái)保證我們項(xiàng)目的正常運(yùn)行;
2. 理解什么是雪崩效應(yīng)是理解什么是服務(wù)快速失敗的前提概念,同學(xué)們一定要對(duì)這兩個(gè)概念有所了解才行。

3. Hystrix 實(shí)現(xiàn)服務(wù)快速失敗

在了解了什么是服務(wù)快速失敗之后,讓我們來(lái)看看,在 Spring Cloud 中如何使用 Hystrix 來(lái)實(shí)現(xiàn)服務(wù)快速失敗吧。

這里我們還以之前的 hello 方法來(lái)做講解,首先需要我們?cè)陧?xiàng)目中開(kāi)啟 Hystrix :

@SpringBootApplication
@EnableHystrix
public class DemoApplication {

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

}

此段代碼已經(jīng)在之前做過(guò)介紹,這里不再贅述。

在開(kāi)啟 Hystrix 之后,我們來(lái)看我們的 hello 方法:

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

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

在此段代碼中,我們同樣使用了 HystrixCommand 注解,并聲明了 fallbackMethod 屬性。

假設(shè)該段代碼就位于我們上述的服務(wù) B 中,且此時(shí)服務(wù) B 發(fā)生了故障,導(dǎo)致訪問(wèn)服務(wù) B 的 hello 方法,無(wú)法返回正常的影響。

由于服務(wù) B 配置了服務(wù)快速失敗,那么,我們?cè)谠L問(wèn)服務(wù) B 的 hello 方法時(shí),會(huì)返回由 fallbackMethod 屬性所返回的兜底的響應(yīng),在實(shí)際業(yè)務(wù)中,helloFail 返回的則是兜底的業(yè)務(wù)數(shù)據(jù),以保證后續(xù)的微服務(wù)可以正常運(yùn)行。

4. 視頻演示

5. 小結(jié)

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

本小節(jié)通過(guò)圖文并茂的方式,從什么是雪崩效應(yīng),到什么是 Hystrix 的服務(wù)快速失敗,最后再到我們?cè)?Spring Cloud 中服務(wù)快速失敗的實(shí)現(xiàn),詳細(xì)介紹了雪崩效應(yīng)的產(chǎn)生原因、產(chǎn)生現(xiàn)象,以及服務(wù)快速失敗的通用實(shí)現(xiàn)手段,旨在幫助同學(xué)們可以很清晰的理解什么是雪崩效應(yīng),以及由雪崩效應(yīng)所引起的服務(wù)快速失敗現(xiàn)象。