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.mzph.cn/news/86367.shtml

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

相关文章

Springboot整合分页插件pagehelper

首先需要有一定的springbootmybatis的基础&#xff0c;才能使用顺畅 项目结构如下 引入依赖&#xff0c;springboot版本选的是2.7.16版本&#xff0c;jdk选的17&#xff0c; <!--分页插件--> <dependency><groupId>com.github.pagehelper</groupId><…

滑动窗口9.23

1876.长度为3且各字符不同的子字符串 1876. 长度为三且各字符不同的子字符串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/substrings-of-size-three-with-distinct-characters/?envTypelist&envId24zW97w8自写思路&#xff1a; 数组充当哈希表…

useCallBack

React.memo 保证了只有props发生变化时&#xff0c;该组件才会重新渲染 &#xff08;当然组件内部的state 和 context 变化也会导致组件重新渲染&#xff09;&#xff0c;但咱们只要将咱们的子组件包裹&#xff0c;便可以保证Child组件在props不变的情况下&#xff0c;不会重新…

【C语言】指针经典笔试题(上)

C语言的一大重头戏就是指针。 对于指针有一些认识&#xff1a; 1.指针是存放变量的地址&#xff0c;一般说的指针和指针变量是一个概念。 2.地址的单位是字节&#xff0c;大小在不同编译器环境下有所不同&#xff0c;32位机器是4个字节&#xff0c;64位机器是8个字节。 3.数组名…

学会使用Git 和 GitHub

Git 和 GitHub 都是程序员每天都要用到的东西 —— 前者是目前最先进的 版本控制工具&#xff0c;拥有最多的用户&#xff0c;且管理着地球上最庞大的代码仓库&#xff1b;而后者是全球最大 同性交友 代码托管平台、开源社区。 在没有这两个工具时&#xff0c;编程可能是这样的…

Floyd算法基础

弗洛伊德算法(Floyd) 之前介绍了迪杰斯特拉算法(Dijkstra)。具体请看&#xff1a;最短路径算法——简单明了的迪杰斯特拉算法(Dijkstra)。Dijkstra适用于非负权图&#xff0c;并且一次只能从网络中找源点到任何一个节点的最短路径&#xff0c;而Floyd算法的应用更加广泛&#…

【C刷题】day3

一、选择题 1、已知函数的原型是&#xff1a; int fun(char b[10], int *a); &#xff0c;设定义&#xff1a; char c[10];int d; &#xff0c;正确的调用语句是&#xff08; &#xff09; A: fun(c,&d); B: fun(c,d); C: fun(&c,&d); D: fun(&c,d); 【答案…

正则表达式新解

文章目录 是什么&#xff1f;正则用法匹配单个字符匹配一组字符其他元字符核心函数 贪婪匹配和非贪婪匹配正则练习 是什么&#xff1f; 正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊…

算法leetcode|83. 删除排序链表中的重复元素(rust重拳出击)

文章目录 83. 删除排序链表中的重复元素&#xff1a;样例 1&#xff1a;样例 2&#xff1a;提示&#xff1a; 分析&#xff1a;题解&#xff1a;rust&#xff1a;go&#xff1a;c&#xff1a;python&#xff1a;java&#xff1a; 83. 删除排序链表中的重复元素&#xff1a; 给…

ChatGLM GPT原理介绍

