概念定义
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。
需要把那些模型跑一遍,自己现在列出来;