流控规则-流控模式|学习笔记

简介: 快速学习流控规则-流控模式

开发者学堂课程【全面讲解 Spring Cloud Alibaba 技术栈(知识精讲+项目实战)第二阶段:流控规则-流控模式】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/684/detail/11874


流控规则-流控模式

 

内容介绍:

一、配置流控模式

二、三种模式演示

 

一、配置流控模式

(1)点击编辑,选择阈值类型,单机阈值改为3

image.png

(2)打开高级选项

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

直接(默认):接口达到限流条件时,开启限流。

关联:关联的资源达到限流条件时,开启限流(适合做应用让步)

链路:当从某个接口过来的资源达到限流条件时,开启限流。

 

二、三种模式演示

1.直接流控模式

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

2.关联流控模式

关联流控模式指的是当指定接口关联的接口达到限流条件时,开始对指定接口开启限流。

(1)更改线程属性。线程改为1,时间改为0.2秒,每秒会有五个请求,意味着QPS已经大于三。

image.png

(2)对 MESSAGE1 的关联资源,MESSAGE2 发出请求。看一下会有什么效果。

(3)流控模式调整为关联之后,关联资源改为/order/message2。

4)刷新 message1 之后被限流,因为 QPS 大于3,就会被限流。

image.png

3.链路流控模式

设置两个 controller,分别为 message1 和 message2,有共同的资源 message,通过对支路进行条件设置,控制链路的流控。

(1)在controller中准备message1和message2

@RestController

@slf4j

Public class OrderController3(

@RequestMapping(“/order/message1”)

Public string message1(){

Return “message1”

@RequestMapping(“/order/message2”)

Public string message2(){

Resturn”message2”;

)

)

(2) 新建一个 order service message

(3) package com.itheima.service.imp1

Import com.alibaba.csp.sentinel.annotation.sentinel resource;

Import crg.springframework.stereotype.service;

@service

Public class orderserviceimpl3

//定义资源 value指定资源名称

@sentinelresource(“message”)

Public string message=() {

Return”message”;

)

(3)从 controller 里边调用 message 方法

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”;

)

(4)启动 older application,分别启动 message1和 message2,都没有问题。

(5)针对 message1进行限流,刷新后发现并没有限流,检查设置无误。

(6)禁止收敛 URL 的入口 context

从1.6.3版本开始,Sentinel Web filter 默认收敛所有 URL 的入门 context,因此链路限流不生效。

1.7.0 版本开始(对应SCA的2.1.1.RELEASE),

官方在 CommonFilter 引入了 WEB_ CONTEXT_UNIFY 参数,用于控制是否收敛 context,将其配置为 false 即可根据不同的URL进行链路限流。

在pom文件中导入,调整。

配置文件中关闭 Sentinel 的 Common filter 实例化

Spring;

Cloud

Sentinel

Filter;

Enable;false

添加配置类,自己构建 Common filter 实例,让配置生效。

public class filterclasscontextconfig(

@bean

Public FilterRegistrationBean sentinelRegistration(){

Registration.setfilter(new commonfilter());

Registration.addurlpatterns(“/*”);

//入口资源关闭聚合Registration.addinitparameter(commonfilter.WEB_CONTEXT_UNIFY;VALUE”false”);

Registration.setname(“sentinelfilter”);

Registration.setorder(1);

Return registration

)

(7)重新启动 Order application,刷新 message1 和 message2,没有任何问题。

(8)点击簇点链路

(9)设置 message1流控规则

(10)刷新,message1链路已经出问题。

image.png

message2没有任何问题。将入口资源改成”message2”。

image.png

“message2”链路出现问题。Message1没有问题。

相关文章
|
安全 索引 算法
分布式唯一ID系列(2)——UUID适合做分布式ID吗
UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
6014 0
|
4月前
|
人工智能 自然语言处理 物联网
 团队效率翻倍秘诀:SOP自动生效的智能方法与SOP标准化工具
SOP工具历经四代技术演进,从纸质文档发展到融合知识图谱与自适应引擎的智能系统。在数字化转型背景下,智能SOP具备情境感知、增强现实指引、自优化流程与联邦合规检查等新能力。系统功能涵盖智能流程构建、动态执行控制与持续优化分析,支持NLP解析、多模态交互与实时合规检查。实施采用四阶段框架,应对跨部门标准不统一、遵循率低等挑战。未来将融合LLM、神经符号系统、量子优化等前沿技术,推动SOP向自我演进与人机协同方向发展。
538 0
|
机器学习/深度学习 并行计算 PyTorch
【机器学习】探索GRU:深度学习中门控循环单元的魅力
【机器学习】探索GRU:深度学习中门控循环单元的魅力
|
设计模式 缓存 Devops
微服务架构最强讲解,那叫一个通俗易懂!
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的
33022 3
微服务架构最强讲解,那叫一个通俗易懂!
|
Linux 语音技术 Python
如何解决kaldi的依赖库mkl安装失败的问题
通过搜索大量的资料,但都发现不太适用。现在将失败的症状和解决方法分享一下,希望能给读者提供一些帮助。
如何解决kaldi的依赖库mkl安装失败的问题
|
Java API C++
Java 8 Stream Api 中的 peek 操作
本文介绍了Java中`Stream`的`peek`操作,该操作通过`Consumer<T>`函数消费流中的每个元素,但不改变元素类型。文章详细解释了`Consumer<T>`接口及其使用场景,并通过示例代码展示了`peek`操作的应用。此外,还对比了`peek`与`map`的区别,帮助读者更好地理解这两种操作的不同用途。作者为码农小胖哥,原文发布于稀土掘金。
602 9
Java 8 Stream Api 中的 peek 操作
|
算法
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
【算法】递归总结:循环与递归的区别?递归与深搜的关系?
498 0
|
安全 Java
【JAVA面试题】什么是对象锁?什么是类锁?
【JAVA面试题】什么是对象锁?什么是类锁?
linux_x64 源码安装ffmpeg
linux_x64 源码安装ffmpeg
237 0