sentinel源码浅析

0 阅读1分钟

sentinel源码浅析

sentiel主要设计模式是责任链,核心是下面这张图,接下来结合图对源码进行分析

1780217133318.png

首先进入这里

1780216383638.png

这个是重要方法,原理这要哦由这个bean体现

1780216433571.png

其他是分支逻辑,不重要,重要的是划线部分的语句

1780216534227.png

if里面由return一般是分支逻辑,不重要,划线重要

1780216636841.png

一开始为空,肯定走划线逻辑

1780216673496.png

1780216722055.png

1780216787165.png

实现类有很多,第一次执行的是default,上面有提及

1780217030741.png

继续执行

结合第一张图片执行的是node这个实现类,参考第一张图片

1780217079217.png 直接追到责任链里最后两个,其他的没什么逻辑,不重要,接下来这个是流量的slot,作用是进行流控

1780217194671.png 接下来走这里 1780217300784.png 看名字就知道我们走的是单机 1780217550330.png

这个方法有很多实现类

1780217603537.png

对应三个算法,具体不用看,逻辑很复杂

1780217636705.png

接下来进行熔断校验

1780217841012.png

核心是这个方法

1780217925362.png

进到这里

1780217954895.png

逻辑如下

1780217994121.png

接下来回来,退出时又会执行一次校验链

1780217733611.png

核心是降级的slot,其他不用看

接下来走这个方法

1780218167433.png

这里是核心逻辑

1780218369336.png

有两个模式,一个是慢回复,一个是异常

1780218406467.png

以慢回复为例

1780218449618.png

核心是这个方法

1780218498018.png

逻辑如下

1780218522239.png

其他具体的算法没去研究,对于学习来讲不是很重要,没必要去研究