服務(wù)容錯(cuò)保護(hù):Spring Cloud Hystrix

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ù)的占用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容