SpringCloud Alibaba - Sentinel

news2024/10/1 7:44:54

接上文SpringCloud Alibaba - Nacos

1.Sentinel 流量防卫兵

在这里插入图片描述
在这里插入图片描述

1.1 安装与部署

和Nacos一样,它是独立安装和部署的,下载地址https://github.com/alibaba/Sentinel/releases
下载后的jar放到目录
在这里插入图片描述
然后配置
在这里插入图片描述
启动并访问,用户名密码都是 sentinel
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时就开启了sentinel的监控页面。将本地nacos服务也启动,然后将服务连接到sentientl控制台。
给book服务添加依赖
在这里插入图片描述
修改book下配置文件
在这里插入图片描述
启动book服务。此时需要先访问依次book服务(懒加载模式,不会一上来就调用),然后sentinel中就会存在book服务的信息。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接着将其他服务user,borrow都加进去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问借阅服务
在这里插入图片描述
在这里插入图片描述
此时user服务只有一个,因为此时user服务设置的是Chengdu集群

在这里插入图片描述
此时单独访问Chongqing的user服务,则出现两个user服务。
在这里插入图片描述
在这里插入图片描述

2.sentinel 流量控制(一)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.sentinel 流量控制(二)

在sentinel测试限流。
给borrow服务设置限流。

2.1 测试第一种方案(快速失败)

在这里插入图片描述
在这里插入图片描述
点击新增后,此时访问borrow服务,一秒内点击一次没有问题,一秒内点击多次就会被限制。超过一秒再访问就正常
在这里插入图片描述
在这里插入图片描述

2.2 测试第二种方案(Warm up)

预热时长设置为10,则会在10s内将阈值增加到设定的值。
在这里插入图片描述

2.3 测试第三种方案(排队等待)

在这里插入图片描述

2.4 流控模式的区别

在这里插入图片描述
关联模式:
在这里插入图片描述
链路模式:当从指定 接口 过来的资源请求达到限流条件时,开启限流。
先从@SentinelResource的使用开始,对某个方法进行标注,一旦方法被标注,就会进行监控。
例如,创建两个请求映射,都来调用Service的被监控方法:
在这里插入图片描述
接口上加上注解
在这里插入图片描述
修改配置文件
在这里插入图片描述
重启borrow服务。
先访问
在这里插入图片描述

在这里插入图片描述
可以看到访问后已经识别到了borrow接口调用了到注解的方法。
在这里插入图片描述
然后给details添加一个限流策略。此时无论访问borrow还是borrow1,只要超过阈值都会被限流,因为这两个方法都调用了带details的接口。
在这里插入图片描述
此时,访问超过阈值就会报错,因为是在接口中使用@SentinelResource定义的限流。
因此,链路选项实际上是决定只限流从哪个方向来的调用。比如只对borrow2这个接口对getUserBorrowDetailByUid方法的调用进行限流,就可以指定其链路。
在这里插入图片描述

在这里插入图片描述可以看到borrow2被限流,borrow未被限流。
在这里插入图片描述在这里插入图片描述

3.Sential-限流和异常处理

限流之后的默认提示语修改,即异常处理。

对于接口的限流异常

自定义一个返回请求块
在这里插入图片描述
在配置文件中将此页面设定为限流页面
在这里插入图片描述
重启borrow服务
在这里插入图片描述
此时点击过快就会显示设定的内容
在这里插入图片描述

对于方法的异常限流

对于方法被限流时,会在后台抛出异常。之前在Hystrix可以直接添加一个替代方案,这样当异常出现时会直接执行我们的替代方法并返回。Sentinel也可以。
在这里插入图片描述
重启,然后给方法添加一个流控
在这里插入图片描述
现在限流后返回的是替代方案
在这里插入图片描述
但是blockHandler只能处理限流情况下抛出的异常,包括下面的热点参数限流也是同理。如果是方法本身抛出的其他类型异常,不在管控范围内,但是可以通过其他参数进行处理:

在这里插入图片描述
此时访问抛出的就是指定的内容
在这里插入图片描述
改为返回字符串,然后重启。
在这里插入图片描述
在这里插入图片描述
此时若频繁访问则返回为空。因为控流后调用了except方法,t.getMessage为空
在这里插入图片描述
若两种异常返回同时出现,则会出现的情况,如下:
在test上添加一个block异常然后重启。每次重启后都需要访问一次接口,否则sentinel上不会出现服务。每次修改限流方法都要把之前的流控策略给删除重新添加。
在这里插入图片描述
在这里插入图片描述
此时频繁访问调用的是block的限流异常处理。
在这里插入图片描述

