【Sentinel】ProcessorSlotChain处理器插槽链与Node

文章目录

1、Sentinel的基本概念

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

  • 统计数据:统计某个资源的访问数据(QPS、RT等信息)
  • 规则判断:判断限流规则、隔离规则、降级规则、熔断规则是否满足

这里的资源就是希望被Sentinel保护的业务,例如项目中定义的controller方法就是默认被Sentinel保护的资源。

2、ProcessorSlotChain

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

插槽链中的插槽分两大类,一类负责统计数据的构建(statistic):

  • NodeSelectorSlot:负责构建簇点链路中的节点(DefaultNode),将这些节点形成链路树
  • ClusterBuilderSlot:负责构建某个资源的ClusterNode,ClusterNode可以保存资源的运行信息(响应时间、QPS、block 数目、线程数、异常数等)以及来源信息(origin名称)
  • StatisticSlot:负责统计实时调用数据,包括运行信息、来源信息等

另一类插槽服务判断规则是否达到:

  • AuthoritySlot:负责授权规则(来源控制)
  • SystemSlot:负责系统保护规则
  • ParamFlowSlot:负责热点参数限流规则
  • FlowSlot:负责限流规则
  • DegradeSlot:负责降级规则

3、Node

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

所有的节点都可以记录对资源的访问统计数据,所以都是StatisticNode的子类。按照作用分为两类Node:

  • DefaultNode:代表链路树中的每一个资源,一个资源出现在不同链路中时,会创建不同的DefaultNode节点。而树的入口节点叫EntranceNode,是一种特殊的DefaultNode
  • ClusterNode:代表资源,一个资源不管出现在多少链路中,只会有一个ClusterNode。记录的是当前资源被访问的所有统计数据之和。

根据这两种node的特点,可以知道它们用于不同的限流模式:

DefaultNode记录的是这个资源在当前链路中的访问数据,用来实现基于链路模式的限流规则。ClusterNode记录的是这个资源在所有链路中的访问数据,实现默认模式、关联模式的限流规则。

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

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

则创建的链路如下:

此时,对于资源/goods,可使用DeafultNode对两个链路分别做限流,也可以直接用ClusterNode来对这个资源做统一的统计和整体的限流。当然,上面的EntranceNode,也是个资源,也有自身的Cluster来统计次数。

相关推荐
mldong2 小时前
引擎从不发一条消息:jeeflow 的两类扩展点与消息模块的分工
java·架构
君顾13 小时前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
4A广告文案3 小时前
名创优品在成都开了家“乐园”,顺便造了个新IP
网络·网络协议·tcp/ip
zhanghe6873 小时前
es的密码带有特殊字符,导出
java
pnoker4 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy4 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
Fnetlink14 小时前
Fnet 云网安 260904
网络·人工智能·安全·web安全·网络安全
天远数科4 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
骇客野人5 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
qiuhaipeng15 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库