.NET Core 微服务之Polly熔断策略
緊接著上一篇說(shuō),咱們繼續(xù)介紹Polly這個(gè)類庫(kù)
熔斷策略(Circuit-breaker)
如果調(diào)用某個(gè)目標(biāo)服務(wù)出現(xiàn)過(guò)多超時(shí)、異常等情況,可以采取一定時(shí)間內(nèi)熔斷該服務(wù)的調(diào)用,熔斷期間的請(qǐng)求將不再繼續(xù)調(diào)用目標(biāo)服務(wù),而是直接返回,節(jié)約資源,提高服務(wù)的穩(wěn)定性,熔斷周期結(jié)束后如果目標(biāo)服務(wù)情況好轉(zhuǎn)則恢復(fù)調(diào)用。
注意:為了服務(wù)的穩(wěn)定性,在執(zhí)行需要多次 Retry重試策略的情況下( 重試策略,感興趣的小伙伴可以查看我上一篇,或者自行搜索),最好組合熔斷策略,預(yù)防可能存在的風(fēng)險(xiǎn)。
熔斷狀態(tài)
打開(kāi)(Open)
熔斷器打開(kāi)狀態(tài),此時(shí)對(duì)目標(biāo)服務(wù)的調(diào)用都直接返回錯(cuò)誤,熔斷周期內(nèi)不會(huì)走網(wǎng)絡(luò)請(qǐng)求,當(dāng)熔斷周期結(jié)束時(shí)進(jìn)入半開(kāi)狀態(tài);
關(guān)閉(Closed)
關(guān)閉狀態(tài)下正常發(fā)生網(wǎng)絡(luò)請(qǐng)求,但會(huì)記錄符合熔斷條件的連續(xù)執(zhí)行次數(shù),如果錯(cuò)誤數(shù)量達(dá)到設(shè)定的閾值(如果在沒(méi)有達(dá)到閾值之前恢復(fù)正常,之前的累積次數(shù)將會(huì)歸零),熔斷狀態(tài)進(jìn)入到打開(kāi)狀態(tài);
半開(kāi)(Half-Open)
半開(kāi)狀態(tài)下允許定量的服務(wù)請(qǐng)求,如果調(diào)用都成功(或一定比例)則認(rèn)為恢復(fù)了,關(guān)閉熔斷器,否則認(rèn)為還沒(méi)好,又回到熔斷器打開(kāi)狀態(tài);
熔斷使用說(shuō)明
熔斷代碼測(cè)試
熔斷高級(jí)配置
根據(jù)時(shí)間段內(nèi)總請(qǐng)求數(shù)中的異常比例觸發(fā)熔斷:
?可以看到使用起來(lái)還是 挺方便簡(jiǎn)單的,可以結(jié)合項(xiàng)目框架組合出不同玩法,哈哈哈,感興趣的同學(xué)可以自行古哥或者度娘哈。回見(jiàn)
總結(jié)
以上是生活随笔為你收集整理的.NET Core 微服务之Polly熔断策略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 设计模式之总体介绍
- 下一篇: .NET中扩展方法和Enumerable