- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
.NET中弹性和瞬时处理库Polly的使用详解
目录写在前面代码实现调用示例
写在前面
Polly是一个.NET弹性和瞬态故障处理库,允许开发人员以Fluent和线程安全的方式来实现重试、断路、超时、隔离和回退策略。
Polly的七种策略介绍
重试(Retry):当出现故障时自动进行重试
断路(Circuit-breaker):当系统遇到严重问题时,快速回馈失败比让用户/调用者等待要好,限制系统出错的体量,有助于系统恢复。
超时(Timeout):当系统超过一定时间的等待,我们就几乎可以判断不可能会有成功的结果,直接去干别的事情。
隔离(BulkheadIsolation):当系统的一处出现故障时,可能促发多个失败的调用,很容易耗尽主机的资源(如CPU)。下游系统出现故障可能导致上游的故障的调用,甚至可能蔓延到导致系统崩溃。所以要将可控的操作限制在一个固定大小的资源池中,以隔离有潜在可能相互影响的操作。
回退(Fallback):有些错误无法避免,就要有备用的方案。这个就像浏览器不支持一些新的CSS特性就要额外引用一个polyfill一样。一般情况,当无法避免的错误发生时,我们要有一个合理的返回来代替失败。
缓存(Cache):一般我们会把频繁使用且不会怎么变化的资源缓存起来,以提高系统的响应速度。如果不对缓存资源的调用进行封装,那么我们调用的时候就要先判断缓存中有没有这个资源,有的话就从缓存返回,否则就从资源存储的地方(比如数据库)获取后缓存起来,再返回,而且有时还要考虑缓存过期和如何更新缓存的问题。Polly提供了缓存策略的支持,使得问题变得简单。
策略包(PolicyWrap):一种操作会有多种不同的故障,而不同的故障处理需要不同的策略。这些不同的策略必须包在一起,作为一个策略包,才能应用在同一种操作上。这就是文章开头说的Polly的弹性,即各种不同的策略能够灵活地组合起来。
通过NuGet安装Polly类库:
官方项目地址:/App-vNext/Polly
代码实现
///summary
///FallBack=当出现故障,则进入降级动作
////summary
publicstaticvoidCase1()
ISyncPolicypolicy=Policy.HandleArgumentException()
.Fallback(()=
Console.WriteLine(Erroroccured);
policy.Execute(()=
Console.WriteLine(JobStart);
thrownewArgumentException(HelloPolly!);
Console.WriteLine(JobEnd);
///summary
///Retry=重试
////summary
publicstaticvoidCase2()
ISyncPolicypolicy=Policy.HandleException().Retry(3);
policy.Execute(()=
Console.WriteLine(JobStart);
if(DateTime.Now.Second%10!=0)
thrownewException(Specialerroroccured);
Console.WriteLine(JobEnd);
catch(Exceptionex)
Console.WriteLine(Theresoneunhandledexception:+ex.Message);
///summary
///CircuitBreaker=短路保护
////summary
publicstaticvoidCase3()
//Stopfor10safterretry6times
ISyncPolicypolicy=Policy.HandleException()
.CircuitBreaker(6,TimeSpan.FromSeconds(10));
while(true)
policy.Execute(()=
Console.WriteLine(JobStart);
thrownewExc
您可能关注的文档
最近下载
- 2025北京海淀街道社区卫生服务中心招聘13人笔试模拟试题及答案解析.docx VIP
- 国开电大 古代诗歌散文专题 形考任务1-4答案.doc VIP
- 2025年高考语文(全国一卷) 真题详细解读及评析.docx
- 规范进行术前皮肤准备2025 .pdf VIP
- 陕西省 大荔县志.pdf
- 2022年福州大学公共课《C语言》科目期末试卷A(有答案).pdf VIP
- 运动的描述.2 运动的描述 (2).ppt VIP
- 生物药剂学与药物动力学知到智慧树期末考试答案题库2025年中国药科大学.docx VIP
- 光化学合成在药物合成中的应用综述.ppt VIP
- 金风1.5MW型风机叶片维修作业指导书.docx VIP
文档评论(0)