当前位置: 首页 > news >正文

Spring Cloud微服务入门(五)

Sentinel的安装与使用

安装部署Sentinel

下载Sentinel: https://github.com/alibaba/Sentinel/releases

Sentinel控制台

https://localhost:8080

用户和密码为sentinel

使用Sentinel

加依赖:

写配置:

 

 

输入: java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar

 

启动内容中心、用户中心服务,访问内容中心api:

 我们在Sentinel控制台的实时监控菜单,可以看到服务通过的QPS等信息,说明Sentinel与我们的应用整合成功。

Sentinel的容错策略

流控规则。
概念:

         流控规则的是监控应用或服务流量的QPS指标,当指标达到设定的阈值时立即拦截流量,避免应用被瞬时的流量高峰冲垮,从而保障应用高可用性。

应用场景:

        削峰填谷,使流量匀速通过。

        当资源争抢时,留足资源给优先级高的接口。

        预热启动,避免大流量冲击。

流控规则配置项

针对来源: 默认值为:default。 可以指定是浏览器还是APP。

阈值类型:

        QPS:可通过的最大请求量。

        线程数:达到一定的线程数就开始限流。

单机阈值:数值,是阈值类型的最大值。

流控模式。

        直接:达到请求数,直接就报错。

        关联:当关联的资源达到阈值,就限流自己。

        链路:只记录指定链路上的流量。

流控效果。

        快速失败:直接失败,抛异常。

        Warm Up:根据codeFactor(冷加载因子,默认3)的值,从阈值/codeFactor,经过预热时长,才达到设置的QPS的阈值。适用于秒杀微服务。

        排队等待:匀速排队的设计,让请求以均匀的速度通过,阈值类型必须设成QPS,否则无效。适用于突发大量请求。