3.1.1 热点参数限流

在这里插入图片描述
创建新的测试请求映射:
在这里插入图片描述
重启并直接请求:
在这里插入图片描述
在这里插入图片描述
此时只对参数为a的访问进行限流,在sentinel中配置
在这里插入图片描述
此时频繁访问a=10,则会被限流,b则不会被限流
在这里插入图片描述

在这里插入图片描述
设置参数值为多少时进行限流,如图片即第0个索引参数值为10,访问频率大于3次/1s时候会被限流。若此时a改为a=20,则会执行单机阈值,超过1次就会被限流
在这里插入图片描述

4.服务熔断和降级

4.1 服务熔断在这里插入图片描述

两种隔离方案
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
Sentinel中进行熔断和服务降级
在这里插入图片描述
在这里插入图片描述
修改后重启
在这里插入图片描述
创建新的熔断规则
在这里插入图片描述
频繁访问borrow2,可以看到超时进入了熔断,进入熔断即会限流
在这里插入图片描述
5s后再访问就正常
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时频繁访问(1000ms内访问2次,有一次出现异常)则会熔断
在这里插入图片描述
5s后再次访问则会出异常
在这里插入图片描述
在这里插入图片描述

4.2 服务降级

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
此时频繁访问就不是默认的限流方案,而是替代方案
在这里插入图片描述

4.3 Feign支持Sentinel

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
可正常访问
在这里插入图片描述
然后将user服务关闭,再进行访问借阅接口就会到替代方案(因为借阅服务是调用了userclient的方法,而userclient的方法又和user-service是绑定的,当user服务关闭后,调用不通则会进行userclient的替代方案)
在这里插入图片描述在这里插入图片描述

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

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

相关文章

ISP技术概述

原本或许是为了对冲手机系统和APP设计无力感而诞生的拍照功能,现今却成为了众手机厂家除背部设计外为数不多可“卷”的地方,自拍、全景、夜景、小视频等旺盛的需求让这一技术的江湖地位迅速变化。对圈内人士而言,这一波变化带来的后摄、双摄、多摄、暗光、防抖、广角、长焦、…

软件定制开发具有以下特点|APP搭建|小程序

软件定制开发具有以下特点|APP定制|小程序 一、快速响应用户需求 软件定制开发的优势在于,它可以快速响应用户的需求,因为它是在现有软件的基础上进行功能定制、界面定制、服务定制等改造,而不是从零开始进行重新设计与开发,所以…

Spring MVC 请求参数绑定

文章目录 默认⽀持 Servlet API 作为⽅法参数绑定简单类型参数绑定Pojo类型参数绑定⽇期类型参数(需要配置⾃定义类型转换器)路径变量参数 Spring MVC 是一个用于构建 Web 应用程序的框架,它提供了一种方便的方式来处理 HTTP 请求和响应。在 …

【java】【SpringBoot】【三】开发实用篇 基于SpringBoot整合任意第三方技术

目录 一、热部署 1、手动启动热部署 2、自动启动热部署 3、热部署范围配置 4、关闭热部署 二、配置高级 1、ConfigurationProperties 2、宽松绑定/松散绑定 3、常用计量单位绑定 4、数据校验 三、测试 1、加载测试专用属性 2、加载测试专用配置 3、web环境模拟测…

Delft3D水动力与泥沙运动模拟教程

详情点击公众号链接:Delft3D水动力与泥沙运动模拟教程 前沿 1.Delft3D水动力-泥沙模型的基本原理; 2.Delft3D模型正价曲线网格和边界条件构建方法; 3.Delft3D模型水动力及泥沙模块使用方法; 4.Delft3D模型泥沙运动…

数据库----- 数据库高级

1.2 多表查询分类 将多个表的数据横向的联合起来。 1、 内连接 2、 外连接 a) 左外连接 b) 右外连接 3、 交叉连接 4、 自然连接 1.2.1 内连接【inner join】 语法一:select 列名 from 表1 inner join 表2 on 表1.公共字段表2.公共字段语法二:select …

PMP考试如何报名?麻烦吗?

还是比较麻烦的,PMP考试不是国内的考试,要报两次名,报名条件也很严格,PMP考试报名需要先在PMI网站进行英文报名,英文报名成功后才能在中国国际人才交流基金会网站进行中文报名,具体说明如下。 一、PMP考试…

求链表的倒数第k个节点

