命令名稱:
1.1 以繼承的方式實現Hystrix命令使用類名作為默認的命令名稱,我們也可以在構造函數中通過Setter靜態類來設置
1.2 為了保存每個命令分配的Setter分配,你也可以像這樣緩存Setter
命令分組和線程池划分:
通過設置命令組,Hystrix會根據組來組織和統計命令的告警、儀表盤等信息。一定要設置命令組,因為除了根據組來實現統計外,Hystrix命令默認的線程划分也是根據命令分組來實現的。默認情況下,Hystrix會讓相同組名的精靈使用同一個線程池,所以我們需要在創建Hystrix命令時為其指定命令組名來實現默認的線程池划分。
Hystrix還提供了HystrixThreadPoolKey來對線程池進行設置,通過它我們可以實現更細粒度的線程池划分,比如
通常情況下,盡量通過HystrixThreadPoolKey的方式來指定線程池的划分,而不是通過組名默認的方式,因為多個不同的命令可能從業務邏輯上來看屬於同一個組,但是往往從實現本身上需要跟其他命令進行隔離。
當我們使用@HystrixCommand注解的時候,只需要設置commandKey、groupKey以及threadPoolKey屬性就可以設置命令名稱、分組以及線程划分。
@HystrixCommand(commandKey = "getUserId", groupKey = "UserGroup", threadPoolKey = "getUserByIdThread") public String getUserId(String name) { ..... }
參考:
[1]Github,https://github.com/Netflix/Hystrix/wiki/How-it-Works
[2] 《SpringCloud微服務實戰》,電子工業出版社,翟永超