当前位置:首页 >> 编程语言 >> 【Sentinel】ProcessorSlotChain处理器插槽链与Node,pcpop

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

cpugpu芯片开发光刻机 编程语言 1
文件名:【Sentinel】ProcessorSlotChain处理器插槽链与Node,pcpop 【Sentinel】ProcessorSlotChain处理器插槽链与Node

文章目录 1、Sentinel的基本概念2、ProcessorSlotChain3、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,是一种特殊的DefaultNodeClusterNode:代表资源,一个资源不管出现在多少链路中,只会有一个ClusterNode。记录的是当前资源被访问的所有统计数据之和。

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

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

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

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

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

协助本站SEO优化一下,谢谢!
关键词不能为空
同类推荐
«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接