Sentinel 知识总结

Sentinel 知识总结

Sentinel 是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它提供了多种流量控制策略,包括QPS限流、并发数限流、线程池限流等,并且支持集群限流。此外,Sentinel还提供了熔断降级、系统负载均衡等功能。

一、Sentinel 简介

1.1 什么是 Sentinel?

Sentinel(哨兵)是阿里巴巴开源的一个轻量级流量控制框架,主要用于保护系统稳定性和流畅性。它可以帮助您实现以下目标:

限制系统的QPS,防止系统过载;
提供实时的监控和告警功能;
提供熔断降级功能,防止系统雪崩;
提供系统负载均衡功能。

1.2 Sentinel 的特性

轻量级:Sentinel 的核心库只有200KB左右,对性能的影响非常小;
实时监控:Sentinel 可以实时监控系统的QPS、RT等信息,并提供实时告警功能;
多维度的流量控制:Sentinel 支持基于调用关系、资源、参数等多个维度的流量控制;
集群流量控制:Sentinel 支持集群限流,可以实现多台机器的统一流量控制;
熔断降级:Sentinel 提供了熔断降级功能,可以在服务不可用时自动降级,防止系统雪崩;
系统负载均衡:Sentinel 可以对系统的入口流量进行调度,实现系统的负载均衡。

二、Sentinel 架构解析

2.1 架构总览

Sentinel 的架构设计简洁清晰,主要分为核心库、Dashboard、规则中心等几个部分。

2.2 核心库

核心库是 Sentinel 的主要实现部分,包括流量控制、熔断降级等功能。核心库主要包括以下几个部分:

流量统计:通过滑动窗口算法来统计QPS、RT等指标;
流量控制:根据预先设定的规则和实时统计的指标来决定是否放行请求;
熔断降级:在服务不可用时自动降级,防止系统雪崩;
系统负载均衡:对系统的入口流量进行调度,实现系统的负载均衡。

2.3 Dashboard

Dashboard 是 Sentinel 的控制台,用于管理和监控 Sentinel 的各项功能。Dashboard 主要包括以下几个部分:

实时监控:实时展示系统的QPS、RT等指标;
规则管理:提供规则的增删改查功能,支持在线修改规则并实时生效;
集群管理:提供集群的管理功能,支持多台机器的统一管理。

2.4 规则中心

规则中心是 Sentinel 的规则存储组件,用于存储流量控制、熔断降级等规则。规则中心主要包括以下几个部分:

规则存储:提供规则的存储功能,支持多种存储方式;
规则推送:将规则推送到各个客户端,实现规则的统一管理。

三、Sentinel 快速入门

3.1 环境准备

首先需要安装 Java 环境,然后从 Sentinel 官网下载 Sentinel 的源码或者二进制包。

3.2 启动 Sentinel

解压下载好的 Sentinel 压缩包,进入 sentinel-dashboard/sentinel-dashboard-web 目录,执行 mvn clean package -Dmaven.test.skip=true 命令打包,然后在 target 目录下找到 sentinel-dashboard.jar,执行 java -jar sentinel-dashboard.jar 命令启动 Sentinel。

3.3 使用 Sentinel

在项目中引入 Sentinel 的依赖,然后通过 SphU.entry(resourceName) 方法来定义一个资源,并通过 SphU.entry(resourceName).setHandler(handler) 方法来设置处理函数。在处理函数中,可以通过 context.getCurEntry() 方法来获取当前请求的信息,并根据信息来进行流量控制、熔断降级等操作。

四、Sentinel 核心概念详解

4.1 资源

资源是 Sentinel 进行流量控制的最小单位,通常对应一个服务或一个方法。在 Sentinel 中,资源是通过 resourceName 来唯一标识的。

4.2 流量控制

流量控制是 Sentinel 的核心功能之一,主要用于限制系统的QPS,防止系统过载。在 Sentinel 中,流量控制是通过滑动窗口算法来实现的,可以精确地计算每个资源的QPS,并根据QPS来进行流量控制。

4.2.1流量控制设计理念
  • 资源的调用关系:例如资源的调用链路,资源和之源之间的关系
  • 运行指标:例如QPS、线程池、系统负载等。
  • 控制效果:例如直接限流、冷启动、排队等。
4.2.2流控规则介绍

参数:

  • 资源名:其实就是我们请求的资源路径
  • 针对来源:这个是此流控规则对应哪些微服务进行流控管理,一般填写调用方的微服务名称,多个用“,”分割
  • 阈值类型:一般有2种类型,QPS(每秒最大请求数)和线程数(并发线程数)
  • 单机阈值:单机状态下的最大限制值
  • 是否集群:根据实际情况选择
  • 流控模式:
    • 直接:当 api 调用达到限流条件的时,直接限流;
    • 关联:当关联的资源请求达到阈值的时候,限流自己;
    • 链路:只记录指定链路上的流量(指定资源从入口资源进来的流量,如果达到阈值,则进行限流)。
  • 流控效果:
    • 快速失败:直接失败;
    • Warm Up:即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过冷启动,让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个越热的时间,避免冷系统被压。
    • 排队等待:匀速排队,让请求匀速通过,阈值类型必须设置为 QPS,否则无效。
