Sentinel FlowSlot 限流实现原理(文末附流程图与总结)(1)

本文详细介绍了 Sentinel 的 FlowSlot 类的结构与工作原理,包括 FlowRule 的配置项,如资源名、限流类型、策略等。FlowSlot 的 entry 方法流程分析,以及 FlowRuleChecker 的 checkFlow 和 canPassCheck 方法的角色。文章通过类图和代码注释阐述了 Sentinel 如何判断流控条件并执行限流操作。
摘要由CSDN通过智能技术生成

2、FlowSlot 详解


2.1 FlowSlot 类图

在这里插入图片描述

FlowSlot 的类图非常简单,内部持有一个成员变量,FlowRuleChecker,用来判断是否满足流控触发条件。

在继续探讨 Sentinel 限流之前,我们先来了解一下 FlowRule,即认识一下 Sentienl 流控规则主要包含哪些配置项,为后续的流程做一个消息的准备。

2.2 FlowRule 配置项

FlowRule 的类体系如图所示:

在这里插入图片描述

其属性的含义如下:

  • String resource

资源的名称。

  • String limitApp

需要限制的调用来源,对应【新增流控规则界面】的针对来源。

  • int grade

流量控制的阈值类型,目前支持 QPS 与 并发线程数,对应 【新增流控规则界面】的阔值类型。

  • int strategy

基于调用链的流量控制策略,对应【新增流控规则界面】的流控模式,其可选取值在本文开头部分有详细介绍。

  • String refResource

关联资源或入口资源,当流控模式为关联或链路时配置的关联资源或入口资源,对应【新增流控规则界面】的【入口资源】

  • int controlBehavior

流量控制后的采取的行为,其可选取值在本文开头部分有详细介绍,对应【新增流控规则界面】的流控效果。

  • int warmUpPeriodSec

预热时间,如果 controlBehavior 设置为预热(warm up)时,可以配置其预热时间,在【新增流控规则界面】中选择 warm up 类型后,会增加一行,供用户配置,默认值 10s。

  • int maxQueueingTimeMs

最大超时时间,如果 controlBehavior 设置为排队等待时,等待的最大超时时间,默认为500ms。

  • boolean clusterMode

是否是集群限流模式,对应【新增流控规则界面】的是否集群。

  • ClusterFlowConfig clusterConfig

集群扩容相关配置,集群限流将在后续文章中重点介绍。

在 sentinel-dashboard 的配置界面如下图所示:

在这里插入图片描述

2.3 FlowSlot#entry 流程详解

FlowSlot#entry

public void entry(Context context, ResourceWrapper resourceWrapper, DefaultNode node, int count,

boolean prioritized, Object… args) throws Throwable { // @1

checkFlow(resourceWrap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值