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

首頁 慕課教程 Spring Cloud Hystrix Spring Cloud Hystrix 實際業務場景下服務容錯與服務降級實戰

實際業務場景下服務容錯與服務降級實戰

1. 前言

在上一章中,我們對 Hystrix 中的所有的微服務治理特性都做了學習和了解,同時我也通過 demo 樣例的形式,來對每一個特性都做了代碼實現,可是這些代碼并不是我們真實業務場景下的代碼,只能用來學習特性所用。

為了將我們所學習和了解到的微服務治理特性應用于真實項目中,于是規劃了 4 節在實際業務場景下 Hystrix 微服務治理特性的應用內容,希望可以通過這 4 節的介紹,大家可以了解到如何在實際項目中去應用這些特性。

在本節中,我將為大家介紹真實業務場景下,服務容錯與降級的應用方法,及代碼實現。

本節主要內容:

  • 服務容錯與降級真實業務場景描述;

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

2. 服務容錯與降級真實業務場景描述

業務場景描述

有這樣一個真實的業務場景:在某大廠的用戶業務模塊下,存在一個用戶注冊服務接口,在正常流量下,請求該用戶注冊服務接口,不會出現任何問題,業務可以正常開展。但是,在遇到某活動舉辦時,當再次請求該用戶注冊服務接口時,該服務接口就會報服務處理異常,我們需要做的就是用服務容錯與降級的概念來解決這種異常現象。

問題原因分析

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

在遇到某活動舉辦時,當再次請求該用戶注冊服務接口時,由于此時的請求流量較正常情況下的多,即此時的請求流量可能是正常情況下請求流量的幾倍,甚至更多,我們的服務在處理請求時,一方面出現了服務處理堆積的現象;另一方面,當我們的服務器或數據庫不能繼續處理更多的請求時,沒有給用戶一個合理地提示,直接讓程序報出了異常。

以上兩方面就是產生該異常的原因,第一方面我們使用服務容錯與降級無法解決,只能使用高并發相關的知識,通過限流來解決,但是第二方面我們可以使用服務容錯與降級的概念來解決,接下來就讓我們看一下如何解決吧。

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

實現思路分析

鑒于上述業務場景中所描述的問題,我們可以在該用戶注冊服務上,通過添加 Hystrix 的服務容錯與降級的注解,再結合相關配置項來實現該用戶注冊服務的容錯與降級。

在為該用戶注冊服務配置了容錯與降級之后,當在大流量情況下,如果我們的服務器或數據庫不能繼續處理更多的請求時,此時會給用戶一個提示,并且拒絕處理后續的服務請求。

由于我們的本套課程不涉及 Open Feign ,所以這里為大家介紹以注解形式配置服務容錯與降級。

實操

@RequestMapping("register.do")
@ResponseBody
@HystrixCommand(fallbackMethod = "register_failed")
public CommonResponse<String> register(@RequestBody User user){
    return userService.register(user);
}
    
public CommonResponse<String> register_failed(){
    return  CommonResponse.errorResponse("服務拒絕處理,請聯系系統管理員");
}

代碼解釋

第 3 行,我們使用 HystrixCommand 注解的 fallbackMethod 屬性,來為用戶注冊服務添加容錯與降級,此時,當該服務出現上述業務場景問題時,就會返回 register_failed 方法所對應的響應,并且后續服務不會繼續處理。

Tips:
1. 配置服務容錯與降級時,首先需要清楚對應服務下都可能會出現哪些問題,出現這些問題的產生原因主要是什么,我們只有在清楚了這些錯誤產生的原因之后,我們才能合理地去編寫服務容錯與降級時的響應結果,這點同學們需要注意。
2. 在實際項目開發中,基本上每個承載大流量的接口服務都會配置服務容錯與降級,這種配置方式可能在微服務項目中已經成為了一種習慣。

4. 小結

本節內容概覽

本小節以一個真實業務場景下的服務,為大家介紹了如何在真實業務場景下配置 Hystrix 的服務容錯與降級,并且做了代碼實操,針對容易出現問題的地方,也做了注意事項的補充,希望同學們可以對真實業務場景,服務容錯與降級的應用方法有所了解。