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

server/2024/10/23 12:12:29/

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


http://www.ppmy.cn/server/134167.html

相关文章

git基础操作步骤

第一种情况: 对方已经建立了个空的仓库,我们复制其url到要提交的项目文件下,输入cmd, 首先 git config --global user.email “youexample.com” git config --global user.name “Your Name” 然后 git init git add . git com…

构建后端为etcd的CoreDNS的容器集群(一)、生成自签名证书

笔者拟使用官方的etcd和CoreDNS容器镜像生成带自签名的分布式DNS容器集群。按计划需做生成自签名证书、部署etcd集群、配置CoreDNS以使用etcd作为后端共三步,本文为第一步。 一、生成自签名证书 1、准备CFSSL工具 官网下载: [rootlocalhost ~]# cd /o…

uni-app 实现好看易用的抽屉效果

在移动应用开发中,抽屉效果是一种常用的用户界面设计,它能有效地节省空间,同时提供导航和其他功能。本文将介绍如何在uni-app中实现一个好看且易用的抽屉效果,帮助你提升应用的用户体验。 一、什么是抽屉效果? 抽屉效…

Gin 协程mysql客户端

一、Gin框架 mysql配置 这里选择yaml文件配置 二、配置读取 viper 读取yaml文件中对应配置 三、mysql 的协程客户端 文件位置 package databaseimport ("database/sql""fmt""github.com/spf13/viper""log""net/http"&quo…

BIMBase构思渲染,一个强大的免费渲染插件

最近设计圈的小伙伴们都在热议AI出图的魔力 试想一下 假如你只剩一两个小时就要交图/方案阶段性汇报 还要用V-Ray/Blender辛辛苦苦渲染一整天吗😣 借助AI工具 设计师可以将更多的时间与精力放在创作构思上 而不是埋头于画图或等待渲染效果图 同时避免了因电脑…

基于PHP+MySQL+Vue的网上订餐系统

摘要 本文介绍了一个基于PHPMySQLVue技术的网上订餐系统。该系统旨在为用户提供便捷的在线订餐服务,同时提高餐厅的运营效率。系统后端采用PHP语言开发,利用MySQL数据库进行数据存储与管理,实现了用户注册登录、菜品浏览、购物车管理、订单提…

详解mac系统通过brew安装mongodb与使用

本文目录 一、通过brew安装MongoDB二、mongodb使用示例1、启动数据库2、创建/删除数据库3、创建/删除集合 三、MongoDB基本概念1)数据库 (database)2)集合 (collection)3) 文档(document)4)mong…

Github 2024-10-20 php开源项目日报Top10

根据Github Trendings的统计,今日(2024-10-20统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Blade项目1Laravel:表达力和优雅的 Web 应用程序框架 创建周期:4631 天开发语言:PHP, BladeStar数量:75969 个Fork数量:24281 次…