Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能

1、流量控制

        流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角度考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel 作为一个调配器,可以根据需要把随机的请求调整成合适的形状,如下图所示:

 流量控制有以下几个角度:

  • 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
  • 运行指标,例如 QPS、线程池、系统负载等;
  • 控制的效果,例如直接限流、冷启动、排队等。

2、熔断降级

        除了流量控制以外,及时对调用链路中的不稳定因素进行熔断也是 Sentinel 的使命之一。由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,可能会导致请求发生堆积,进而导致级联错误。

Sentinel 和 Hystrix 的原则是一致的: 当检测到调用链路中某个资源出现不稳定的表现,例如请求响应时间长或异常比例升高的时候,则对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联故障。

 二、Sentinel的基本使用

直接使用

引入坐标

<!--sentinel-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.2.5.RELEASE</version>
</dependency>

对于要进行控制的资料做Sentinel的标记

@SentinelResource 用于定义资源,并提供可选的异常处理和 fallback 配置项。 @SentinelResource 注解包含以下属性:

 代码示例:

/***** 司机信息*/
@SentinelResource(value = "info",blockHandler = "blockExHandler")
@RequestMapping(value = "/info/{id}")
public Driver info(@PathVariable(value = "id")String id) throws BlockException {log.info("当前服务占用的端口为:{}",port);Driver driver = driverService.findById(id);if (driver==null) {//throw new RuntimeException("司机id="+id+"不存在");throw new SystemBlockException("info", "司机id="+id+"不存在",null); // 抛出BlockException}return driver;
}/*** info资源出现BlockException后的降级处理*/
public Driver blockExHandler(String id,BlockException e) {Driver driver = new Driver();driver.setId(id);driver.setName("系统繁忙,稍后再试");return driver;
}

集成OpenFeign

创建FallBack的处理类,需要实现对应的Feign接口

@Component
public class DriverFeignFallback implements DriverFeign {/*** status()降级处理方法*/@Overridepublic Driver status(String id, Integer status) {Driver driver = new Driver();driver.setId(id);driver.setStatus(status);driver.setName("系统比较繁忙,请您稍后再试!");return driver;}
}

在DriverFeign接口上添加fallback属性指定降级处理的类,代码如下:

@FeignClient(name = "hailtaxi-driver",fallback = DriverFeignFallback.class)
public interface DriverFeign {@PutMapping(value = "/driver/status/{id}/{status}")Driver status(@PathVariable(value = "id")String id, @PathVariable(value = "status")Integer status);
}

此刻就已经成功集成OpenFeign

但是有个问题,fallback拿不到报错信息,于是就有了fallbackFactory

创建fallbackFactory,这样可以拿到throwable中的报错信息了

@Component
public class DriverFeignFallbackFactory implements FallbackFactory<DriverFeign> {@Overridepublic DriverFeign create(Throwable throwable) {return new DriverFeign() {/*** status()降级处理方法*/@Overridepublic Driver status(String id, Integer status) {Driver driver = new Driver();driver.setId(id);driver.setStatus(status);driver.setName("系统比较繁忙,请您稍后再试!");return driver;}};}
}

在DriverFeign接口上添加fallbackFactory属性指定讲解处理的类,代码如下:

@FeignClient(name = "hailtaxi-driver",fallback = DriverFeignFallbackFactory.class)
public interface DriverFeign {@PutMapping(value = "/driver/status/{id}/{status}")Driver status(@PathVariable(value = "id")String id, @PathVariable(value = "status")Integer status);
}

集成Gateway

TODO(在赶稿了)

三、Sentinel的规则

1、流量控制规则

流量控制基本概念:流量过大,超过阈值,就走fallback的函数了

 我们可以在【流控规则】页面中新增,点击【流控规则】进入页面新增页面,如下图:

 资源名:要和@SentinelResource中的value保持一致

2、熔断降级规则

熔断降级基本概念:监控一些请求的异常情况(是否报错)或完成调用的时间,当在单位时间内达到阈值即触发降级

 我们可以选择降级规则>新增降级规则,如下图:

 降级规则的熔断策略有3种,分别是慢调用比例、异常比例、异常数,和程序中是一样的。

3、系统保护规则

        Sentinel 系统自适应限流从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和并发线程数等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

这是对系统的整体指标做监控,超过一些阈值就对所有请求限流降级

4、访问控制规则

        很多时候,我们需要根据调用方来限制资源是否通过,这时候可以使用 Sentinel 的访问控制(黑白名单)的功能。黑白名单根据资源的请求来源(origin)限制资源是否通过,若配置白名单则只有请求来源位于白名单内时才可通过;若配置黑名单则请求来源位于黑名单时不通过,其余的请求通过。

5、热点规则

热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。

比如某个参数,city=“北京”,当监控到这个参数被访问的次数高于阈值,则对这个资源进行控制

要使用热点参数限流功能,需要引入以下依赖

<!--热点参数限流-->
<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-parameter-flow-control</artifactId><version>1.8.1</version>
</dependency>

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

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

相关文章

SpringCloud无介绍快使用,sentinel服务熔断功能与持久化(二十四)

TOC 问题背景 从零开始学springcloud微服务项目 注意事项&#xff1a; 约定 > 配置 > 编码IDEA版本2021.1这个项目&#xff0c;我分了很多篇章&#xff0c;每篇文章一个操作步骤&#xff0c;目的是显得更简单明了controller调service&#xff0c;service调dao默认安装ngi…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

2023年“网络建设与运维”广西省赛试题复盘

2023年“网络搭建与应用”省赛试题复盘 第一部分&#xff1a;网络搭建及安全部署项目 &#xff08;500分&#xff09; 一、竞赛内容分布 “网络搭建与应用”竞赛共分二个部分&#xff0c;其中&#xff1a; 第一部分&#xff1a;网络搭建及安全部署项目 第二部分&#xff1a;服…

什么是Qseven?模块电脑(核心板)规范标准简介二

1.概念 Qseven是一种通用的、小尺寸计算机模块标准&#xff0c;适用于需要低功耗、低成本和高性能的应用。 Qseven模块电脑&#xff08;核心板&#xff09;采用230Pin金手指连接器 2.Qseven的起源 Qseven最初是由Congatec、SECO、MSC三家欧洲公司于2008年发起&#xff0c;旨在…

简单聊聊 限流算法

计数器 计数器算法&#xff0c;是在一个时间间隔内&#xff0c;比如一分钟内&#xff0c;对请求进行计数&#xff0c;然后将计数值和设置的最大值进行比较&#xff0c;如果超过了最大值&#xff0c;进行限流处理&#xff0c;拒绝请求。 他的优点是&#xff1a;算法简单&#…

OpenAI持续open,meta prompt开源

目录 前言 提示&#xff08;Prompts&#xff09; Playground中的元提示借鉴了OpenAI提示工程最佳实践和用户的实际经验。 模式&#xff08;Schemas&#xff09; 自描述模式 -元模式。 虽然OpenAI目前使用元提示和模式&#xff0c;但将来可能会集成更先进的技术&#xff0c…

仓库管理系统有哪些功能?

上一篇&#xff0c;我们向大家介绍了一下仓库管理是什么&#xff0c;仓库管理操作流程有哪些&#xff0c;仓库管理系统又有哪些基本功能&#xff0c;那么接下来这篇文章&#xff0c;我们会详细介绍一下仓库管理系统各个功能是如何运作&#xff0c;是怎样解决企业中碰到的难题的…

mysql查看和修改默认配置

1.查看最大连接数 SELECT max_connections; 或者 SHOW VARIABLES LIKE max_connections;2.查看当前连接的客户端 SHOW PROCESSLIST;2.临时设置最大连接数 SET GLOBAL max_connections 500;3.临时设置连接客户端交互超时时间 SET GLOBAL interactive_timeout 1800;4.永久生…

HJ2 计算某字符出现次数

代码&#xff08;首刷自解 2024年10月16日&#xff09; #include <iostream> using namespace std;int main() {string input;getline(cin, input);char target;cin >> target;char t2;if (target > a && target < z) {t2 target (A - a);} else …

华为---Super VLAN简介及示例配置

目录 1. Super VLAN技术产生背景 2. Super VLAN概念 3. Super VLAN应用场景 4. Super VLAN工作原理 5. Super-VLAN主要配置命令 6. Super-VLAN主要配置步骤 7. 示例配置 7.1 示例场景 7.2 网络拓扑 7.3 配置代码 7.4 代码解析 7.5 测试验证 1. Super VLAN技术产生背…

低空产业园搭建技术详解

低空产业园的搭建技术是一个复杂而系统的工程&#xff0c;涉及多个方面的技术和策略。以下是对低空产业园搭建技术的详细解析&#xff1a; 一、规划与设计 1. 总体规划&#xff1a;低空产业园的规划需要结合地方经济发展、产业基础、政策导向等因素&#xff0c;制定科学合理的…

Meta Llama 3强势来袭:迄今最强开源大模型,性能媲美GPT-4

前言 Meta的最新语言模型Llama 3已经发布&#xff0c;标志着在大型语言模型&#xff08;LLM&#xff09;领域的一次重大突破&#xff0c;其性能在行业内与GPT-4相媲美。此次更新不仅提升了模型的处理能力和精确性&#xff0c;还将开源模型的性能推向了一个新的高度。 Hugging…

java在线招投标|评标|竞标|单一采购|邀标|评审专家|采购软件源码

​功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看…

【C++11】包装器:深入解析与实现技巧

C 包装器&#xff1a;深入解析与实现技巧 个人主页 C专栏 目录 引言包装器的定义与用途C 包装器的常见应用场景实现包装器的技巧使用 RAII 实现资源管理案例分析&#xff1a;智能指针模板包装器的应用包装器与设计模式性能优化更多应用案例总结 引言 C 是一门灵活且强大的语…

Internet Download Manager6.42(简称IDM)2024免费网络资源下载神器

Internet Download Manager (IDM)是一个专业的网络下载器&#xff0c;拥有强大的下载管理能力。使用多线程下载&#xff0c;将文件分割为多个部分分别进行下载&#xff0c;完成后进行组合&#xff0c;达到快速下载文件的目的。可与浏览器集成&#xff0c;接替浏览器的所有下载任…

NewStarCTF2024-Week2-Web-WP

目录 1、复读机 2、你能在一秒内打出八句英文吗 3、遗失的拉链 4、谢谢皮蛋 plus 5、PangBai 过家家&#xff08;2&#xff09; 1、复读机 测了下存在 ssti 没什么说的 fenjing 秒了 2、你能在一秒内打出八句英文吗 每次出来的需要提交的内容都不一样 exp&#xff1a; …

3.3 Thymeleaf语法

文章目录 引言Thymeleaf标签显示标签链接地址标签条件判断标签元素遍历标签 Thymeleaf表达式变量表达式选择变量表达式消息表达式链接表达式 Thymeleaf内置对象上下文对象上下文变量上下文区域请求对象响应对象会话对象日期对象 实战演练创建控制器创建模板页面 结语 引言 Thy…

sim卡文件系统

### 5.2 初始通信建立程序 初始通信建立程序应遵循3GPP TS 31.101 [55]的规定&#xff0c;但有以下限制&#xff1a; - 对于3V及以下的SIM卡&#xff0c;最大时钟频率为4MHz&#xff0c;因此必须遵守3GPP TS 31.101 [55]中规定的相应功耗限制。 - ATR内容&#xff1a;如果SIM在…

C++调试方法(Vscode)(二) ——本地调试(ROS版)

初学者在调试一段代码的时候&#xff0c;经常出于不明原因&#xff0c;写出bug&#xff0c;导致程序崩溃。但是定位崩溃的地方时&#xff0c;往往采用简单而朴素的方法&#xff1a;即采用cout或者printf进行输出。这种方式既原始&#xff0c;又低效。一个合格的工程师应该是通过…

NeRS: Neural Reflectance Surfaces for Sparse-view 3D Reconstruction in the Wild

阅读记录&#xff1a; 1. 2.优点1&#xff1a;我们的方法仅依赖于近似的相机位姿估计和粗略的类别级形状模板。 3.我们的关键见解是&#xff0c;我们可以强制执行基于表面的 3D 表示&#xff0c;而不是允许广泛用于体积表示的无约束密度。重要的是&#xff0c;这允许依赖于视…