当前位置:   article > 正文

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

activiti工作流子流程结束后再启动父流程

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
    需要限制的调用来源,对应【新增流控规则界面】的针
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/784600
推荐阅读
相关标签
  

闽ICP备14008679号