SpringCloud Alibaba - Sentinel

接上文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.xdnf.cn/news/144122.html

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

相关文章

祝贺莱佛士学生在ASDA2023设计大赛中获得最高奖项

莱佛士一直主张学生们积极参与各种国际知名的设计大赛,也会竭尽所能为学生们的参赛提供途径与指导,本次的American Standard Design Award(ASDA)2023设计大赛也不例外。 ASDA2023设计大赛,推广以用户为中心的设计理念…

为什么要选择Spring cloud Sentinel

为什么要选择Spring cloud Sentinel 🍎对比Hystrix🍂雪崩问题及解决方案🍂雪崩问题🍂.超时处理🍂仓壁模式🍂断路器🍂限流🍂总结 🍎对比Hystrix 在SpringCloud当中支持多…

CSS滚动条详解(::-webkit-scrollbar )

滚动条出现的事件&#xff1a; 当设置定宽或者定高的元素添加overflow:scroll属性&#xff0c;会出现滚动条&#xff0c;但是原生样式的会比较丑影响美观。 <div class"content"><div class"contain"></div> </div>.content {wid…

第十四届蓝桥杯大赛软件赛决赛 C/C++ 大学 B 组 试题 A: 子 2023

[蓝桥杯 2023 国 B] 子 2023 试题 A: 子 2023 【问题描述】 小蓝在黑板上连续写下从 1 1 1 到 2023 2023 2023 之间所有的整数&#xff0c;得到了一个数字序列&#xff1a; S 12345678910111213 ⋯ 20222023 S 12345678910111213\cdots 20222023 S12345678910111213⋯2…

IntelliJ IDEA学习总结(3)—— IntelliJ IDEA 常用快捷键(带动图演示)

一、构建/编译 Ctrl + F9:构建项目 该快捷键,等同于菜单【Build】—>【Build Project】 执行该命令后,IntelliJ IDEA 会编译项目中所有类,并将编译结果输出到out目录中。IntelliJ IDEA 支持增量构建,会在上次构建的基础上,仅编译修改的类。 Ctrl + Shift + F9:重新编…

【论文阅读 09】融合门控自注意力机制的生成对抗网络视频异常检测

2021年 中国图象图形学报 摘 要 背景&#xff1a; 视频异常行为检测是智能监控技术的研究重点&#xff0c;广泛应用于社会安防领域。当前的挑战之一是如何提高异常检测的准确性&#xff0c;这需要有效地建模视频数据的空间维度和时间维度信息。生成对抗网络&#xff08;GANs&…

【2251. 花期内花的数目】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个下标从 0 开始的二维整数数组 flowers &#xff0c;其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi &#xff08;都 包含&#xff09;。同时给你一个下标从 0 开始…

数据结构和算法(8):搜索树(二叉搜索树和AVL树)

查找 所谓的查找或搜索&#xff0c;指从一组数据对象中找出符合特定条件者&#xff0c;这是构建算法的一种基本而重要的操作。其中的数据对象&#xff0c;统一地表示和实现为 词条&#xff08;entry&#xff09; 的形式&#xff1b;不同词条之间&#xff0c;依照各自的 关键码…

Caddy Web服务器深度解析与对比:Caddy vs. Nginx vs. Apache

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

canvas手写签名组件

效果图&#x1f447; 代码不多直接粘在这里 <template><div class"border"><canvasref"canvas"width"800"height"500"class"border-success"tabindex"0"mousedown"onMouseDown"/>&…

二叉树题目:二叉树剪枝

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树剪枝 出处&#xff1a;814. 二叉树剪枝 难度 4 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&#xff0c;返回移除了所有…

如何用思维导图做学习计划?

在我们不断追求个人和职业发展的过程中&#xff0c;学习计划起着至关重要的作用。然而&#xff0c;很多人在制定学习计划时常常感到困惑&#xff0c;不知道如何才能制定一份周全且可行的计划。本文将介绍一种结构化思维的方法&#xff0c;以帮助你制定一份高效的学习计划。 首先…

113. 路径总和ii

力扣题目链接(opens new window) 给定一个二叉树和一个目标和&#xff0c;找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树&#xff0c;以及目标和 sum 22&#xff0c; 在路径总和题目的基础上&…

如何使用Etherscan Remix插件验证智能合约

在Moonbeam上验证合约的方式有很多&#xff0c;使用Etherscan Remix插件是最快、最简单的方式。 此示例中&#xff0c;我们展示如何在Remix上激活Etherscan插件并验证简单的增量智能合约。开始之前&#xff0c;请准备以下内容&#xff1a; MetaMask钱包 存有DEV的账户 将验证…

Linux 线程同步(重要) 互斥量

/*三个窗口卖一百张票 */#include<stdio.h> #include<unistd.h> #include<pthread.h> #include<string.h> int tickets 0; void * sellticket(void * arg) {//卖票usleep(7000);while(tickets < 100) {printf("%ld 正在卖第 %d 张票\n",…

34.CSS魔线图标的悬停效果

效果 源码 index.html <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Icon Fill Hover Effects</title> <link rel="stylesheet" h…

基于AIOps实现智慧园区极简IT运维

随着物联网、云平台、大数据、人工智能等技术的发展&#xff0c;并逐步投入到智慧园区的建设&#xff0c;传统园区数字化转型加快。园区的形式包括产业园区、教育园区、制造业园区、科研园区、社区等等&#xff0c;园区形态不断演进和发展&#xff0c;园区网承载的对象和业务也…

通过http发送post请求的三种Content-Type分析

通过okhttp向服务端发起post网络请求&#xff0c;可以通过Content-Type设置发送请求数据的格式。 常用到的三种&#xff1a; 1&#xff09;application/x-www-form-urlencoded; charsetutf-8 2&#xff09;application/json; charsetutf-8 3&#xff09;multipart/form-dat…

go语言unsafe.Pointer与uintptr

以下内容来源go语言圣经 1、unsafe.Pointer&#xff0c;相当于c语言中的void *类型的指针&#xff0c;如果需要运算需要转成uintptr类型的指针 2. uintptr uintptr是一个无符号的整型&#xff0c;它可以保存一个指针地址。 它可以进行指针运算。 uintptr无法持有对象, GC不把…

麒麟信安组织开展国产操作系统技术赋能专题培训

近日&#xff0c;为学习国产操作系统基本概念、使用与运维知识&#xff0c;应对用户单位内部信息系统国产化需求&#xff0c;来自国营洛阳丹城无线电厂的运维工程师们走进麒麟信安&#xff0c;进行了为期一周的操作系统课程学习。 针对客户此次培训需求&#xff0c;结合学员实…