4.2.3流量控制模式

1)直接模式流量控制
在这里插入图片描述
2)关联模式流量控制
在这里插入图片描述
3)链路模式限流
在这里插入图片描述4)流控效果处理冷启动
在这里插入图片描述
在这里插入图片描述
5)流控效果排队等待
在这里插入图片描述
6)线程池隔离
在这里插入图片描述

4.3 熔断降级

4.3.1熔断降级机制

熔断降级是 Sentinel 的另一个核心功能,主要用于防止系统雪崩。在 Sentinel 中,熔断降级是通过熔断器模式来实现的,当某个资源出现异常时,会自动降级,避免影响其他资源。
断路器控制熔断和放行是通过状态机制来完成的:
在这里插入图片描述
在这里插入图片描述

4.3.2 熔断讲解策略

慢调用

业务的响应时长(RT)大于指定时长的请求认定为慢调用请求,在指定时间内,如果请求数量超过设定的最小数量,慢调用比例大于设定阈值,则触发熔断。
设置慢调用规则

在这里插入图片描述

异常比例、异常数

统计指定时间内的调用,如果调用次数超过指定请求数,并且出现一次里达到设定的比例阈值(或超过指定一常数),则触发熔断。
设置异常比例规则
在这里插入图片描述

五、Sentinel 高级特性剖析

5.1 集群流量控制

Sentinel 支持集群流量控制,可以实现多台机器的统一流量控制。在 Sentinel 中,集群流量控制是通过规则中心来实现的,可以将规则推送到各个客户端,实现规则的统一管理。

5.2 系统负载均衡

Sentinel 支持系统负载均衡,可以对系统的入口流量进行调度,实现系统的负载均衡。在 Sentinel 中,系统负载均衡是通过负载均衡器来实现的,可以根据系统的负载情况来动态调整流量分配。

六、Sentinel 生态集成

6.1 Spring Cloud Alibaba Sentinel

Spring Cloud Alibaba Sentinel 是 Spring Cloud 体系中的一部分,提供了与 Sentinel 集成的解决方案。通过使用 Spring Cloud Alibaba Sentinel,可以方便地将 Sentinel 作为 Spring Cloud 应用的流量控制和熔断降级组件使用。
以上就是全部内容,如果你有任何问题、意见或建议,都欢迎在评论中分享。让我们继续分享知识,共同成长,一起走向更加美好的未来。感谢你们的阅读,祝愿你们在未来的道路上一帆风顺!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/249834.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51单片机编程应用(C语言):数码管

目录 1.数码管原理 一位数码管引脚定义: 四位一体数码管: 多个数码管同时显示不同数字 51单片机的数码管的原理图 51单片机实现静态显示和动态显示 静态显示: 动态显示: 1.数码管原理 一位数码管引脚定义: 数码…

Git版本管理工具(实战进阶):零基础到起飞实战项目完整篇 →Git学习一篇就够 从基本指令、到本地仓库、远程仓库、实战项目开发演练介绍超详细!

heima 李师傅最新版 Git的讲解 文章目录 Git在实战项目开发使用功能学习01.Git 初识02.Git 仓库03.Git 的三个区域04.Git 文件状态05.Git 暂存区作用06.练习-登录页面07.Git-切换版本08.删除文件09.忽略文件10.分支的概念11.练习-登录 bug 修复12.分支-合并与删除13.分支-合并与…

测试ASP.NET Core项目调用EasyCaching的基本用法(Redis)

EasyCaching中的包EasyCaching.Redis和EasyCaching.CSRedis都支持集成Redis实现缓存,前者基于StackExchange.Redis,而后者基于CSRedisCore,本文学习使用EasyCaching.Redis包连接redis服务实现缓存的基本用法。   新建WebApi项目&#xff0c…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

云上自动部署丨使用 Terraform 在 AWS 上搭建 DolphinDB

HashiCorp Terraform 是一款基础架构即代码工具,旨在实现 "Write, Plan, and Create Infrastructure as Code"。它通过配置文件来描述云资源的拓扑结构,包括虚拟机、存储账户和网络接口。Terraform 几乎支持市面上所有的云服务,能够…

光学3D表面轮廓仪服务超精密抛光技术发展

随着技术的不断进步,精密制造领域对材料表面的处理要求越来越高,超精密抛光技术作为当下表面处理的尖端技术,对各种高精密产品的生产起到了至关重要的作用,已广泛应用于集成电路制造、医疗器械、航空航天、3C电子、汽车、精密模具…

