【微服務】Hystrix

what

服務降級:

服務器忙,請稍後再試,不讓客戶端等待並立刻返回一個友好提示,fallback
哪些情況觸發降級?

  • 程序運行異常
  • 超時
  • 服務熔斷觸發服務降級
  • 線程池/信號量打滿也會導致服務降級

降級用在服務提供者還是服務消費者呢?
都可以的,不過大多數情況是用在服務消費者多一些啦。

服務熔斷:

類比保險絲達到最大服務訪問後,直接拒絕訪問,拉閘限電,然後調用服務降級的方法並返回友好提示,fallback
熔斷是什麼?
熔斷機制是對應雪崩效應的一種微服務鏈路保護機制。當扇出鏈路的某個微服務出錯不可用或者響應時間太長時,會進行服務的降級,進而熔斷改節點微服務的調用,快速返回錯誤的響應信息。
當檢測到該節點微服務調用響應正常後,恢復調用鏈路。

斷路器

服務限流:

秒殺高併發等操作,嚴禁一窩蜂的過來擁擠,大家排隊,一秒鐘N個,有序進行

why

爲什麼微服務我們要用Hystrix呢?因爲它可以解決分佈式系統交互時超時處理和容錯的類庫, 它同樣擁有保護系統的能力。

How

在SpringCloud框架裏,熔斷機制通過Hystrix實現。Hystrix會監控微服務間調用的狀況,當失敗的調用到一定閾值,缺省是5秒內20次調用失敗,就會啓動熔斷機制。使用@HystrixHystrixCommand註解。

maven引入Hystrix依賴

  <!--hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

假設在調用某個服務的時候出現異常,在方法上加@HystrixCommand註解,通過她中fallbackMethod去調用提示方法。
在這裏插入圖片描述
假設我們出現超時的異常
在這裏插入圖片描述

註解

@HystrixProperty

@HystrixProperty全局服務降級
避免代碼膨脹,合理減少代碼量,我們可以通過@HystrixProperty解決每個方法上加一個降級方法。通過@HystrixProperty直接在類上加@HystrixProperty就可以了,方法上直接寫@HystrixCommand註解。
實例:
在這裏插入圖片描述

@FeignClient

@FeignClient 通配服務降級
通過@FeignClient中的fallback解決了解耦,實現了服務降級,解決了到嗎膨脹,代碼混亂。
實例:
在這裏插入圖片描述

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