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、召回率提升方案...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
