1、開(kāi)啟多個(gè)Eureka Client服務(wù)實(shí)例
2、修改Ribbon項(xiàng)目:
①、在Ribbon項(xiàng)目中添加spring-cloud-starter-hystrix依賴
②、在Ribbon項(xiàng)目啟動(dòng)類(lèi)中添加@EnableCircuitBreaker注解開(kāi)啟斷路器功能
③、在服務(wù)消費(fèi)端的Service中添加@HystrixCommand注解來(lái)指定回調(diào)方法
④、創(chuàng)建請(qǐng)求命令:
1、同步執(zhí)行
2、異步執(zhí)行:重新定義實(shí)現(xiàn)
兩者皆發(fā)射一次observable
⑤、定義服務(wù)降級(jí):
使用@HystrixCommand中的fallbackMethod參數(shù)指定具體實(shí)現(xiàn)服務(wù)降級(jí)的方法
⑥、異常處理:
異常的獲取——只要在fallback實(shí)現(xiàn)方法中增加Throwable e對(duì)象的定義
⑦、命令名稱(chēng)、分組和線程池劃分:
1、命令名稱(chēng):commandKey
2、分組:groupKey
3、線程池劃分:threadPoolKey
Hystrix會(huì)根據(jù)命令組組織信息統(tǒng)計(jì)
⑧、請(qǐng)求緩存:
1、@CacheResult:用來(lái)標(biāo)記請(qǐng)求命令的結(jié)果應(yīng)該被緩存,與@HystrixCommand注解結(jié)合使用
2、@CacheRemove:用來(lái)讓請(qǐng)求命令的緩存失效,失效的緩存根據(jù)定義的key決定
3、@CacheKey:用來(lái)在請(qǐng)求的參數(shù)上標(biāo)記,使其作為緩存的Key值,如果沒(méi)有標(biāo)注則會(huì)使用所有參數(shù)
4、定義緩存Key:通過(guò)@CacheResult和@CacheRemove的cacheKeyMethod方法指定具體的生成函數(shù)
⑨、緩存清理:
@CacheRemove中的CommandKey是必須的,指定請(qǐng)求緩存的請(qǐng)求命令
⑩、請(qǐng)求合并:
Hystrix提供了HystrixCollapser來(lái)實(shí)現(xiàn)請(qǐng)求的合并,以減少通信消耗和線程數(shù)的占用