Spring Cloud Alibaba-Sentinel规则

news2024/10/7 10:22:06

1 流控规则

流量控制,其原理是监控应用流量的QPS(每秒查询率) 或并发线程数等指标,当达到指定的阈值时
对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

  • 第1步: 点击簇点链路,我们就可以看到访问过的接口地址,然后点击对应的流控按钮,进入流控规则配置页面。新增流控规则界面如下:

 资源名:唯一名称,默认是请求路径,可自定义
针对来源:指定对哪个微服务进行限流,默认指default,意思是不区分来源,全部限制
阈值类型/单机阈值:
QPS(每秒请求数量): 当调用该接口的QPS达到阈值的时候,进行限流
线程数:当调用该接口的线程数达到阈值的时候,进行限流
是否集群:暂不需要集群
接下来我们以QPS为例来研究限流规则的配置。

1.1 简单配置

我们先做一个简单配置,设置阈值类型为QPS,单机阈值为3。即每秒请求量大于3的时候开始限流。

接下来,在流控规则页面就可以看到这个配置。

 然后快速访问 /order/message1 接口,观察效果。此时发现,当QPS > 3的时候,服务就不能正常响应,而是返回Blocked by Sentinel (flow limiting)结果。

 1.2 配置流控模式

点击上面设置流控规则的编辑按钮,然后在编辑页面点击高级选项,会看到有流控模式一栏。

 sentinel共有三种流控模式,分别是:

  • 直接(默认):接口达到限流条件时,开启限流
  • 关联:当关联的资源达到限流条件时,开启限流 [适合做应用让步]
  • 链路:当从某个接口过来的资源达到限流条件时,开启限流

下面呢分别演示三种模式:

  • 直接流控模式

直接流控模式是最简单的模式,当指定的接口达到限流条件时开启限流。上面案例使用的就是直接流控模式。

  • 关联流控模式

关联流控模式指的是,当指定接口关联的接口达到限流条件时,开启对指定接口开启限流。
第1步:配置限流规则, 将流控模式设置为关联,关联资源设置为的 /order/message2。

 第3步:通过postman软件向/order/message2连续发送请求,注意QPS一定要大于3

 第4步:访问/order/message1,会发现已经被限流

  •  链路流控模式

链路流控模式指的是,当从某个接口过来的资源达到限流条件时,开启限流。它的功能有点类似于针对来源配置项,区别在于:针对来源是针对上级微服务,而链路流控是针对上级接口,也就是说它的粒度更细。
第1步: 编写一个service,在里面添加一个方法message

@Service
public class OrderServiceImpl3 {
  @SentinelResource("message")
  public void message() {
    System.out.println("message");
 }
}

第2步: 在Controller中声明两个方法,分别调用service中的方法m

@RestController
@Slf4j
public class OrderController3 {
  @Autowired
  private OrderServiceImpl3 orderServiceImpl3;
  @RequestMapping("/order/message1")
  public String message1() {
    orderServiceImpl3.message();
    return "message1";
 }
  @RequestMapping("/order/message2")
  public String message2() {
    orderServiceImpl3.message();
    return "message2";
 }
}

第3步: 禁止收敛URL的入口 context

 (1) 暂时将SpringCloud Alibaba的版本调整为2.1.1.RELEASE

<spring-cloud-alibaba.version>2.1.1.RELEASE</spring-cloud-alibaba.version>

(2) 配置文件中关闭sentinel的CommonFilter实例化

spring:
cloud:
sentinel:
filter:
enabled: false

(3) 添加一个配置类,自己构建CommonFilter实例

package com.itheima.config;
import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterContextConfig {
  @Bean
  public FilterRegistrationBean sentinelFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    registration.setFilter(new CommonFilter());
    registration.addUrlPatterns("/*");
    // 入口资源关闭聚合
    registration.addInitParameter(CommonFilter.WEB_CONTEXT_UNIFY, "false");
    registration.setName("sentinelFilter");
    registration.setOrder(1);
    return registration;
 }
}

第4步: 控制台配置限流规则

 第5步: 分别通过 /order/message1 和 /order/message2 访问, 发现2没问题, 1的被限流了

