Sentinel中slot实现的源代码分析

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

南沙网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联

在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实现的源代码分析有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注创新互联行业资讯频道,感谢大家的支持。


本文名称:Sentinel中slot实现的源代码分析
当前地址:http://pwwzsj.com/article/psjpii.html