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的替代方案)


相关文章:
SpringCloud Alibaba - Sentinel
接上文SpringCloud Alibaba - Nacos 1.Sentinel 流量防卫兵 1.1 安装与部署 和Nacos一样,它是独立安装和部署的,下载地址https://github.com/alibaba/Sentinel/releases 下载后的jar放到目录 然后配置 启动并访问,用户名密码都是 sentinel 此时就…...
内存泄漏,内存溢出,抽象类和接口,netstat、ping、ifconfig的区别
持续学习是我们必备的技能之一,保持与时俱进,保持行业的敏感度,关注行业发展趋势,了解新技术,加强自己的认知,积极的应对变化 内存泄漏 memory leak 是指程序在申请内存后,无法释放已申请的内…...
TensorFlow安装 ,在原本的虚拟环境下配置Tensorflow.
1.TensorFlow安装 ,在原本的虚拟环境下配置Tensorflowh和pytorch 2.我首先在anaconda的环境下创建了一个tensorflow文件夹 如何先进入D盘,再进入tensorflow文件夹的目录D:cd D:\Anaconda\TensorFlowSoftWarepip install tensorflow如图所示报错解决方法 …...
如何使用HTML, CSS和JavaScript开发一个浏览器打字游戏:从零到一的详细步骤与完整代码教程
第一部分:游戏概述与HTML结构 1. 游戏概述 打字游戏是一个训练用户打字速度和准确性的游戏。用户将会看到一个随机的单词或句子,并在限定时间内尽快准确地键入该单词或句子。每次正确输入,玩家得分,每次输入错误,扣分。这个游戏不仅能够增加用户的打字速度,还可以为学习…...
安卓玩机搞机----不用刷第三方官改固件即可享受“高级设置”的操作 ChiMi安装使用步骤
很多玩友特别喜欢第三方作者修改的带有高级设置的官改包。因为他可以随意修改系统里面的有关设置选项。包括但不限于修改状态栏 显示日期 秒等等的操作。 第三方带高级设置的官改 一般官改带高级设置的类似与 今天给大家分享下不用刷这些官改包即可享受高级设置的操作。 红米…...
代码随想录|392.判断子序列,115.不同的子序列(需要二刷)
392.判断子序列 先用双指针做 class Solution {public boolean isSubsequence(String s, String t) {//双指针int ms.length();int nt.length();int slow0;int i0;int j0;while(i<m&&j<n){if(s.charAt(i)t.charAt(j)){i;System.out.println(i);}j;}return im?…...
Linux——文件系统
✅<1>主页::我的代码爱吃辣 📃<2>知识讲解:Linux——文件系统 ☂️<3>开发环境:Centos7 💬<4>前言:上期我们了解了文件在内存中得组织方式,那么文件在磁盘中…...
《动手学深度学习 Pytorch版》 7.3 网络中的网络(NiN)
LeNet、AlexNet和VGG的设计模式都是先用卷积层与汇聚层提取特征,然后用全连接层对特征进行处理。 AlexNet和VGG对LeNet的改进主要在于扩大和加深这两个模块。网络中的网络(NiN)则是在每个像素的通道上分别使用多层感知机。 import torch fr…...
古代有没有电子元器件?
手机,电脑,电视等等电子产品,无时无刻充斥在我们的生活中,如果有一天突然没有了这些功能多样的电子产品,估计大部分人都会一时之间难以适应。 这就好比正在上网,结果突然被人断了网,导致无网络连…...
log4j2或者logback配置模版实现灵活输出服务名
介绍 在我们使用log4j2或者logback打印日志时,输出的内容中通常是一定要加上服务名的。以log4j2为例: <!--输出控制台的配置--> <Console name"Console" target"SYSTEM_OUT"><!-- 输出日志的格式 --><Patter…...
使用HTTP爬虫ip中的常见误区与解决方法
在如今的互联网时代,为了保障个人隐私和实现匿名浏览,许多人选择使用HTTP爬虫ip。然而,由于缺乏了解和使用经验,常常会出现一些误区。本文将为大家介绍使用HTTP爬虫ip过程中常见的误区,并提供相应的解决方法࿰…...
MySQL学习笔记3
MySQL的源码编译安装: 1、参考MySQL的源码安装官方文档: 2、源码安装定制选项: 3、源码安装三部曲:配置、编译、安装。 4、软件安装包: mysql-boost-5.7.43.tar.gz 5、安装需求: 安装需求具体配置安装目…...
快速掌握ES6
什么是ES6 ES6(ECMAScript 6),也被称为ES2015,是JavaScript的第六个版本,于2015年发布。ES6引入了许多新的语法和功能,旨在提高JavaScript的开发效率和代码质量。 ES6的一些主要特性和改进包括࿱…...
电池厂提供excel电池曲线zcv到mtk电池曲线zcv转换
#encoding:utf8 #电池厂提供excel电池曲线zcv到mtk电池曲线zcv转换 import pandas as pd import openpyxl import math # 读取Excel文件 df pd.read_excel("a55-zcv.xlsx") for j in range(0,10): if(j<3): offset0 #T0~T2 if(j3): offset…...
重写和重载、抽象类和接口
文章目录 前言一、重载与重写1.重载(Overload)(1)条件(2)举例 2.重写(Override)(1)规则(2)举例 3.重载和重写区别 二、抽象类与接口1.抽象类&…...
Untiy UDP局域网 异步发送图片
同步画面有问题,传图片吧 using System.Text; using System.Net.Sockets; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using System.Net; using System; using System.Threading.Tasks; using Sy…...
移动端H5封装一个 ScrollList 横向滚动列表组件,实现向左滑动
效果: 1.封装组件: <template><div class"scroll-list"><divclass"scroll-list-content":style"{ background, color, fontSize: size }"ref"scrollListContent"><div class"scroll…...
Docker一键安装和基本配置
一键安装脚本 注:该脚本需要root权限 curl -sSL https://get.docker.com/ | sh非root组用户赋权 sudo groupadd docker # 若使用一键安装脚本会自动创建这个组,提示已存在 sudo gpasswd -a ${USER} docker # 将当前用户添加到docker组,也…...
MVC设计思想理解和ASP.NET MVC理解
三层模式 三层模式包括:UI层,业务逻辑层,数据访问层,模型层 MVC设计思想和ASP.NET MVC理解 MVC设计思想: MVC的思想就是把我们的程序分为三个核心的模块,这三个模块的详细介绍如下: 模型(Model) :负责封装与引用程序的业务逻辑相关的数据以及对数据的处理方法。模型层有对…...
大模型应用选择对比
大模型应用选择对比 1、知识库对比:dify、fastgpt、langchatchat 2、agent构建器选择:flowise、langflow、bisheng 3、召回率提升方案...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