降级规则。
概念:

        由于调用关系的复杂性,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。熔断降级功能会在调用链路中某个资源出现不稳定时(例如某资源出现超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。

应用场景:

         监控应用下游依赖应用的响应时间或异常比例。 被监控的达到阈值时立即降低下游依赖应用优先级。 保障应用可用性。

慢调用比例:

        设置允许的慢调用RT(即最大的响应时间),请求的响应大于该值则统计为慢调用。

        当单位统计时长内请求数目大于设置的最小请求数目,并且慢调用比的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

        经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求响应时间小于设置的慢调用 RT 则结束熔断,若大于设置的慢调用 RT 则会再次被熔断。

异常比例:

        当单位统计时长(statIntervalMs)内请求数目大于设置的最小请求数目,并且异常的比例大于阈值,则接下来的熔断时长内请求会自动被熔断。

        经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

        异常比率的阈值范围是 [0.0, 1.0],代表 0% - 100%。

异常数:

        当单位统计时长内的异常数目超过阈值之后会自动进行熔断。

        经过熔断时长后熔断器会进入探测恢复状态(HALF-OPEN 状态),若接下来的一个请求成功完成(没有错误)则结束熔断,否则会再次被熔断。

热点规则。
概念:

        热点就是经常访问的数据,比如商品接口的 QPS 限定的是 100,有一天要秒杀,带着秒杀商品 id 的请求的 QPS 限制在 50,这样还能有 50 的 QPS 用来访问其他的商品。

应用场景:

         根据请求的参数来做限流

注意点: 参数必须是基本类型或者String。

热点规则配置项

        资源名:@SentinelResource(value=“xxx”)中的value值。

        参数索引:针对第几个参数,从0开始。

        参数类型:配置的参数索引位置的参数类型。

        参数值:具体要限流的参数值。 限流阈值:允许的QPS值。

         单机阈值:不是1的情况下,允许的QPS就是10。

        统计时间窗口:统计的时间单位,一般都是1s。

系统规则。
概念:

         系统规则是针对一个应用设定的,是粗粒度的配置。

应用场景:

        一般不建议使用,配置后,可能导致程序在莫名情况下发生异常,导致整个程序不能使用。

系统规则配置

        Load: 当系统Load1(1分钟的load)超过阈值,且并发线程数超过系统容量时触发,建议设置为CPU核心数*2.5(仅对Linux/Unix-like机器生效)。

        系统容量: maxQps * minRt    maxQps:秒级统计出来的最大QPS   minRt:秒级统计出来的最小响应时间。

        RT: 所有入口流量的平均RT达到阈值触发。

        线程数: 所有入口流量的并发线程数达到阈值触发。

        入口QPS: 所有入口流量的QPS达到阈值触发。

授权规则。
集群流控。

为Feign整合Sentinel

在application.yml中增加配置,再看sentinel控制台会发现,资源变成了feign的形式,并且服务提供者的资源也会显示出来,具体配置如下:

Sentinel错误页优化 

实现BlockExceptionHandler接口,根据异常类型判断:

        DegradeException,限流规则异常。

        FlowException,降级规则异常。

        ParamFlowException,热点规则异常。

        SystemBlockException, 系统规则异常。

        AuthorityException, 授权规则异常。

Sentinel实现区分来源

实现RequestOriginParser接口,实现parseOrigin,解析参数:

        可以使用URL参数指定,但不推荐。

        可以使用Header指定,推荐使用。

Sentinel持久化

两种模式:

        推模式,更适用于生产环境,但实现复杂,修改源码。

        拉模式,实现简单,但更新规则会有延迟。

相关文章:

Spring Cloud微服务入门(五)

Sentinel的安装与使用 安装部署Sentinel 下载Sentinel: https://github.com/alibaba/Sentinel/releases Sentinel控制台 https://localhost:8080 用户和密码为sentinel 使用Sentinel 加依赖: 写配置: 输入: java -Dserver.po…...

负荷预测 | Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于TCN-GRU-Attention单输入单输出时间序列多步预测; 2.单变量时间序列数据集,采用前12个时刻预测未来96个时刻的数据; 3.excel数据方便替换,运行环境matlab20…...

SpringBoot整合Spring Data JPA

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合Spring Data JPA 📚个人知识库: Leo知识库,欢迎大家访问 1.…...

机器学习(五) -- 监督学习(2) -- k近邻

系列文章目录及链接 目录 前言 一、K近邻通俗理解及定义 二、原理理解及公式 1、距离度量 四、接口实现 1、鸢尾花数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、knn模型训练 3.5、模型评估 3.6、结果预测 4、超参数搜索-网格搜…...

【.NET全栈】ZedGraph图表库的介绍和应用

文章目录 一、ZedGraph介绍ZedGraph的特点ZedGraph的缺点使用注意事项 二、ZedGraph官网三、ZedGraph的应用四、ZedGraph的高端应用五、、总结 一、ZedGraph介绍 ZedGraph 是一个用于绘制图表和图形的开源.NET图表库。它提供了丰富的功能和灵活性,可以用于创建各种…...

vivado 设计调试

设计调试 对 FPGA 或 ACAP 设计进行调试是一个多步骤迭代式流程。与大多数复杂问题的处理方式一样 , 最好先将 FPGA 或 ACAP 设计调试流程细分为多个小部分 , 以便集中精力使设计中的每一小部分能逐一正常运行 , 而不是尝试一次性让整 个…...

Python3 replace()函数使用详解:字符串的艺术转换

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …...

【C++】用红黑树封装map和set

我们之前学的map和set在stl源码中都是用红黑树封装实现的,当然,我们也可以模拟来实现一下。在实现之前,我们也可以看一下stl源码是如何实现的。我们上篇博客写的红黑树里面只是一个pair对象,这对于set来说显然是不合适的&#xff…...

一些好玩的东西

这里写目录标题 递归1.递归打印数组和链表?代码实现原理讲解二叉树的 前 中 后 序位置 参考文章 递归 1.递归打印数组和链表? 平常我们打印数组和链表都是 迭代 就好了今天学到一个新思路–>不仅可以轻松正着打印数组和链表 , 还能轻松倒着打印(用的是二叉树的前中后序遍…...

微电网优化:基于巨型犰狳优化算法(Giant Armadillo Optimization,GAO)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元,用户现场的分布式发电可以支持用电需求。为此,您的微电网将接入、监控、预测和控制您本地的分布式能源系统,同时强化供电系统的弹性,保障您的用电更经济。您可以在连接…...

java锁

乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出…...

QA测试开发工程师面试题满分问答6: 如何判断接口功能正常?从QA的角度设计测试用例

判断接口功能是否正常的方法之一是设计并执行相关的测试用例。下面是从测试QA的角度设计接口测试用例的一些建议,包括功能、边界、异常、链路、上下游和并发等方面: 通过综合考虑这些测试维度,并设计相应的测试用例,可以更全面地评估接口的功能、性能、安全性、数据一致…...

vue 双向绑定

双向绑定:双方其中一方改变,另外一方也会跟着改变。 data() { return {inputValue: ,list: [],message: hello,checked: true,radio: ,select: [],options: [{text: A, value:{value: A}},{text: B, value:{value: B}},{text: C, value:{value: C}}], }…...

python--异常处理

异常处理 例一: try: #可能出现异常代码 except: #如果程序异常,则立刻进入这儿 [finally: #不管是否捕获异常,finally语法快必须要执行!!! #资源关闭,等各种非常重要的操作&…...

element-ui result 组件源码分享

今日简单分享 result 组件的源码实现,主要从以下三个方面: 1、result 组件页面结构 2、result 组件属性 3、result 组件 slot 一、result 组件页面结构 二、result 组件属性 2.1 title 属性,标题,类型 string,无默…...

VRRP虚拟路由实验(思科)

一,技术简介 VRRP(Virtual Router Redundancy Protocol)是一种网络协议,用于实现路由器冗余,提高网络可靠性和容错能力。VRRP允许多台路由器共享一个虚拟IP地址,其中一台路由器被选为Master,负…...

SpringBoot通用模块--文件上传开发(阿里云OSS)

文件上传,是指将本地图片、视频、音频等文件上传到服务器上,可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛,我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务,需要有存储的支持,那…...

Fecify 商品标签功能

关于商品标签 商品标签是指商家可以在展示商品时,自己创建一个自定义标签,可自定义某个关键词或短语。这样顾客在浏览商城时,只需要通过标签就能看到更直观的展示信息。 商品标签可以按照用户的属性、行为、偏好等进行分类,标签要…...

openstack中windows虚拟机时间显示异常问题处理

文章目录 一、问题描述二、元数据信息总结 一、问题描述 openstack创建出windows虚拟机的时候,发现时间和当前时间相差8小时,用起来很难受。 参考:https://www.cnblogs.com/hraa0101/p/11365238.html 二、元数据信息 通过设置镜像的元数据…...

很牛的一套仓库管理系统,免费复用【带源码】

今天给大家分享一套基于SpringbootVue的仓库管理系统源码,在实际项目中可以直接复用。(免费提供,文末自取) ​一、系统运行图(设计报告和接口文档) 1、登陆页面 2、物品信息管理 3、设计报告包含接口文档 二、系统搭建视频教程 …...

Spark 部署与应用程序交互简单使用说明

文章目录 前言步骤一:下载安装包Spark的目录和文件 步骤二:使用Scala或PySpark Shell本地 shell 运行 步骤3:理解Spark应用中的概念Spark Application and SparkSessionSpark JobsSpark StagesSpark Tasks 转换、立即执行操作和延迟求值窄变换和宽变换 S…...

【二分查找】Leetcode 点名

题目解析 LCR 173. 点名 算法讲解 1. 哈希表 class Solution { public:int takeAttendance(vector<int>& nums) {map<int, int> Hash;for(auto n : nums) Hash[n];for(int i 0; i < nums[nums.size() - 1]; i){if(Hash[i] 0)return i;}return nums.si…...

JS中的运算符

1.&& 逻辑与 &&会从左到右执行表达式&#xff0c;直到某个表达式的运行结果返回false,如果全部为true,则返回最后一个中表达式的执行结果 console.log(1 && 2) // 2 console.log(1&&10&&15) // 15 console.log(1&&0&&am…...

Webots常用的执行器(Python版)

文章目录 1. RotationalMotor2. LinearMotor3. Brake4. Propeller5. Pen6. LED 1. RotationalMotor # -*- coding: utf-8 -*- """motor_controller controller."""from controller import Robot# 实例化机器人 robot Robot()# 获取基本仿真步长…...

mySql数据库学习002-表数据查询操作

表数据查询操作 表数据如下&#xff1a; idnameagegenderclasscreatedAtupdatedAt1张三20男一班2024-04-08 09:15:092024-04-08 09:15:092李四19女一班2024-04-08 09:15:092024-04-08 09:15:093王五21女二班2024-04-08 09:15:092024-04-08 09:15:094赵六18女二班2024-04-08 0…...

【STL】stack与queue的底层原理及其实现

文章目录 stack的介绍库中stack的使用栈的模拟实现queue的介绍库中queue的使用queue的模拟实现 stack的介绍 &#xff08;图片来自知乎&#xff09; 1.stack是一种容器适配器&#xff0c;模拟了栈的数据结构。数据只能从一端进去&#xff0c;另一端出来&#xff08;先进后出&am…...

Ai大模型如何应用到机器视觉系统中

AI大模型在机器视觉系统中的应用可以通过以下几个步骤实现&#xff1a; 1. 数据准备与预处理&#xff1a; - 收集和标注大量高质量的图像数据&#xff0c;这些数据应该覆盖机器视觉系统需要处理的各种场景和对象。 - 对图像数据进行预处理&#xff0c;包括去噪、标准化、增强等…...

IntelliJ IDEA下载及安装教程(Windows操作系统)

一、下载IntelliJ IDEA 1、访问JetBrains官方网站 打开浏览器&#xff0c;输入网址 https://www.jetbrains.com/idea/ 进入IntelliJ IDEA官方主页。 2、选择产品版本 IntelliJ IDEA分为免费的Community Edition&#xff08;社区版&#xff09;和付费的Ultimate Edition&…...

01 Python进阶:正则表达式

re.match函数 使用 Python 中的 re 模块时&#xff0c;可以通过 re.match() 函数来尝试从字符串的开头匹配一个模式。以下是一个简单的详解和举例&#xff1a; import re# 定义一个正则表达式模式 pattern r^[a-z] # 匹配开头的小写字母序列# 要匹配的字符串 text "h…...

pdf图片识别分类

文章目录 解析pdf数据ocr识别分类方法正则匹配词频统计分类模型 分类完提示 解析pdf数据 试了几种方法 fitz-get_image后面方法不适用&#xff0c;用pixmap分辨率低 用pypdf2版本低方法用不了 用pdf2image还要下依赖工具 用spire.pdf的SaveAsImage分辨率低&#xff0c;Extract…...