Sentinel学习

sentinel是阿里巴巴研发的一款微服务组件,主要为用户提供服务保护,包括限流熔断等措施

(一)主要功能

流量控制(限流):比如限制1s内有多少请求能到达服务器,防止大量请求打崩服务器

熔断降级:当下级服务响应慢或者不可用时,熔断服务,快速失败,保护上游服务

(二)使用方法

去Releases · alibaba/Sentinel · GitHub下载对应的jar包
在jar包所在的目录cmd运行命令

java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.8.jar

然后通过8080端口即可访问sentinel的控制台 ,账号密码均为sentinel

然后去项目中添加依赖

<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>x.y.z</version>
</dependency>

同时修改服务的application.yml

spring:cloud:sentinel:transport:dashboard: localhost:8090   # 指定 Sentinel Dashboard 地址port: 8719                  # 客户端监控端口,用于与 Sentinel Dashboard 通信

dashboard的地址必须和sentinel控制台的地址一致,连接控制台
port端口号是服务与sentinel的通信端口,是独立的,不能和运行服务的端口一样

在项目的代码中使用:

@SentinelResource注解

常用参数

value:指定资源名,在控制台中可看
blockHandler:触发限流规则时会调用哪个方法,一般会写一个兜底方法,方法参数要和设置了限流的方法一致,但可以加一个BlockException
fallback:触发异常时调用哪个兜底方法,和上面的很像,但是上面是用于触发限流后用的,这个是用于触发异常用的,方法参数可以加一个Throwable

(三)限流规则

限流主要是阻止大量请求同时打到服务器上

资源名 与@SentinelResource的value对应
针对来源 就是调用这个controller发送请求的来源,你要限流哪些来源的,默认全部
阈值类型:QPS每秒通过多少个(多少个就是单机阈值的数量),并发线程数通常配合线程池使用
是否集群:多服务器的情况下会用,也要设置一个阈值
比如,设置全局阈值12,比如进来100个请求,有三个服务器,它们总共只能处理12个请求
如果设置的单机均摊12,进来100个请求,就会每个服务器都能处理12个请求,总共36

继续看:

流控模式分为3种:直接、关联和链路

直接没什么好说的,就是对单一资源进行限流
关联就是a资源关联b资源,当b资源访问量大触发限流时,a也会被限流
链路就是当同一个方法会被多种渠道调用时,只对部分渠道进行限流

流控效果分三种:快速失败、warm up和排队等待

快速失败就是触发限流后,后面的请求全部丢弃,报错
warm up就是冷启动,需要设置启动时间n,前n秒内处理量大概为阈值的1/3,后面再逐步提高处理量达到阈值
排队等待就是触发限流后,后面的请求不会丢弃,而是排队等待前面的执行完后它再执行,需要设置排队时间,超过这个时间请求还未被处理的话,丢弃

ps:只有快速失败支持关联和链路,其它两种不支持

(四)熔断规则

当a服务调用b服务时,b服务可能会卡住执行很久,也可能会异常,这时a要及时熔断,切断与b的联系,保护自己

又有一个问题?怎么判断服务有问题去熔断呢?熔断之后怎么恢复连接呢?

答:判断熔断主要根据熔断策略,符合条件即熔断。恢复连接的话,当a、b服务间断开的时长达到熔断时长后,服务会切换到半开状态,a会向b发送一个或几个请求,如果这些请求正常执行,那就取消熔断恢复运行,如果这些请求有问题(满足熔断条件),就会继续保持熔断

熔断策略有三种:慢调用、异常比例和异常数

选择慢调用

最大RT:最大的响应时间,超过这个时间判定为慢调用
比例阈值:当n%的调用是慢调用时,触发熔断
熔断时长:熔断多久
最小请求数:要触发熔断起码要有多少个请求,低于这个数值不会熔断
统计时长:统计时长

选择异常比例

其他不变,没用最大RT,比例阈值改为当n%的调用是异常时触发熔断

选择异常数

其他不变,比例阈值改为异常数

(五)热点规则

就是可以对方法的具体参数进行限流
当用户调用这个方法,携带了3个参数,你可以设置热点来对具体的第几个参数进行限流

(六)总结

sentinel是服务保护的重要组件,起到限流、熔断等作用

首先下载sentinel的jar包,用命令运行,用浏览器打开sentinel的控制台

然后去项目中添加对应依赖,修改代码,添加@SentinelResource,并写对应的兜底方法

