熔斷器使我們微服務(wù)架構(gòu)中最后一層保護(hù)措施庆锦,可以防止一個(gè)節(jié)點(diǎn)故障而影響到其他節(jié)點(diǎn),我們這里使用hystrix來(lái)作為熔斷器艇搀,hystrix有三個(gè)狀態(tài)焰雕。
關(guān)閉(closed)
正常情況下hystrix為關(guān)閉狀態(tài)
半打開(kāi)(half open)
當(dāng)服務(wù)接口對(duì)應(yīng)的熔斷器狀態(tài)為open的時(shí)候芳杏,所有服務(wù)調(diào)用方調(diào)用該服務(wù)方法時(shí)候都是執(zhí)行本地降級(jí)方法,那么什么時(shí)候才會(huì)恢復(fù)到遠(yuǎn)程調(diào)用呢档插?Hystrix提供了一種測(cè)試策略亚再,即設(shè)置了一個(gè)
時(shí)間窗口
,從熔斷器狀態(tài)變?yōu)閛pen狀態(tài)開(kāi)始的一個(gè)時(shí)間窗口內(nèi)氛悬,調(diào)用該服務(wù)接口時(shí)候都委托服務(wù)降級(jí)方法進(jìn)行執(zhí)行耘柱。如果時(shí)間超過(guò)了時(shí)間窗口,則把熔斷狀態(tài)從open->half-open
,這時(shí)候服務(wù)調(diào)用方調(diào)用服務(wù)接口時(shí)候镜遣,就可以發(fā)起遠(yuǎn)程調(diào)用而不再使用本地降級(jí)接口悲关,如果發(fā)起遠(yuǎn)程調(diào)用還是失敗,則重新設(shè)置熔斷器狀態(tài)為open狀態(tài)娄柳,重新記錄時(shí)間窗口開(kāi)始時(shí)間。
打開(kāi)(open)
當(dāng)訪問(wèn)同一個(gè)接口超過(guò)設(shè)定閾值并且錯(cuò)誤次數(shù)超過(guò)設(shè)置錯(cuò)誤閾值時(shí)秫筏,就會(huì)打開(kāi)熔斷機(jī)制,狀態(tài)從
closed->open