面试经典 150 题 -- 滑动窗口 (总结)

面试经典150题链接 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 209 . 长度最小的子数组 思路 : 滑动窗口的思想,取ij0,向后遍历j,记录前缀和[l,r]为s,如果s>target,那么左端点向右移动,直到s…

2022 年全国职业院校技能大赛高职组云计算赛项试卷

【赛程名称】云计算赛项第二场-容器云 说明: 完成本任务需要两台安装了 CentOS7.9 操作系统的云主机: master 和 node。Chinaskill_Cloud_PaaS.iso 镜像包中有本次容器云部署所需的所有文件,运维所需的文件见附件。 某公司技术部产品开发上线…

HTML+CSS+JS的3D进度条

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>HTMLCSSJS的3D进度条</title><style>…

JavaWeb前端——HTML/CSS

HTML/CSS概述 HTML&#xff1a;学习标签&#xff0c;CSS&#xff1a;学习样式 HTML 1. 不区分大小写。 2. 属性可以使用单引号/双引号 3. 在记事本/编辑器中编写html语言&#xff0c;通过浏览器解析渲染语言 4. 语法结构松散&#xff08;编写时要尽量严谨&#xff09; VSc…

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…

【Uni-App】运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

使用HBuilderX开发微信小程序&#xff0c;运行项目的时有可能会出现routeDone with a webviewId 1 that is not the current page的报错&#xff0c;但不影响运行。如果强迫症介意的话&#xff0c;可以考下面的方法进行修复。 产生原因 由于微信开发者工具的调试基础库处于灰度…

【靶场实战】Pikachu靶场XSS跨站脚本关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 XSS跨站脚本概述 Cross-Site Scripting 简称为“CSS”&#xff…

SG2520CAA汽车用晶体振荡器

爱普生SG2520CAA是简单的封装晶体振荡器&#xff08;SPXO&#xff09;&#xff0c;具有CMOS输出&#xff0c;这款SPXO是汽车和高可靠性应用的理想选择&#xff0c;符合AEC-Q200标准&#xff0c;功耗低&#xff0c;工作电压范围为1.8 V ~ 3.3 V类型&#xff0c;宽工作温度-40℃~…

PyTorch复现网络模型VGG

VGG 原论文地址&#xff1a;https://arxiv.org/abs/1409.1556VGG是Visual Geometry Group&#xff08;视觉几何组&#xff09;的缩写&#xff0c;它是一个在计算机视觉领域中非常有影响力的研究团队&#xff0c;主要隶属于牛津大学的工程系和科学系。VGG以其对卷积神经网络&am…

CSS常用属性

CSS常用属性 1. 像素的概念 概念&#xff1a;我们的电脑屏幕是&#xff0c;是由一个一个“小点”组成的&#xff0c;每个“小点”&#xff0c;就是一个像素&#xff08;px&#xff09;。规律&#xff1a;像素点越小&#xff0c;呈现的内容就越清晰、越细腻。 注意点&#xff…

开源:基于Vue3.3 + TS + Vant4 + Vite5 + Pinia + ViewPort适配..搭建的H5移动端开发模板

vue3.3-Mobile-template 基于Vue3.3 TS Vant4 Vite5 Pinia ViewPort适配 Sass Axios封装 vconsole调试工具&#xff0c;搭建的H5移动端开发模板&#xff0c;开箱即用的。 环境要求&#xff1a; Node:16.20.1 pnpm:8.14.0 必须装上安装pnpm&#xff0c;没装的看这篇…

maven代码规范检查(checkstyle、findbugs)

maven代码规范检查 前言一、使用checkstyle插件1. maven-checkstyle-plugin 介绍2. 接入方式3. 如何排除某个类、包下面的文件不进行检查使用suppressionsLocation 4. 如何关闭 二、使用findbugs插件1.findbugs-maven-plugin介绍2. 接入方式3. 如何排除某个类、包下面的文件不进…

sql指南之null值用法

注明&#xff1a;参考文章&#xff1a; SQL避坑指南之NULL值知多少&#xff1f;_select null as-CSDN博客文章浏览阅读2.9k次&#xff0c;点赞7次&#xff0c;收藏21次。0 引言 SQL NULL&#xff08;UNKNOW&#xff09;是用来代表缺失值的术语&#xff0c;在表中的NULL值是显示…

rasa3.X 自定义action的注册问题

rasa3.X 自定义action的注册问题 文章目录 rasa3.X 自定义action的注册问题前言一、问题重述 前言 幸好在这之前抽时间稍微看了一点django源码&#xff0c;让我对于python的导入机制有了一个概念。虽然还不是很确切的知道python import机制&#xff0c;不过在看到类似_import_…