sentinel源码分析

编程

sentinel 结构 release-1.7 未完后续更新

sentinel-core 核心模块,限流、降级、系统保护等都在这里实现

sentinel-dashboard 控制台模块,可以对连接上的sentinel客户端实现可视化的管理

sentinel-transport 传输模块,提供了基本的监控服务端和客户端的API接口,以及一些基于不同库的实现

sentinel-extension 扩展模块,主要对DataSource进行了部分扩展实现

sentinel-adapter 适配器模块,主要实现了对一些常见框架的适配

sentinel-demo 样例模块,可参考怎么使用sentinel进行限流、降级等

sentinel-benchmark 基准测试模块,对核心代码的精确性提供基准测试

1、限流 qps

(1) initFlowQpsRule 初始化加载qps 限流规则

FlowRuleManager.loadRules(rules);

————> 初始化 FlowPropertyListener ——>加入到 DynamicSentinelProperty add --> synchronizedSet

————> loadRules ————> DynamicSentinelProperty ————> updateValue && FlowPropertyListener configUpdate ————>

buildFlowRuleMap validRule && generateRater(获取控制器) ———> 加载到ConCurrentHashMap

(2)Env 所有的 InitFunc初始化 ———> sph=CtSph 实现Sph所有接口 ————>

controlBehavior 流量控制规则 :

0、直接拒绝

1、warm up(预热)

2、rate limiter(均速排队)

这种方式主要用于处理间隔性突发的流量,例如消息队列。想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。 

3、 warm up + rate limiter

节流控制器 TrafficShapingController接口

1、DefaultController 默认的节流控制器(立即拒绝策略)

2、RateLimiterController 限速控制器

3、WarmUpController 预热控制器

4、WarmUpRateLimiterController 算法是将匀速排队和预热相结合

以上是 sentinel源码分析 的全部内容, 来源链接: utcz.com/z/517329.html

回到顶部