Sentinel 断路器
2021-07-09 11:08:48 16 举报
Sentinel 断路器
作者其他创作
大纲/内容
ResponseTimeCircuitBreaker
cb.tryPass(context)
counter.totalCount.add(1);
半开状态
currentState.get() == State.HALF_OPEN
打开状态
结束
retryTimeoutArrived() && fromOpenToHalfOpen(context)打开到半开,最多放行一个请求
是否大于最大响应时间
设置下次重试时间
是
updateNextRetryTimestamp();
异常数
currentState.get() == State.CLOSED
处理断路器状态
performChecking
执行判断
circuitBreaker.onRequestComplete(context);
是否大于慢调用比率
慢调用比率
调用次数加一
fromHalfOpenToOpen(1.0d);继续打开
transformToOpen(currentRatio);打开断路器
否
fromHalfOpenToClose();关闭断路器
重置计数
DegradeSlot.exit
关闭状态
异常次数
触发熔断,触发 DegradeException
DegradeSlot.entry
是否进入下次重试
slowCount += counter.slowCount.sum();totalCount += counter.totalCount.sum();请求统计
currentRatio > maxSlowRequestRatio
ExceptionCircuitBreaker
currentState.get() == State.OPEN
断路关闭
resetStat();
执行业务方法
rt > maxAllowedRt
熔断处理
handleStateChangeWhenThresholdExceeded(rt)
0 条评论
下一页