1.3 配置流控效果

  • 快速失败(默认): 直接失败,抛出异常,不做任何额外的处理,是最简单的效果
  • Warm Up:它从开始阈值到最大QPS阈值会有一个缓冲阶段,一开始的阈值是最大QPS阈值的1/3,然后慢慢增长,直到最大阈值,适用于将突然增大的流量转换为缓步增长的场景。
  • 排队等待:让请求以均匀的速度通过,单机阈值为每秒通过数量,其余的排队等待; 它还会让设置一个超时时间,当请求超过超时间时间还未处理,则会被丢弃。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/941574.html

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

相关文章

QML Book 学习基础2(基本元素控件)

目录 矩形&#xff08;Rectangle&#xff09; 文本元素 鼠标键盘交互 布局元素 矩形&#xff08;Rectangle&#xff09; 矩形项用于用纯色或渐变填充区域&#xff0c;和/或提供矩形边框。需要注意如果长宽没有设置&#xff0c;是无法看到矩形的 Rectangle {id: rect1x: 12; …

上位机采集8通道模拟量模块数据

模拟量模块和上位机的配合使用可以实现对模拟量数据的采集、传输和处理。下面是它们配合使用的一般步骤&#xff1a;1. 连接模拟量模块&#xff1a;将模拟量模块与上位机进行连接。这通常涉及将模拟量模块的输入通道与被监测的模拟信号源连接起来&#xff0c;如传感器、变送器等…

css元素定位:通过元素的标签或者元素的id、class属性定位,还不明白的伙计,看这个就行了!

前言 大部分人在使用selenium定位元素时&#xff0c;用的是xpath元素定位方式&#xff0c;因为xpath元素定位方式基本能解决定位的需求。xpath元素定位方式更直观&#xff0c;更好理解一些。 css元素定位方式往往被忽略掉了&#xff0c;其实css元素定位方式也有它的价值&…

设计模式入门笔记

1 设计模式简介 在IT这个行业&#xff0c;技术日新月异&#xff0c;可能你今年刚弄懂一个编程框架&#xff0c;明年它就不流行了。 然而即使在易变的IT世界也有很多几乎不变的知识&#xff0c;他们晦涩而重要&#xff0c;默默的将程序员划分为卓越与平庸两类。比如说&#xff…

游戏测试工程师的职业发展前景怎么样?

软件测试是一个看似入门简单&#xff0c;门槛极低&#xff0c;薪资也还不错的的行业&#xff0c;但如果你开始向这个方向发展&#xff0c;你就发现并非如此。实际情况是初级功能岗位薪资偏低&#xff0c;而且以外包公司居多&#xff0c;高级岗位薪资非常可观&#xff0c;但对技…

震动分析国标GB/T 19873.3-2019/ISO 13373-3:2015笔记

1.国家标准 1.1震动测量 现行国家标准是&#xff1a;GB/T 19873.2-2009 机器状态监测与诊断 振动状态监测 第2部分&#xff1a;振动数据处理、分析与描述 它的起草人&#xff1a; 郑州机械研究所。西安热工研究院有限公司。东南大学。 主要起草人 韩国明 、张学延 、傅行…

2023-08-28 C语言函数一定要在.h文件中声明吗

老林的C语言新课, 想快速入门点此 <C 语言编程核心突破> C语言函数一定要在.h文件中声明吗 前言一、三种情况下的函数声明与定义策略单文件小练习多文件工程需要在多个文件调用的函数不需要跨文件调用的函数 二、示例需要在多个文件调用的函数:不需要跨文件调用的函数: …

一起参与开源,志愿者招募中!IT、翻译、新媒体、设计等

Hi 同学&#xff0c;你是不是专注某个领域&#xff0c;想找机会&#xff0c;积累开源软件方面的早期经验&#xff1f;你来对地方啦。请阅读本文&#xff0c;了解为什么要加入 ONLYOFFICE&#xff0c;做出贡献&#xff0c;以及如何做到。 贡献开源&#xff0c;福利多多 为开源项…

2023全国大学生数学建模竞赛B题思路模型代码

目录 一.思路模型见文末名片&#xff0c;比赛开始9.7晚上第一时间更新 二.国赛常用算法之随机森林 3.思路获取见此 一.思路模型见文末名片&#xff0c;比赛开始9.7晚上第一时间更新 二.国赛常用算法之随机森林 # -*- coding: utf-8 -*- """ author: Administ…

