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

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

开发者学堂课程【全面讲解 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没有问题。

相关文章
|
6月前
|
Java 数据库连接 Maven
如何使用Sentinel实现流控和降级
通过以上步骤,你可以使用Sentinel实现应用的流量控制和降级操作,以保护系统在高流量或不稳定情况下的稳定性。欢迎关注威哥爱编程,一起学习成长。
|
6月前
|
监控 测试技术 数据安全/隐私保护
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
如何集成Sentinel实现流控、降级、热点规则、授权规则总结
238 0
|
6月前
|
消息中间件 Java API
一文带你速通Sentinel限流规则(流控)解读
一文带你速通Sentinel限流规则(流控)解读
|
Java 开发者 Sentinel
Sentinel 手动实现限流规则 | 学习笔记
快速学习 Sentinel 手动实现限流规则
238 0
|
监控 Dubbo Linux
微服务 热点流控 规则-授权 系统规则 自定义返回
微服务 热点流控 规则-授权 系统规则 自定义返回
96 0
|
算法 NoSQL JavaScript
服务限流,我有6种实现方式…
服务限流,我有6种实现方式…
|
监控 数据库 数据安全/隐私保护
【Sentinel】流控模式
【Sentinel】流控模式
182 0
【Sentinel】流控模式
|
监控 Sentinel 微服务
【Sentinel】流控效果与热点参数限流
【Sentinel】流控效果与热点参数限流
365 0
【Sentinel】流控效果与热点参数限流
|
Java 测试技术 开发者
流控规则-流控效果|学习笔记
快速学习流控规则-流控效果
197 0
流控规则-流控效果|学习笔记