sentinel原理源码分析系列(一)-总述

server/2024/10/19 11:20:43/

背景

     微服务是目前java主流开发架构,微服务架构技术栈有,服务注册中心,网关,熔断限流,服务同学,配置中心等组件,其中,熔断限流主要3个功能特性,限流熔断,快速失败,本文分析限流熔断组件sentinel,为后续使用,扩展,故障排除提供技术储备,特别是dashboard的分布式改造

本文sentinel版本是1.8.8

参考和术语

限流    控制调入流量,防止流量过大造成系统崩溃

熔断/快速失败  断路有延迟的服务,防止雪崩效应;断路探测,恢复服务路由

sentinel简介

  下图是sentinel的技术技术架构图

sentinel技术架构没有比官方的原理图更清楚了,总体看,sentinel是责任链架构模式,分两部分,前部分是请求处理的拓扑构建和数据统计,后部分是规则+数据得出结论,是否放行资源(api/服务方法)调用

逻辑架构

上图左边是sentinel的代码包结构,右边是分析场景

1. 代码包说明

dashboard  仪表板/管理台,transport注册,构建机器/app资料,规则管理

transport  远程服务/心跳,内置到资源内,dashboard的metric fetcher拉取资源metrics;注册到dashboard

core   核心包,sentinel核心实体,Entry,Node,插槽,Context

spring  提供aop,注解注入sentinel启动逻辑

metrics  sentinel以扩展方式提供metrics

adapter 覆盖常用远程调用组件,启动sentinel

rule-datasource  规则的配置中心,实现规则热变更

集群流控

2. 分析场景说明

动态规则/transport 分析两个重要的组件

启动/初始化 分析sentinel启动,组件初始化

调用资源/构建插槽链

插槽链 sentinel核心组件,重点分析

集群流控 分析sentinel分布式流控

NEXT 源码分析


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

相关文章

python简易应用:去掉重复的项

txt文件中, 有很多ip或域名, 相互之间用空格逗号空格间隔, 要求去掉里面重复的部分, 另存为一个新文件。 python代码如下: # 读取文件并去重 def remove_duplicates(input_file, output_file):with open(input_file, …

『Linux』 第三章 Linux环境基础开发工具使用

Linux 软件包管理器yum 什么是软件包 在Linux下安装软件,一个通常的办法是下载到程序的源代码,进行编译,得到可执行程序但是这样太麻烦了,于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成wi…

智能家居技术的前景和现状

一、智能家居行业概述 智能家居是指利用先进的科技手段,将家庭生活场景中的各种设备连接在一起,实现智能化控制和管理。随着物联网、人工智能等技术的不断进步,智能家居行业得到了迅速发展。 智能家居产品涵盖了家庭安防、智能照明、智能影…

Pikachu-Sql Inject-数字型注入(GET)

一、、破解 SQL 查询语句中的字段数 ?id1 order by 3 -- // -- 是注释, 加号 在MySQL中会转成空格 order by 1 ,by 数字几,就是按照第几列进行排序;如果没有这一行,则报错 如:以下语句,根据…

第一份开源代码:PointNet

这里我们选择PointNet的Pytorch实现而不是tensorflow的实现来分析。 总共分析这几个代码文件:model.py、dataset.py、train_classification.py和train_segmentation.py (一) model.py文件 from __future__ import print_function import torch import torch.nn a…

Leetcode 3301. Maximize the Total Height of Unique Towers

Leetcode 3301. Maximize the Total Height of Unique Towers 1. 解题思路2. 代码实现 题目链接:3301. Maximize the Total Height of Unique Towers 1. 解题思路 这一题思路上还是比较直接的,我们只需要排序之后从大到小依次分配最大可能的高度即可。…

Pinia只能存储简单数据类型

最近用vue做了一个管理后台,登录后使用Pinia存储一个User对象,包括name,token,avator。 在接口中统一拦截,header中添加token。获取Pinia里的对象对应的token值时发现是undefined,于是会出现登录后可以正常…

【CSS in Depth 2 精译_043】6.5 CSS 中的粘性定位技术 + 本章小结

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结)第二章 相对单位(已完结)第三章 文档流与盒模型(已完结)第四章 Flexbox 布局(已…