Hystrix的介紹和簡單使用

2022-09-15 20:09:26 字數 1949 閱讀 6019

這週在看專案的相關**時,接觸到了hystrix,因此查詢了相關資料學習了下。

一、什麼是hystrix

hystrix是netflix針對微服務分布式系統的熔斷保護中介軟體,當我們的客戶端連線遠端的微服務時,有兩種情況需要考慮:首先,如果遠端系統當機了我們怎麼辦?

其次,我們如何管理對遠端微服務的呼叫效能,以保證每個微服務以最小延遲最快效能響應?

hystrix是乙個有關延遲和失敗容錯的開源庫包,用來設計隔離訪問遠端系統端點或微服務等,防止級聯**式的失敗,也就是由乙個小問題引起接二連三擴大的

瘋狂的錯誤**直至整個系統癱瘓,能夠讓複雜的分布式系統更加靈活具有彈性。

例如,在乙個大中型系統中,通常系統很多依賴(http,hession,netty,dubbo等),如下圖:

在高併發訪問下,這些依賴的穩定性與否對系統的影響非常大,但是依賴有很多不可控問題:如網路連線緩慢,資源繁忙,暫時不可用,服務離線等.如下圖:qps

為50的依賴 i出現不可用,但是其他依賴仍然可用.

當依賴i 阻塞時,大多數伺服器的執行緒池就出現阻塞(block),影響整個線上服務的穩定性.如下圖:

在複雜的分布式架構的應用程式有很多的依賴,都會不可避免地在某些時候失敗。高併發的依賴失敗時如果沒有隔離措施,當前應用服務就有被拖垮的風險。

例如:乙個依賴30個soa服務的系統,每個服務99.99%可用。  99.99%的30次方 ≈ 99.7%  。0.3% 意味著一億次請求 會有 3,000,00次失敗  。換算成時間大約每月

有2個小時服務不穩定。隨著服務依賴數量的變多,服務不穩定的概率會成指數性提高。

解決問題方案:對依賴做隔離,hystrix就是處理依賴隔離的框架,同時也是可以幫我們做依賴服務的治理和監控。

二、如何使用hystrix

hystrix github上有乙個全面的文件介紹如何使用hystrix。這很簡單,只要使用hystrix庫建立類並呼叫服務。首先需要在m**en專案中引入如下依賴:

1.3.16

1.1.2

com.netflix.hystrix

hystrix-core

$com.netflix.hystrix

hystrix-metrics-event-stream$

nexus

local private nexus

true

false

然後使用命令模式封裝依賴邏輯,具體j**a**如下:

public class commandhelloworld extends hystrixcommand

@override

protected string run()

}同時,我們還可以通過使用fallback() 提供降級策略,例如:

public class helloworldcommand extends hystrixcommand

@override

protected string getfallback()

@override

protected string run() throws exception

public static void main(string args) throws exception

}/* 執行結果:getfallback() 呼叫執行

getfallback executed

*/reference: 

Hystrix原理和使用

構造乙個 hystrixcommand或hystrixobservablecommand物件,用於封裝請求,並在構造方法配置請求被執行需要的引數 執行命令,hystrix提供了4種執行命令的方法,後面詳述 判斷是否使用快取響應請求,若啟用了快取,且快取可用,直接使用快取響應請求。hystrix支援請...

C FileStream簡單介紹和使用

本章講述 filestream類的基本功能,以及簡單示例 1 引用命名空間 using system.io 2 注意 使用io操作檔案時,要注意流關閉和釋放問題!強力推薦 將建立檔案流物件的過程寫在using當中,會自動幫助我們釋放資源 使用try catch exception ex 進行一次捕獲...

ReentrantLock介紹和簡單使用

reentrantlock和synchronized比較 1 reentrantlock和synchronized都是獨佔鎖,前者需要主動的加鎖和釋放鎖,後者加鎖解鎖的過程會自動進行。2 reentrantlock和synchronized都是可重入的,前者加鎖和釋放鎖的次數必須一致,否則會一直進入...