SpringCloud微服務之Hystrix熔斷器組件(三)

本章課程學習目標:
(1)Spring Cloud微服務架構
(2)Hystrix熔斷器組件的學習
  (3)SHOP商城微服務Hystrix熔斷器組件代碼實戰

1爲什麼要使用熔斷器

        在微服務架構中通常會有多個服務層調用,基礎服務的故障可能會導致級聯故障,進而造成整個系統不可用的情況,這種現象被稱爲服務雪崩效應。服務雪崩效應是一種因“服務提供者”的不可用導致“服務消費者”的不可用,並將不可用逐漸放大的過程。
        如果下圖所示:A作爲服務提供者,B爲A的服務消費者,C和D是B的服務消者A不可用引起了B的不可用,並將不可用像滾雪球一樣放大到C和D時,雪崩效應就形成了。
在這裏插入圖片描述
如何避免產生這種雪崩效應呢?我們可以使用Hystrix來實現熔斷器。

2什麼是Hystrix

        Hystrix [hɪst’rɪks]的中文含義是豪豬, 因其背上長滿了刺,而擁有自我保護能力。
Hystrix 能使你的系統在出現依賴服務失效的時候,通過隔離系統所依賴的服務,防止服務級聯失敗,同時提供失敗回退機制,更優雅地應對失效,並使你的系統能更快地從異常中恢復。

        瞭解熔斷器模式請看下圖:

3Hystrix組件代碼實戰應用

如果代碼看的不是很清楚,請從spring Cloud微服務實戰項目(一)開始看SpringCloud之服務發現組件 Eureka與Feign組件(二)

3.1shop商城熔斷器實戰

Feign 本身支持Hystrix,不需要額外引入依賴。

  • (1) 修改shop_order模塊的application.yml ,開啓hystrix
    feign:
    hystrix:
    enabled: true
  • (2)在com.springcloud.order.client包下創建impl包,包下創建熔斷實現類,實現自接口ProductClient
1.	package com.springcloud.order.client;  
2.	import entity.Result;  
3.	import entity.StatusCode;  
4.	import org.springframework.stereotype.Component;  
5.	import java.util.Map;  
6.	@Component  
7.	public class ProductClientImpl implements ProductClient {  
8.	  
9.	    @Override  
10.	    public Result findSearch(Map searchMap) {  
11.	        return new Result(false, StatusCode.ERROR,"搶購太火爆了--排隊中");  
12.	    }  
13.	}  

  • (3)修改ProductClient的註解
@FeignClient(value = "shop-product",fallback = ProductClientImpl.class)
  • (4)測試運行
    重新啓動商品和訂單微服務,測試看熔斷器是否運行。
    測試:只要商品微服務掛了,或者有錯誤則,服務接口走熔斷器。
    應用場景:雙11下單人數太多,商品微服務承載壓力有限,萬一人數超多服務假死狀態則調用熔斷器業務處理,商品太火爆排隊中。

3.2shop商城熔斷器測試

(1)啓動shop_eureka註冊中心微服務

(2)啓動shop_product商品微服務

(3)啓動shop_order訂單微服務

(4)正常測試情況:商品微服務可用
在這裏插入圖片描述
(5)停止商品微服務,模擬商品微服務宕機:則創建訂單服務繼續可以走熔斷器邏輯。
在這裏插入圖片描述

4個人說明
經驗是由一點一點積累的,思維也是由一天一天訓練出來的。

        謝謝大家的閱讀,原創不易,如果你認爲文章對你有所幫助,就點個贊感謝大家支持,你的點贊是我持續寫作的動力。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章