思路:利用快慢指针空间差 代码: struct ListNode* FindKthToTail(struct ListNode* pListHead, int k ) {// write code herestruct ListNode* slow pListHead;struct ListNode* fast pListHead;while(k--){if(fastNULL){return NULL;}fastfast->…

CentOS7.9安装mysql8.0

网上各种安装教程五花八门,各种报错,所以整理了一个完整版本,以下教程作者在2台新服务器测试安装均无问题。 一.下载mysql 下载地址:MySQL :: Download MySQL Community Server (Archived Versions) 或者直接执行命令 wget htt…

乐观锁与悲观锁

概述 悲观锁总会假设最坏的情况,乐观锁总会假设最好的情况。悲观锁和乐观锁最终都是为了保证线程的安全,避免在并发场景下的资源竞争问题,但是,相对于乐观锁,悲观锁对性能的影响更大! 悲观锁 共享资源每…

操作系统权限提升(二十六)之数据库提权-MySQL UDF提权

MySQL UDF提权 MySQL介绍 MySQL是最流行的开放源码SQL数据库管理系统,相对于Oracle,DB2等大型数据库系统,MySQL由于其开源性、易用性、稳定性等特点,受到个人使用者、中小型企业甚至一些大型企业的广泛欢迎,MySQL具有…

点大商城V2_2.5.0 全开源独立版 商家自营+多商户入驻 百度+支付宝+QQ+头条+小程序端+unipp开源前端

点大商城V2是一款采用全新界面设计支持多端覆盖的小程序应用,支持H5、微信公众号、微信小程序、头条小程序、支付宝小程序、百度小程序,本程序是点大商城V2独立版,包含全部插件,代码全开源,并且有VUE全端代码。分销&am…

log4j2原理分析及漏洞复现CVE-2021-44228

文章目录 log4j2原理分析及漏洞复现0x01 log4j2简介Log4j2 特点Log4j2组件的应用 0x02 CVE-2021-44228漏洞简介:漏洞适用版本漏洞原理lookup功能jndi解析器jndi是什么ldap服务RMI 0x03攻击过程0x04漏洞复现漏洞环境1.访问靶机2.dns回显验证3.将bash反弹shell命令编码…

职业观察|02:铁路维修师

高铁及地铁的发展,新生了许多之前没有的职位和专业。除了空乘/铁乘、安检人员等,大家可能相对熟悉。背后的维系工作人员其实也是一群更庞大的从业人员。本次主要介绍“铁路机务”。以下由一位铁路机务小哥讲述。 首先简单介绍一下铁路系统(包…

准备我们心爱的IDEA写Jsp

JSP学习 一、准备我们心爱的IDEA new一个项目:New Project --> Next -->Next -->Finsh 二、配置好服务器Tomcat-9.0.30 1.> 在WEB-INF下创建一个Lib包 将jsp-api.jar复制进去,并使其生效 未生效前: 生效过程: 2.>…

VLAN相关知识点

文章目录 前言VLANVLAN数据帧格式QinQ报文封装格式总结 前言 本博客仅做学习笔记,如有侵权,联系后即刻更改 科普: 参考网址 VLAN VLAN(Virtual Local Area Network)即虚拟局域网 是将一个物理的LAN在逻辑上划分成多…

Filebeat+Kafka+ELK搭建

---------------- FilebeatKafkaELK ---------------- 1.部署 ZookeeperKafka 集群 (前面已经配过 20.0.0.101、20.0.0.102、20.0.0.103) https://blog.csdn.net/m0_56509725/article/details/132908696?spm1001.2014.3001.55011.1 配置ELK 在&#xf…

阿里云负载均衡配置只能域名访问

1.选择虚拟服务器组》创建虚拟服务器组 2.点击创建虚拟服务器组》输入虚拟服务器组名称,注意:不要添加服务器,直接点击创建 3.在点击创建虚拟服务器组》输入虚拟服务器组名称》添加服务器(后端服务器)》创建 1.添加监…

WhatsOnChain中的sCrypt合约验证插件

我们很高兴地宣布在 WhatsOnChain 上集成了 sCrypt 智能合约验证插件。该插件允许任何人为已部署的智能合约提交和验证 sCrypt 代码。 智能合约验证 在与智能合约交互之前,用户需要确保智能合约按照其声称的方式行事。理论上,每个人都可以查看合约并验…

脸鉴AI开放平台:轻松上手的人工智能算法

序言 一、提升开发效率工具 1.1封装view窗口 1.2封装常用功能接口 1.3提供基础接口代码块 二、使用介绍 2.1 注册&登录 2.2 新建应用 2.3 下载应用 2.4 安装包介绍 2.5 demo项目 2.6 配置demo 2.7 运行demo 三、使用结果 3.1 摄像头采集人脸添加模板 3.2 实时画面1:N人脸检…