隔離
Hystrix有兩種隔離方式:信號量和線程池。
線程池隔離:對每個command創建一個自己的線程池,執行調用。通過線程池隔離來保證不同調用不會相互干擾和每一個調用的並發限制。
信號量隔熱:對每個command創建一個自己的計數器,當並發量超過計數器指定值時,直接拒絕。使用信號量和線程池的一個區別是,信號量沒有timeout機制
線程池實現
HystrixThreadPool是hystrix中的線程池實現,每個線程池有一個threadkey作為key。在創建HystrixCommand時需要創建一個該命令使用的線程池的threadkey。
Hystrix線程池(HystrixThreadPool)底層使用JDK ThreadPoolExecutor實現線程管理,其實際就是封裝了JDK ThreadPoolExecutor。