Sentinel 执行系统限流的核心入口类为 SystemSlot,该类实现简单,如下图所示:
从这里可以看出实现的关键在于SystemRuleManager,这里是直接调用 checkSystem 进行是否触发其限流,那我们接下来重点跟踪一下该方法的实现。
2.1 自适应限流检测流程
系统自适应限流检测具体由 SystemRuleManager 的 checkSystem 方法实现,接下来详细剖析其实现细节。
Step1:验证相关资源,主要包含三层验证:
-
如果资源名称为空,则直接跳过,这个是容错机制。
-
如果系统自适应开关为打开,直接放行,该开关初始化时为 false,在加载到一条系统自适应配置规则时该状态会设置为 true,具体在 loadSystemConf 中。
-
如果资源的类型不是入口流量(EntryType.IN),则直接放行。