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的结构准备完毕,下面分析统计指标插槽

相关推荐
廋到被风吹走5 天前
稳定性保障:限流降级深度解析 —— Sentinel滑动窗口算法与令牌桶实现
运维·算法·sentinel
笨蛋不要掉眼泪9 天前
Sentinel 热点参数限流实战:精准控制秒杀接口的流量洪峰
java·前端·分布式·spring·sentinel
笨蛋不要掉眼泪10 天前
Sentinel 流控规则详解:三种模式与三种效果实战指南
java·jvm·数据库·后端·sentinel
Jinkxs11 天前
Sentinel - 在 Dubbo 微服务中使用:Alibaba 生态无缝集成
微服务·sentinel·dubbo
笨蛋不要掉眼泪11 天前
Spring Cloud Alibaba Sentinel 从入门到实战:微服务稳定性的守护者
分布式·微服务·云原生·架构·sentinel
tod11311 天前
Redis Sentinel 高可用架构:从原理到 Docker 部署全解析
数据库·redis·docker·架构·sentinel
递归尽头是星辰13 天前
Sentinel + Spring Cloud Gateway 联动限流实战
系统架构·sentinel·限流·微服务治理·限流架构设计
万象.13 天前
redis哨兵sentinel的部署及作用
redis·sentinel
七夜zippoe14 天前
分布式系统弹性设计实战:Hystrix与Sentinel熔断降级深度解析
java·hystrix·sentinel·aws·分布式系统
程序员敲代码吗15 天前
微服务熔断降级配置详解与实践:使用Sentinel和Nacos
java·微服务·sentinel