自动化运维工具-----Ansible入门详解

目录 一.Ansible简介 什么是Ansible&#xff1f; Ansible的特点 Ansible的架构 二.Ansible任务执行解析 ansible任务执行模式 ansible执行流程 ansible命令执行过程 三.Ansible配置解析 ansible的安装方式 ansible的程序结构&#xff08;yum安装为例&#xff09; ansibl…

11. 排兵布阵

目录 题目 思路&#xff08;贪心快排&#xff09; 注意事项 C代码 题目 排兵布阵 Description 总所周知&#xff0c;韩信是一位神勇的军事家。某日夜幕&#xff0c;敌方突然来袭&#xff0c;韩信作为塞外将帅吹响紧急的号角。各个帐内的士兵听见号角立即集合&#xff0c;站…

Python爬虫异常处理实践:处理被封禁和网站升级问题

在这篇文章中&#xff0c;我们将一起探讨Python爬虫异常处理实践&#xff0c;特别关注处理被封禁和网站升级问题。让我们一起来看看如何解决这些问题&#xff0c;提高我们爬虫程序的稳定性和可靠性。   首先&#xff0c;我们要了解为什么会遇到这些问题。网站封禁爬虫的原因主…

(六)k8s实战-存储管理

一、Volumes 1、HostPath 【使用场景&#xff1a;容器目录 挂载到 主机目录】 【可以持久化到主机上】 将节点上的文件或目录挂载到 Pod 上&#xff0c;此时该目录会变成持久化存储目录&#xff0c;即使 Pod 被删除后重启&#xff0c;也可以重新加载到该目录&#xff0c;该目…

最小化安装移动云大云操作系统--BCLinux-for-Euler-22.10-everything-x86_64-230316版

CentOS 结束技术支持&#xff0c;转为RHEL的前置stream版本后&#xff0c;国内开源Linux服务器OS生态转向了开源龙蜥和开源欧拉两大开源社区&#xff0c;对应衍生出了一系列商用Linux服务器系统。BCLinux-for-Euler-22.10是中国移动基于开源欧拉操作系统22.03社区版本深度定制的…

【halcon深度学习】图像分割数据集格式的转换

前言 目前用于**图像分割的**数据集&#xff0c;我目前接触到的用的比较多的有&#xff1a; 1 PASCAL VOC 2 COCO 3 YOLO 4 Halcon自己的格式&#xff08;其实就是Halcon字典类型&#xff09;当前我涉及到计算机视觉中的数据集格式有&#xff0c;PASCAL VOC、COCO 和 YOLO 用于…

天气插件和antv图表组件库的使用

目录 天气插件 antv组件库 特性 数据映射 data xField yField 图形样式 point state 图表组件 label tooltip 图表交互 添加交互 天气插件 网站:天气预报代码_天气预报插件_免费天气预报代码(插件)调用——天气网 (tianqi.com) 挑选想要的样式&#xff0c;点击 …

暴力递归转动态规划(一)

前两篇帖子介绍了暴力递归的过程&#xff0c;总的来说就是利用自然智慧不断的尝试。这篇文章则会介绍如何将暴力递归转成动态规划。 斐波那契数列 斐波那契数列一定都不陌生&#xff0c;规定第一列的值是1&#xff0c;第二列的值是2的话&#xff0c;那第七列的值就是13&#x…

2023Win11安装Oracle19c教程

2023Win11安装Oracle19c教程 一、下载安装二、安装三、配置四、navicat连接oracle 一、下载安装 进入官网&#xff0c;选择产品-Oracle DataBase&#xff0c;点击进入下载界面 点击跳转下载 选择19c进行下载 选择windows64位版本下载 登录账号后开始下载&#xff0c;等待下载…

1.3.1背包模型(一)

01背包 划分依据&#xff1a;依靠“最后一步”来划分 完全背包 多重背包 完全背包&#xff1a;求所有前缀的最大值 多重背包&#xff1a;求滑动窗口内的最大值 1.多重背包问题 III 有 N N N种物品和一个容量是 V V V的背包。 第 i i i种物品最多有 s i s_{i} si​件&…

激活函数总结(二十二):激活函数补充(Soft Exponential、ParametricLinear)

激活函数总结&#xff08;二十二&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Soft Exponential激活函数2.2 ParametricLinear激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、ELU、SE…