activiti 调用子流程 结束后触发主流程_Sentinel FlowSlot 限流实现原理(文末附流程图与总结)...

Sentinel 触发限流的实现类为 FlowSlot。我们再来简单思考一下,要实现触发限流,至少需要完成如下几件事情:

  • 收集实时调用信息。
  • 设置触发限流规则
  • 根据限流规则与调用信息来决定是否对请求进行限流等。

如何收集实时调用信息已详细介绍:Sentinel 实时数据采集实现原理(图文并茂)

该篇注重理论与实践相结合,在进行源码解读之前先从流控规则配置界面入手,代入感比较强,文末再提供一张流程图。

1、初始 FlowSlot

我们先从 FlotSlot 类的注释来简单认识一下流量控制相关的内容。

  • 根据已(NodeSelectorSlot、ClusterNodeBuilderSlot 和 StatisticSlot)收集的运行时统计信息,FlowSlot将使用预先设置的规则来决定是否应阻止传入请求。
  • SphU.entry(resourceName)调用时,如果有任意一条规则被触发则会抛出 FlowException 异常,应用程序可捕捉该异常对业务进行定制化处理。
  • 每一条流控规则(FlowRule)都包含三个要素:流控类别、基于调用链的流控制策略、限流后的处理行为(参考FlowRule相关的注释)。
    1)grade
    流量控制的阈值类型,可选值:QPS(基于QPS限流策略)、并发线程数。
    2)strategy 基于调用链的流控制策略
    可选值:STRATEGY_DIRECT(根据调用方限流策略)、STRATEGY_RELATE(关联流量限流策略)、STRATEGY_CHAIN(根据调用链入口限流策略)
    3)controlBehavior
    流量控制后的采取的行为,可选择值如下:
    1、CONTROL_BEHAVIOR_DEFAULT(直接拒绝)
    2、CONTROL_BEHAVIOR_WARM_UP(预热)
    3、CONTROL_BEHAVIOR_RATE_LIMITER(匀速排队)
    4、CONTROL_BEHAVIOR_WARM_UP_RATE_LIMITER(预热与匀速排队)

2、FlowSlot 详解

2.1 FlowSlot 类图

a9cdc84739d1c02ba4295765c53a548c.png

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

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

2.2 FlowRule 配置项

FlowRule 的类体系如图所示:

65751f7dc7fdd4188012957edbdc197d.png

其属性的含义如下:

  • String resource
    资源的名称。
  • String limitApp
    需要限制的调用来源,对应【新增流控规则界面】的针
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值