图解GPT 除了BERT以外,另一个预训练模型GPT也给NLP领域带来了不少轰动,本节也对GPT做一个详细的讲解。 OpenAI提出的GPT-2模型(https://openai.com/blog/better-language-models/) 能够写出连贯并且高质量的文章,比之前语言模型效果好很多。GPT-2是基于Transformer搭建的,相…

注解,自定义注解

一、什么是注解 二、自定义注解 /*** 自定义注解*/public interface MyAnnotation {String aaa();boolean bbb() default true;String ccc(); }MyAnnotation ( aaa "牛魔王",ccc "sss") public class Test {MyAnnotation ( aaa "aaa",ccc &q…

vue 使用cornerstone解析 .dcm 文件

// 首先下载依赖 npm install --save cornerstone-core cornerstone-math cornerstone-tools hammerjs cornerstone-web-image-loader 下载之后再package.json中可以看到最后图片的依赖// 下面是完成的组件代码 <template><div id"dicom_canvas" refdicom_c…

第75步 时间序列建模实战:多步滚动预测 vol-3(以决策树回归为例)

基于WIN10的64位系统演示 一、写在前面 上两期&#xff0c;我们讲了多步滚动预测的第两种策略&#xff1a; 对于重复的预测值&#xff0c;取平均处理。例如&#xff0c;&#xff08;1,2,3&#xff09;预测出3.9和4.5&#xff0c;&#xff08;2,3,4&#xff09;预测出5.2和6.…

物联网的未来:连接的智能世界

物联网&#xff08;IoT&#xff09;是引领我们走向未来的一项关键技术。它让物品通过互联网进行连接&#xff0c;交流&#xff0c;开创了智能生活新时代。预计到2025年&#xff0c;全球将拥有超过410亿的IoT设备。在对人类生活的每个方面产生影响的同时&#xff0c;物联网也正在…

【ardunio】青少年机器人四级实操代码(2023年9月)

目录 一、题目 &#xff08;一&#xff09;试题原题 &#xff08;二&#xff09;试题解读 1、欢迎区和欢送区范围 &#xff08;1&#xff09;符合习惯 &#xff08;2&#xff09;以门为参考点会有不反应区 &#xff08;3&#xff09;以门为参考点门里门外不反应区不对称…

virtualbox配置ubuntu1804虚拟机相关流程

virtualbox配置ubuntu1804虚拟机相关流程 相关版本能解决的问题安装流程1&#xff1a;新建虚拟机安装流程2&#xff1a;配置虚拟机安装流程3&#xff1a;安装虚拟机系统安装流程4&#xff1a;设置ubuntu 相关版本 virtualbox使用VirtualBox官网下载的6.1.34 r150636 版。ubunt…

深度学习修炼(二)全连接神经网络 | Softmax,交叉熵损失函数 优化AdaGrad,RMSProp等 对抗过拟合 全攻略

文章目录 1 多层感知机&#xff08;全连接神经网络&#xff09;1.1 表示1.2 基本概念1.3 必要组成—激活函数1.4 网络结构设计 2 损失函数2.1 SOFTMAX操作2.2 交叉熵损失函数 3 优化3.1 求导计算过于复杂&#xff1f;3.2 链式法则导致的问题&#xff1f;3.3 梯度下降算法的改进…

利用Python将dataframe格式的所有列的数据类型转换为分类数据类型

一、样例理解 import pandas as pd import numpy as np# 创建测试数据 feature_names [col1 , col2, col3, col4, col5, col6] values np.random.randint(20, size(10,6))dataset pd.DataFrame(data values, columns feature_names)print("转换前的数据为\n",d…

【刷题】2023年第十四届蓝桥杯大赛软件类省赛C/C++大学A组真题

蓝桥杯2023年第十四届省赛真题-平方差 - C语言网 (dotcpp.com) 初步想法&#xff0c;x y2 − z2&#xff08;yz)(y-z) 即xa*b&#xff0c;ayz&#xff0c;by-z 2yab 即ab是2的倍数就好了。 即x存在两个因数之和为偶数就能满足条件。 但时间是&#xff08;r-l&#xff09;*x&am…

监督学习和非监督学习, 半监督学习和增强学习

监督学习 给机器的训练数据拥有“标记”或者“答案”&#xff0c; 也就是又有x、又有y 监督的意思是说我们针对给机器的数据进行了正确答案的划分&#xff0c; 这个正确的答案的本身就被称为监督的信息 比如&#xff1a; 生活中很多学习的过程都是监督学习的过程&#xff0c;…