Sentinel实现原理(一):单机QPS流控原理

sentinel是一款常用的限流组件,既然是限流,我们有必要了解一些它是如何限流的。

一、具体流程

1、初始化context

context代表调用链路上下文,每一次调用都会有一个context。请求进来后,首先会初始化context。初始化context完成后,会新增一个EntranceNode,作为Root的子节点。

2、CtSph创建CtEntry

每次调用都会创建一个Entry。CtEntry为普通的Entry,创建完CtEntry后,设置到context的CurEntry中。

3、NodeSelectorSlot创建DefaultNode

创建的DefaultNode作为EntranceNode的子节点,并且也设置为context的CurNode。

4、ClusterBuilderSlot创建ClusterNode

创建的ClusterNode设置到DefaultNode中

5、FlowSlot校验是否可以通过

        a、首先取出该资源所有配置的规则,假设我们只配置了1条流控规则

        b、获取DefaultNode的ClusterNode

        c、DefaultController根据ClusterNode的QPS判断是否可以通过,计算QPS采用滑动窗口算法

        

6、StatisticSlot累计QPS

增加DefaultNode的调用数和线程数,同时也增加ClusterNode的调用数和线程数

二、总结

每次调用都会创建context和entry,NodeSelectorSlot和ClusterBuilderSlot都会创建node。经过FlowSlot时,会根据QPS或者线程数判断是否限流。然后回到StatisticSlot时,StatisticSlot会增加Node的调用数和线程数,作为之后FlowSlot限流的依据。


参考文章:

Sentinel限流实现原理 - 吴振照 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值