温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Sentinel 中slot实现的源代码分析

发布时间:2021-10-21 09:29:17 来源:亿速云 阅读:111 作者:柒染 栏目:大数据

今天就跟大家聊聊有关Sentinel 中slot实现的源代码分析,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

在CtSph.entryWithPriority方法中,会为每种资源分配一个ProcessorSlotChain实例。默认是通过DefaultSlotChainBuilder类来创建相应的slot chain,构造过程如下:

public ProcessorSlotChain build() { 
    ProcessorSlotChain chain = new DefaultProcessorSlotChain(); 
    chain.addLast(new NodeSelectorSlot()); 
    chain.addLast(new ClusterBuilderSlot()); 
    chain.addLast(new LogSlot()); 
    chain.addLast(new StatisticSlot()); 
    chain.addLast(new SystemSlot()); 
    chain.addLast(new AuthoritySlot()); 
    chain.addLast(new FlowSlot()); 
    chain.addLast(new DegradeSlot()); 
    return chain; 
}

默认包含8个slot,分别如下.

NodeSelectorSlot

为同一个资源的不同context创建不同的DefaultNode,存储在一个slot级别的map中,用来存放统计数据。

ClusterBuilderSlot

为同一个资源维护一个单独的ClusterNode实例,存放统计数据。同时根据origin不同,创建相应的StatisticNode。

StatisticSlot

在entry/exit方法中增加default & cluster & statistic node的计数器,实现数据统计。

SystemSlot

通过SystemRuleManager.checkSystem方法实现全局(java进程级别)的流量控制,包括:总qps;总线程数;总平均响应时间;系统平均负载(通过OperatingSystemMXBean获得);CPU使用率(通过OperatingSystemMXBean获得)。

AuthoritySlot

通过AuthorityRuleManager管理所有AuthorityRule,并在resource-origin粒度上实现黑白名单检测。

FlowSlow

流控实现的核心逻辑,依赖FlowRuleManager来管理所有FlowRule集合,在resource维度上测试rule是否生效。FlowRule检查分为local check和cluster check,后者依赖集中服务统一管理资源访问token。

在local check模式中,主要分为两个步骤:选择正确的计数节点(origin/cluster/default node);TrafficShapingController通过计数节点统计数据判断是否放行当前调用。

DegradeSlot

DegradeRuleManager.checkDegrade方法将在resource维度上检测DegradeRule是否生效。当前包含三种降级策略:平均响应时间;异常率;异常数。

看完上述内容,你们对Sentinel 中slot实现的源代码分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI