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.rhkb.cn/news/140119.html

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

相关文章

2024年考研教育专业的教育综合考试大纲、样题和往年真题

根据教育部通知,2024年全国硕士研究生招生考试初试定于2023年12月23日至24日,即我们说的2024年考研时间为12月23-24日。距离现在只剩下3个月不到的时间,那么如何让我们在最后三个月内的复习和备考有效且高效呢? 结合很多清北复交研…

湖南麒麟两种修复硬盘方式

1、背景介绍 目前X86平台采用湖南麒麟3.3-3B系统,当遇到文件系统损坏时,可分下面两种情况进行文件系统修复 2、紧急模式下的修复 板子能进入系统,但是进入的是紧急模式,类似下面这种 此时可以直接输入修复命令进行系统修复 xf…

win11 允许使用脚本Set-ExecutionPolicy

目录 Set-ExecutionPolicy RemoteSigned notepad.exe $PROFILE Set-ExecutionPolicy RemoteSigned Set-ExecutionPolicy RemoteSigned 如果报错,执行: Set-ExecutionPolicy -Scope CurrentUser 然后就会提示我们输入,我们把刚刚的 Remot…

C语言每日一题(10):无人生还

文章主题:无人生还🔥所属专栏:C语言每日一题📗作者简介:每天不定时更新C语言的小白一枚,记录分享自己每天的所思所想😄🎶个人主页:[₽]的个人主页🏄&#x1f…

Ubuntu 安装 CUDA 与 OPENCL

前言:最近需要做一些GPU并行计算,因而入坑CUDA和OPENCL,两者都有用到一些,刚好有点时间,同时记录一些学习过程,排掉一些坑,这篇是环境安装篇,基本跟着走就没什么问题,环境…

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础

Qt5开发及实例V2.0-第二十一章-Qt.Quick Controls开发基础 第21章 Qt Quick Controls开发基础21.1 Qt Quick Controls概述21.1.1 第一个Qt Quick Controls程序21.1.2 Qt Quick窗体应用程序的构成 21.2 Qt Quick控件21.2.1 概述21.2.2 基本控件21.2.3 高级控件21.2.4 样式定制 2…

基于MUSIC算法的二维超声波成像matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、基本原理 4.2、数学公式 4.3、实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ..........................................…

比特币的蒙提霍尔问题

把钱放在嘴边 我们在比特币上建立了蒙提霍尔问题模拟。 如果您知道概率谜题的正确答案,不仅炫耀您的数学技能,还会获得金钱奖励。 它完全无需信任地在链上运行。 蒙提霍尔问题 蒙提霍尔问题(三门问题)是一个以蒙提霍尔命名的概率…

力扣-234.回文链表

Idea 用一个数组或者字符串将链表中的值依次存入,然后利用数组遍历方法比较双端元素 AC Code class Solution { public:bool isPalindrome(ListNode* head) {string s "";ListNode* p head;while(p ! nullptr){s.append(to_string(p->val));p p-&g…

SQL 如何提取多级分类目录

前言 POI数据处理,原始数据为csv格式,整理入库至PostGreSQL,本例使用PostGreSQL13版本。 一、POI POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点&am…

程序运行时增加语音提示

目录 前言 一、认识SAPI 二、使用方法 三、测试效果​编辑 总结 前言 在测试过程中为了更高效的提示操作者,在程序执行时增加语音提醒会方便很多,利用微软的SAPI可以很方便的在程序有问题时提示操作者。 一、认识SAPI SpVoice类是支持语音合成(TTS)的核…

ARP协议-介于数据链路层和网络层之间的协议

通过上一篇 IP协议 我们知道 目标IP目标网络 目标主机 🙋‍ 也就是说 必须知道 接收方的接收方的 MAC地址 > 没有MAC地址无法封装 MAC帧 在网络层,我们可以知道目标主机的 IP 地址, 但是 我们不知道对方的MAC地址 。 在同一个网段&…

Tessy 5.0.4

Tessy 5.0.4 Linux 2692407267qq.com,更多内容请见http://user.qzone.qq.com/2692407267/

【Vue+Element-UI】实现登陆注册界面及axios之get、post请求登录功能实现、跨域问题的解决

目录 一、实现登陆注册界面 1、前期准备 2、登录静态页实现 2.1、创建Vue组件 2.2、静态页面实现 2.3、配置路由 2.4、更改App.vue样式 2.5、效果 3、注册静态页实现 3.1、静态页面实现 3.2、配置路由 3.3、效果 二、axios 1、前期准备 1.1、准备项目 1.2、安装…

H.264编码

1.为什么要对视频进行编码 视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像,由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频,这么多连续的图像数据如果不经过编码…

正则表达式:整数

正则表达式:整数 校验字符串,为有效的整数。 校验规则 只能为:整数(包括:正整数、负整数、零) 不能为:非数值型的字符串 不能为:小数 不能为:一连串的0(比…

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口:求一个序列里最大、最小窗口是什么 2. 两个入门题 (1)子数组最大平…

使用 Elasticsearch、OpenAI 和 LangChain 进行语义搜索

在本教程中,我将引导您使用 Elasticsearch、OpenAI、LangChain 和 FastAPI 构建语义搜索服务。 LangChain 是这个领域的新酷孩子。 它是一个旨在帮助你与大型语言模型 (LLM) 交互的库。 LangChain 简化了与 LLMs 相关的许多日常任务,例如从文档中提取文本…

vue3 - Element Plus暗黑模式适配、切换及自定义颜色

GitHub Demo 地址 在线预览 Element Plus 2.2.0 版本开始支持暗黑模式,启用方式参考 Element Plus 官方文档 - 暗黑模式 demo通过Element Plus和VueUse 的 useDark 方法实现具有自动数据持久性的响应式暗黑模式。 安装 npm install element-plus --save npm in…

一个关于 i++ 和 ++i 的面试题打趴了所有人

前言 都说大城市现在不好找工作,可小城市却也不好招人。 我们公司招了挺久都没招到,主管感到有些心累。 我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行。 他说自己问的面试题都很浅显,如果答…