Hystrix-core源碼閱讀筆記(一)

Hystrix功能就很少介紹了,本系列文章主要記錄閱讀hystrix1.5.x源碼的筆記。緩存

先來個概覽,hystrix的功能有:併發

1,命令執行熔斷器;異步

2,命令併發限制;線程

3,命令線程隔離;事件

4,命令執行結果緩存;同步

5,請求摺疊(屢次請求合併爲一個批量功能的命令執行);源碼

6,度量(命令執行事件,摺疊請求事件,線程執行事件)監控

其中命令熔斷功能,命令監控和線程隔離執行監控都依賴度量功能。度量有兩種度量,一種是全局的事件累計統計,一種是滾動的時間窗統計,熔斷主要依賴後者進行統計失敗率,監控對兩種統計都依賴。線程池

命令線程隔離,度量兩種功能都依賴rxJava包的功能,rxJava提供一種觀察者模式,把一個同步執行的過程變爲異步執行,能夠把命令執行過程落到另一個定製的線程池中;命令線程隔離使用rxJava的這個功能,hystrix對這個功能的實現很是簡單了。請求

度量是收集命令執行過程當中的事件,好比成功,失敗,超時等執行結果,按n個時間窗口進行統計。監控和熔斷器消費這個統計的數據。rxJava的觀察者模式的subject功能(既是生產者,又是消費者),能夠記錄生產事件,同時能夠進行回放事件的功能;rxJava同時提供了對消費數據過程當中進行各類變換統計功能。度量充分使用了rxJava的subject功能,一邊使用收集事件,一邊對數據進行輸出。

後面對請求摺疊,熔斷和度量兩個關鍵技術點進行詳細解讀。

相關文章
相關標籤/搜索