@RestController
public class UserController {@GetMapping("/user")@SentinelResource(value = "getUser",               // 资源名,用于控制台设置规则fallback = "fallbackMethod",    // 业务异常兜底方法blockHandler = "blockHandlerMethod" // 流控、熔断时的处理方法)public String getUser(@RequestParam(required = false) String name) {if ("error".equals(name)) {throw new RuntimeException("模拟业务异常");}return "用户:" + name;}// fallback 方法:处理业务异常(如运行时异常)public String fallbackMethod(String name, Throwable e) {return "fallback:业务处理异常,返回兜底用户";}// blockHandler 方法:处理被 Sentinel 限流、降级、熔断的情况public String blockHandlerMethod(String name, BlockException ex) {return "blockHandler:服务被限流或熔断,返回默认用户";}
}

其实代码部分很少,主要用控制台对限流规则、熔断规则进行配置即可

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

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

相关文章

Linux中进程的属性:进程优先级

一、优先级和进程优先级 1.1什么是优先级 优先级就是获取某种资源的先后顺序&#xff0c;比如打饭时排队&#xff1a;排队就是在确认优先级 1.2为什么要有优先级 本质上其实是目标资源相对于需求者来说比较少&#xff0c;如CPU&#xff0c;磁盘&#xff0c;显示器&#xff…

基于LangChain 实现 Advanced RAG-后检索优化(上)-Reranker

摘要 Advanced RAG 的后检索优化&#xff0c;是指在检索环节完成后、最终响应生成前&#xff0c;通过一系列策略与技术对检索结果进行深度处理&#xff0c;旨在显著提升生成内容的相关性与质量。在这些优化手段中&#xff0c;重排序优化&#xff08;Reranker&#xff09;作为核…

【云备份】热点管理模块

目录 1.热点管理文件的基本思路 2.热点管理类的设计 3.热点管理类的实现 1.热点管理文件的基本思路 服务器端的热点文件管理是对上传的非热点文件进行压缩存储&#xff0c;节省磁盘空间。 而热点文件的判断在于上传的文件的最后一次访问时间是否在热点判断时间之内。 实…

LeetCode 560. 和为 K 的子数组 | 前缀和与哈希表的巧妙应用

文章目录 方法思路&#xff1a;前缀和 哈希表核心思想关键步骤 代码实现复杂度分析示例解析总结 题目描述 给定一个整数数组 nums 和一个整数 k&#xff0c;请统计并返回该数组中和为 k 的子数组的数量。 子数组是数组中连续的非空元素序列。 示例 输入&#xff1a;nums …

Windows配置grpc

Windows配置grpc 方法一1. 使用git下载grph下载速度慢可以使用国内镜像1.1 更新子模块 2. 使用Cmake进行编译2.1 GUI编译2.2 命令行直接编译 3. 使用Visual Studio 生成解决方法 方法二1. 安装 vcpkg3.配置vckg的环境变量2. 使用 vcpkg 安装 gRPC3. 安装 Protobuf4. 配置 CMake…

【算法基础】快速排序算法 - JAVA

一、算法基础 1.1 什么是快速排序 快速排序&#xff08;Quick Sort&#xff09;是一种高效的分治排序算法&#xff0c;由英国计算机科学家Tony Hoare于1960年提出。它的核心思想是&#xff1a; 选择一个基准元素&#xff08;pivot&#xff09;将数组分成两部分&#xff1a;小…

Linux用户管理命令和用户组管理命令

一、用户管理命令 1.1、adduser 添加新用户 1、基本语法 adduser 用户名 &#xff08;功能描述&#xff1a;添加新用户&#xff09; 应用场景1&#xff1a;企业开发&#xff0c;多人协同&#xff08;也会有多人使用相同的一个低权限用户&#xff09;。 应用场景2&#x…

记录两个免费开源又好用的后台模版vue3

一.element-plus-admin 一套基于vue3、element-plus、typesScript、vite的后台集成方案 1.简介 vue-element-plus-admin 是一个基于 element-plus 免费开源的中后台模版。使用了最新的 Vue3&#xff0c;Vite&#xff0c;Typescript等主流技术开发&#xff0c;开箱即用的中后…

Flip PDF Plus Corp7.7.22电子书制作软件

flip pdf plus corporate7.7.22中文版由FlipBuilder官方出品的一款企业级的翻页电子书制作软件&#xff0c;拥有丰富的模板&#xff0c;主题和动画场景&#xff0c;每本书最大页数1000页&#xff0c;每本书的最大大小1GB&#xff0c;即可以帮助企业用户制作好丰富的电子书籍。 …

C语言蓝桥杯真题代码

以下是不同届蓝桥杯C语言真题代码示例&#xff0c;供参考&#xff1a; 第十三届蓝桥杯省赛 C语言大学B组 真题&#xff1a;卡片 题目&#xff1a;小蓝有很多数字卡片&#xff0c;每张卡片上都是数字1-9。他想拼出1到n的数列&#xff0c;每张卡片只能用一次&#xff0c;求最大的…

[Windows] Kazumi番剧采集v1.6.9:支持自定义规则+在线观看+弹幕,跨平台下载

[Windows] Kazumi番剧采集 链接&#xff1a;https://pan.xunlei.com/s/VOPLMhEQD7qixvAnoy73NUK9A1?pwdtu6i# Kazumi是一款基于框架; 开发的轻量级番剧采集工具&#xff0c;专为ACG爱好者设计。通过;自定义XPath规则; 实现精准内容抓取&#xff0c;支持多平台&#xff08;An…

探秘数据结构:构建高效算法的灵魂密码

摘要 数据结构作为计算机科学的基石&#xff0c;其设计与优化直接影响算法效率、资源利用和系统可靠性。本文系统阐述数据结构的基础理论、分类及其核心操作&#xff0c;涵盖数组、链表、栈、队列、树、图、哈希表与堆等经典类型。深入探讨各结构的应用场景与性能对比&#xf…

机器人--架构及设备

机器人的四大组成部分 控制系统 驱控系统 执行系统 电机属于执行系统的设备。 传感系统 传感系统分为内部传感系统和外部传感系统。 内部传感系统(内部传感器)&#xff1a; 用于获取机器人内部信息&#xff0c;比如IMU&#xff0c;力传感器等。 外部传感系统(外部传感器):…

人工智能:如何快速筛选出excel中某列存在跳号的单元格位置?

前提&#xff1a; 电脑上必须提前安装好了【office AI】软件工具 方法如下&#xff1a; 1、打开要操作的excel表格&#xff0c;点击上方的【officeAI】&#xff0c;再点击左边的【右侧面板】按钮&#xff0c;就会出现如下右侧的【OfficeAI助手】 2、在OfficeAI助手的聊天框…

Spring MVC入门

介绍了Spring MVC框架的概念、特征及核心功能&#xff0c;通过案例详细介绍了Spring MVC开发所需要的开发环境以及基本的开发步骤。 一、Spring MVC框架概述 Spring MVC是Spring框架的一个模块&#xff0c;是一个基于Java的实现了MVC设计模式的轻量级Web框架。它通过一套注解和…

贪心算法求解边界最大数

贪心算法求解边界最大数&#xff08;拼多多2504、排列问题&#xff09; 多多有两个仅由正整数构成的数列 s1 和 s2&#xff0c;多多可以对 s1 进行任意次操作&#xff0c;每次操作可以置换 s1 中任意两个数字的位置。多多想让数列 s1 构成的数字尽可能大&#xff0c;但是不能比…

Ubuntu ZLMediakit的标准配置文件(rtsp->rtmp->hls)

最近在工作中遇到不生成hls资源的问题,后面发现是配置文件有误,特此记录正确的config.ini配置文件,方便查阅。 最终解决方案,通过下面这种格式可以访问到flv视频,具体为什么不太清楚,rtmp格式:rtmp://39.113.48.113:8089/live/1744168516937396175 记录最终解决方案:ht…

# LeetCode 1007 行相等的最少多米诺旋转

LeetCode 1007 行相等的最少多米诺旋转 原题英文&#xff1a;Minimum Domino Rotations For Equal Row 难度&#xff1a;中等 | 标签&#xff1a;数组、贪心 1 题目重述 给定两行长度相同的多米诺骨牌&#xff1a; tops[i] 表示第 i 张骨牌上面的数字&#xff1b;bottoms[…

大数据技术:从趋势到变革的全景探索

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 在数字化时代的浪潮下,大数据已经不再是一个陌生的概念。从日常生活中的社交媒体,到企业决策支持系统,再到公共管理的大数据应用,它正在改变着我们的工作和生活方式。随着技术的进步,传统的数据…

前端八股Day5——XHS某中厂实习前端一面

没写完&#xff0c;睡醒补 CSS盒模型 //出现频率好高&#xff0c;感觉每次写面经都遇到 W3C标准盒模型(content-box)&#xff1a;盒子宽高width/heightpaddingbordermargin IE怪异盒模型(border-box)&#xff1a;盒子宽高width/heigth(包括padding和border)margin 默认标准切换…