首页 > 编程语言 >Sentinel源码分析

Sentinel源码分析

时间:2023-07-01 14:57:27浏览次数:28  
标签:分析 ClusterNode 规则 源码 链路 Sentinel 限流 资源

Sentinel的基本概念

Sentinel实现限流、隔离、降级、熔断等功能,本质要做的就是两件事情:

  • 统计数据:统计某个资源的访问数据(QPS、RT等信息)
  • 规则判断:判断限流规则、隔离规则、降级规则、熔断规则是否满足
    这里的资源就是希望被Sentinel保护的业务,例如项目中定义的controller方法就是默认被Sentinel保护的资源。

ProcessorSlotChain

实现上述功能的核心骨架是一个叫做ProcessorSlotChain的类。这个类基于责任链模式来设计,将不同的功能(限流、降级、系统保护)封装为一个个的Slot,请求进入后逐个执行即可。

其工作流如图:

责任链中的Slot也分为两大类:

  • 统计数据构建部分(statistic)
    • NodeSelectorSlot:负责构建簇点链路中的节点(DefaultNode),将这些节点形成链路树
    • ClusterBuilderSlot:负责构建某个资源的ClusterNode,ClusterNode可以保存资源的运行信息(响应时间、QPS、block 数目、线程数、异常数等)以及来源信息(origin名称)
    • StatisticSlot:负责统计实时调用数据,包括运行信息、来源信息等
  • 规则判断部分(rule checking)
    • AuthoritySlot:负责授权规则(来源控制)
    • SystemSlot:负责系统保护规则
    • ParamFlowSlot:负责热点参数限流规则
    • FlowSlot:负责限流规则
    • DegradeSlot:负责降级规则

Node

Sentinel中的簇点链路是由一个个的Node组成的,Node是一个接口,包括下面的实现:

所有的节点都可以记录对资源的访问统计数据,所以都是StatisticNode的子类。

按照作用分为两类Node:

  • DefaultNode:代表链路树中的每一个资源,一个资源出现在不同链路中时,会创建不同的DefaultNode节点。而树的入口节点叫EntranceNode,是一种特殊的DefaultNode
  • ClusterNode:代表资源,一个资源不管出现在多少链路中,只会有一个ClusterNode。记录的是当前资源被访问的所有统计数据之和。
    DefaultNode记录的是资源在当前链路中的访问数据,用来实现基于链路模式的限流规则。ClusterNode记录的是资源在所有链路中的访问数据,实现默认模式、关联模式的限流规则。

例如:我们在一个SpringMVC项目中,有两个业务:

  • 业务1:controller中的资源/order/query访问了service中的资源/goods
  • 业务2:controller中的资源/order/save访问了service中的资源/goods

创建的链路图如下:

标签:分析,ClusterNode,规则,源码,链路,Sentinel,限流,资源
From: https://www.cnblogs.com/wekenyblog/p/17519276.html

相关文章

  • 从mysql主从复制原理分析故障及延时场景!
    在很多的情况下生产环境所发生的问题,实际上都可以通过其工作原理来解决例如:mysql主从复制原理:  1.当用户在主库中写入数据时,将sql语句的执行写入binlog二进制文件中2.从库会生成一个i/o线程用来监听binlog日志文件的变化,若binlog文件发生变化,那么i/o线程将会提取binlog日志......
  • 电池充放电测试仪行业市场调查及策略分析报告2023-2029
    2023-2029全球电池充放电测试仪行业调研及趋势分析报告2022年全球电池充放电测试仪市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国电池充放电测试仪市场占据全球约%的市场份......
  • 光学玻璃球行业市场调查及策略分析报告2023-2029
    2023-2029全球光学玻璃球行业调研及趋势分析报告2022年全球光学玻璃球市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国光学玻璃球市场占据全球约%的市场份额,为全球最主要的消......
  • 皮秒脉冲驱动器行业市场调查及策略分析报告2023-2029
    2023-2029全球皮秒脉冲驱动器行业调研及趋势分析报告2022年全球皮秒脉冲驱动器市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国皮秒脉冲驱动器市场占据全球约%的市场份额,为全......
  • 圆珠笔球行业市场调查及策略分析报告2023-2029
    2023-2029全球圆珠笔球行业调研及趋势分析报告2022年全球圆珠笔球市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国圆珠笔球市场占据全球约%的市场份额,为全球最主要的消费市场......
  • 自动圆柱电池分选机行业市场调查及策略分析报告2023-2029
    2023-2029全球自动圆柱电池分选机行业调研及趋势分析报告2022年全球自动圆柱电池分选机市场规模约亿元,2018-2022年年复合增长率CAGR约为%,预计未来将持续保持平稳增长的态势,到2029年市场规模将接近亿元,未来六年CAGR为%。从核心市场看,中国自动圆柱电池分选机市场占据全球约%的......
  • 基于物联网、区块链、RSA加密验证技术实现的防伪溯源系统源码
    一物一码防伪溯源系统能准确获取产品生产经营各个环节的真实信息,利用物联网、云计算、区块链、人工智能、5G等先进技术,结合特有的码码关联和RSA加密验证技术,建立区块链的“身份证”,针对产品种植到销售各环节的质量安全数据进行及时采集上传,数据具有不可逆,不可篡改等特点,实现产品溯......
  • 碰撞测试(附源码)
    这里没有办法展示动态效果,具体动态效果请复制到浏览器并在浏览器控制台上查看具体效果:CSS部分:<style>*{margin:0;padding:0;}div{position:absolute;top:0;left:0;......
  • 猜数字游戏(附源码)
    CSS部分:<style>html{font-family:sans-serif;}body{width:50%;max-width:800px;min-width:480px;margin:0auto;}.lastResult{......
  • 3d烟花效果的实现(附源码)
    这里没有办法展示动态效果,具体动态效果请复制代码去浏览器中查看:CSS部分:<style>html,body{margin:0px;width:100%;height:100%;overflow:hidden;background:#000;}#canvas{width:100%;height:100%;}</style>HTML部分:<body><can......