Polly

Posted maanshancss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Polly相关的知识,希望对你有一定的参考价值。

概念定义

Polly是一个弹性的和瞬态故障处理及恢复的类库,允许我们以非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略,其主要功能如下:

功能1:重试(Retry)
功能2:断路器(Circuit-Breaker)
功能3:超时检测(Timeout)
功能4:缓存(Cache)   ??TODO
功能5:降级(Fallback)

适用场景

  • Polly在微服务中 主要用于跨服务调用时加上,Polly虽好不要贪杯啊;
  • Socket服务端升级,那种必须需要重启关闭一会儿,那么让客户端当连接不上的时候再重新连接;报某个连接错误的时候重新连接;
  • 好多地方都可以用,以前没有系统学,只用了一个重试

弹性策略: 是用于应对瞬态故障,故障发生的瞬间,服务是不可用的;

重试策略:每隔一段时间重试几次
断路器策略:熔断器测试 三种状态 OPEN CLOSE Half-OPEN

主动器策略:
超时2秒 我就当你故障;
舱壁隔离:高并发时显示并发数量,比如我这个东西同时只能跑三个,感觉像定义了线程池里面的最大线程数

缓存:不是频繁更新,减少对服务的访问

特殊性策略:包装策略 几种策略一起用,执行顺序是从右向左;
回退和降级(不会单独使用,后背手段)

回退的现实举例子: 比如你到商场买一个白色衬衫,结果没有白色的了直接给你一个黑色的;

它有四种状态:

CircuitState.Closed - 常态,可执行actions。
CircuitState.Open - 自动控制器已断开电路,不允许执行actions。
CircuitState.HalfOpen - 在自动断路时间到时,从断开的状态复原。可执行actions,后续的action/s或控制的完成,会让状态转至Open或Closed。
CircuitState.Isolated - 在电路开路的状态时手动hold住,不允许执行actions。

需要把那些模型跑一遍,自己现在列出来;

学习地址

Polly官网地址 当发生了某种故障或者异常后,会用哪种方案处理故障
其它学习地址





以上是关于Polly的主要内容,如果未能解决你的问题,请参考以下文章

Polly 在重试时更改查询字符串

Polly 的 Policy.TimeoutAsync 不适用于异步上下文中的 PolicyWrap

具有悲观超时策略的 C# Polly 在多个线程上运行缓慢?

Polly

Polly的多种弹性策略介绍和简单使用

Polly