Hystrix功能就很少介紹了,本系列文章主要記錄閱讀hystrix1.5.x源碼的筆記。緩存
先來個概覽,hystrix的功能有:併發
1,命令執行熔斷器;異步
2,命令併發限制;線程
3,命令線程隔離;事件
4,命令執行結果緩存;同步
5,請求摺疊(屢次請求合併爲一個批量功能的命令執行);源碼
6,度量(命令執行事件,摺疊請求事件,線程執行事件)監控
其中命令熔斷功能,命令監控和線程隔離執行監控都依賴度量功能。度量有兩種度量,一種是全局的事件累計統計,一種是滾動的時間窗統計,熔斷主要依賴後者進行統計失敗率,監控對兩種統計都依賴。線程池
命令線程隔離,度量兩種功能都依賴rxJava包的功能,rxJava提供一種觀察者模式,把一個同步執行的過程變爲異步執行,能夠把命令執行過程落到另一個定製的線程池中;命令線程隔離使用rxJava的這個功能,hystrix對這個功能的實現很是簡單了。請求
度量是收集命令執行過程當中的事件,好比成功,失敗,超時等執行結果,按n個時間窗口進行統計。監控和熔斷器消費這個統計的數據。rxJava的觀察者模式的subject功能(既是生產者,又是消費者),能夠記錄生產事件,同時能夠進行回放事件的功能;rxJava同時提供了對消費數據過程當中進行各類變換統計功能。度量充分使用了rxJava的subject功能,一邊使用收集事件,一邊對數據進行輸出。
後面對請求摺疊,熔斷和度量兩個關鍵技術點進行詳細解讀。