日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用.NetCore 控制台演示 熔断 降级(polly)

發(fā)布時間:2023/12/4 asp.net 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用.NetCore 控制台演示 熔断 降级(polly) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、熔斷降級的概念:?

    熔斷:我這里有一根長度一米的鋼鐵,鋼鐵的熔點1000度(假設(shè)),現(xiàn)在我想用力把這根鋼鐵折彎,但是人的力有限達不到折彎的點,然后我使用火給鋼鐵加熱,每隔一段時間我就會嘗試一下是否能折彎,在這個過程中我發(fā)現(xiàn),隨著不斷的煅燒,折彎鋼鐵是花費的力氣越小,在這個過程出現(xiàn)了意外因為我的疏忽,溫度超過了鋼鐵的熔點了,導致一根變成的兩根,和我最初的目的相違背了,早知道當初我裝個報警的裝置了還可以提想我。?

  如果在這個例子中我們把一根鋼鐵換成我們程序中的接口(接口能同時承受1000的訪問),然后把火替換成我們的接口調(diào)用者,當接口的并發(fā)超過1000這個點的時候接口將會掛掉,作為調(diào)用者并不能控制這個點,當并發(fā)量上來的時候?qū)е陆涌诒牧?#xff0c;為了防止我們的接口發(fā)生崩潰的情況,我們做一個報警的設(shè)置,當發(fā)生這個情況的時候占時切斷服務(wù),防止服務(wù)崩潰。

   降級:接著上一個例子:既然這個鋼鐵因為一個意外導致變成兩個,不能進行使用了,我變找了一個繩子替代一下。?

??? 當我們的服務(wù)接口發(fā)生錯誤的時候,我們可以找到一個替代方法進行使用。這個方法可能是啟用另一臺服務(wù)器的接口,也可能是只返回“”服務(wù)器繁忙請重試的提示“”。總之不會把一個系統(tǒng)級別的問題暴露給用戶,讓使用者的程序也出現(xiàn)問題。

2、Polly的7中策略

 處理熔斷降級的框架本人所知?NetFlix的Hystrix框架和Polly框架我們將使用Polly進行熔斷降級處理。

    Polly概念Polly是一個被.net基金會支持認可的框架,Polly是一個.NET彈性和瞬態(tài)故障處理庫,允許開發(fā)人員以流暢和線程安全的方式表達策略,如重試、斷路器、超時、艙壁隔離和回退

    Polly的7種策略:官方文檔是這么說的:

    1、重試(Retry):當程序發(fā)生短暫的故障、并且故障在延遲后,可以自動糾正的,前期是暫時的我們可以配置自動重試。

    2、斷路器(Circuit-Breaker):當一個系統(tǒng)陷入嚴重的問題時,讓系統(tǒng)快速的失敗,比讓用戶一直等待著要好的多,保護一個系統(tǒng)不受過載的影響,可以幫助它快速的恢復。

    3、超時(Timeout):在等待一定的時間后,沒有返回相應(yīng)的結(jié)果,保證程序不會一直等待下去,使調(diào)用者不必一直的等待下去。

   ??4、隔離(Bulkhead Isolation):當進程出現(xiàn)故障的時,一臺主機中的多個失敗的進程,對資源(例如線程/CPU)的一直占用,當下游的系統(tǒng)發(fā)生故障的時候,也可能導致上游對資源的調(diào)用失敗、這兩種風險的出現(xiàn)都將導致更大范圍的影響、隔離策略是為了防止“一個點的失敗導致整盤的失敗”把受到管理的操作固定在某個資源中,避免影響到其他的資源。

    5、緩存(Cache):針對相同的請求,在第一次訪問的時候?qū)㈨憫?yīng)的數(shù)據(jù)進行緩存,再次訪問的時候直接在緩存中提供響應(yīng)的數(shù)據(jù)。

    6、回退(FallBack):當程序發(fā)生失敗的情況的時候,我們將做些什么,定義一個在程序發(fā)生失敗的時候要執(zhí)行的動作。

    7、策略組合(PolicyWrap):Polly針對不同的故障有不同的策略,我們可以靈活的組合策略,上述的六種策略可以靈活組合使用。

3、Polly的基本用法

    因為Polly對NetCore的友好支持,下面我們將使用Core的控制臺對Polly的幾種策略進行簡單的演示

    首先創(chuàng)建控制臺程序

    

    Nuget的控制臺中使用 Install-Package Polly 命令進行安裝

?    注意:在創(chuàng)建項目的時候命名盡量不要使用Polly命名

    Polly 每個版本的介紹?https://www.nuget.org/packages/Polly/

    執(zhí)行命令進行安裝如下圖所示

    

    首先我們要學會并且指定希望Policy 處理的異常

  下面我們指定一個希望Policy處理的異常,并且完成調(diào)用

 因為throw?new?Exception();?HResult 的值為

    ? 如圖所示

    

     執(zhí)行結(jié)果為:

?    ??

?

?    當我們使用throw new ArgumentException();??它的HResult 的值為

    如圖所示:

?    

    

    執(zhí)行結(jié)果為

    因為我們沒有做任何的處理所以程序直接報錯

    

    上面演示了Policy的基本用法

4、Polly7種策略的使用

    1、重試策略(Retry):

 執(zhí)行結(jié)果:

??    

    2、斷路器(Circuit-Breaker)

 執(zhí)行結(jié)果:

    

    3、?超時策略(Timeout

 執(zhí)行結(jié)果:

?    ?

    4、隔離策略(Bulkhead Isolation)

執(zhí)行結(jié)果:

    

    5、緩存策略(Cache):

6、?回退(FallBack)

 執(zhí)行結(jié)果

    

    7、策略組合(PolicyWrap)

     PolicyWrap的上面六種策略可以任意的組合起來使用:我們將超時策略(Timeout)加上回退(FallBack)策略組合使用

行結(jié)果:

        

      OK

      這些只是簡單的演示,官方文檔更加詳細

下一篇我們是使用?Aop 基于 AspNetCore 的過濾器 實現(xiàn)一下Policy 的使用。

原文地址:https://www.cnblogs.com/szlblog/p/9300845.html

.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的使用.NetCore 控制台演示 熔断 降级(polly)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。