【服务保护】服务保护的解决方案
参考wiki:https://www.jianshu.com/p/c1c0d8305fb4
一、服务保护
1、流量控制
(1)单机限流
(2)集群限流
(3)黑白名单限流
(4)用户百分比限流
2、熔断降级
3、故障注入
二、单机限流器的算法实现
1、计时器:限流器底层会有一个计时器,可以随时获取该限流器已运行的时长(微妙级别)。
2、一个请求流量时间片:一个请求流量在指定QPS下占用的时间长度。比如:QPS=900 则:时间片(微妙)=900/(1000*1000)
3、最大流控数:1秒内允许的最大流量。
4、下一次产生流控令牌的时间:这个时间是根据当前限流器流过的流量大小决定的。
-
初始值=0
-
第一个值=第一次流量访问限流器时限流器运行的时间长度
-
接下来的值
如果再次访问限流器时限流器运行的时间长度(a)>下一次产生流控令牌时限流器运行的时间长度(b),则更新为(a)。
下一次产生流控令牌限流器运行的时间长度 +(超售的令牌数*时间片)
5、新产生的流控令牌=(当前限流器运行的时间长度-下一次产生流控令牌的时间)/一个请求流量的时间片
三、单机熔断器的算法实现