sentinel原理源码分析系列(五)-构建调用链路

上节分析构建插槽链,Sentinel的资源调用好比一个个连续的检查口,能否通过,使用检查规则和统计指标,本章开始分析插槽,首先分析构建调用链路的两个插槽

构建调用链路

构建调用链路为指标统计搭建好结构,调用关系,下图是参与构建调用链路的类互动图

参与构建调用链路两个插槽,NodeSelectorSlot和ClusterBuilderSlot,下面分析这两个插槽

构建调用链路(NodeSelectorSlot)

NodeSelectorSlot构建代表调用资源的DefaultNode,设置到Context,在Context内构建调用链路,这个链路是本地调用链,对于微服务这种进程间调用使用origin,下图是NodeSelectorSlot后Context快照,若本地调用,context内部多个entry将以parent,child相连,形成调用链,意味着调用链有内外两条线(如果本地调用资源受保护),后面限流分析调用关系限流将深入分析

构建集群node(ClusterBuilderSlot)

ClusterBuilderSlot获取或构建资源相关的ClusterNode,关联到代表调用资源的DefaultNode

上图是ClusterNode的声明,构建插槽链那章介绍了,每个资源一个实例,因此ClusterNode每类资源类型对应一个实例

另外,ClusterBuilderSlot也负责origin构建和关联,origin放在ClusterBuilderSlot,意味着origin与ClusterNode一样,聚合统计同一类资源的指标,后面限流分析调用关系限流将深入分析

上图是本地资源R1调用情况, context.name是适配器产生的,有些适配器没有context.name,使用sentinel提供的默认名称,Context的维度是线程,可以想象,使用适配器同一资源不同线程调用是同一个EntranceNode,同一个DefaultNode,同一个ClusterNode

下图是相同的ContextName,同一个资源,不同的调用线程,这也是绝大部分适配器的情况

|------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| | |

上图在ClusterBuilderSlot两个调用线程的断点图,Context不同,不同的线程,资源类型相同

下面看一下不同context name的情况,手动造出来的场景,如下图

下图是同一资源的不同线程调用的context快照

|------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| | |

Context 不同,EntranceNode也不同;代表本次调用资源的DefaultNode不同,资源类型相同,ClusterNode相同

至此,资源调用的Context的结构准备完毕,下面分析统计指标插槽

相关推荐
喻米粒06221 天前
RabbitMQ消息相关
java·jvm·spring boot·spring·spring cloud·sentinel·java-rabbitmq
小样vvv3 天前
【分布式】深入剖析 Sentinel 限流:原理、实现
分布式·c#·sentinel
无眠_3 天前
【Spring Boot 与 Spring Cloud 深度 Mape 之七】服务容错与流量防护:Sentinel 全方位实战
spring boot·spring cloud·sentinel
点点滴滴的记录4 天前
Sentinel 相关知识点
java·微服务·sentinel
上等猿5 天前
Sentinel
sentinel
小马爱打代码5 天前
Sentinel 限流利器(功能以及源码解析)
sentinel
半导体郗5 天前
springboot使用阿里限流框架-sentinel
spring boot·后端·sentinel
宋发元10 天前
Redis Sentinel 详解
redis·bootstrap·sentinel
hycccccch11 天前
熔断降级(Sentinel解决)
笔记·sentinel
GIS工具-gistools202111 天前
哨兵-6 (Sentinel-6)
大数据·sentinel·gis