Sentinel 手动实现限流规则 | 学习笔记

简介: 快速学习 Sentinel 手动实现限流规则

开发者学堂课程【精通 Spring Cloud AlibabaSentinel 手动实现限流规则学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/634/detail/10137


Sentinel 手动实现限流规则


限流配置有两种方案:

1. 手动使用代码配置  纯代码/注解的形式

2. Sentinel 控制台形式配置

3. 默认情况下 Sentinel 不对数据持久化,需要自己独立持久化。

实现的步骤:

创建我们的流控规则/限流规则,然后再被映射地址去引用。

@Reques tMapping(" /orderToMember")

public String orderToMember() {

return "orderToMember";

}

代码:

//限流规则名称

private static final String GETORDER_ KEY =‘’getOrder ;

@RequestMapping( "/orderFeignToMember")

public String orderFeignToMember() {

String result = memberServiceFeign. getUser( userld: 1);

return "我是订单服务调用会员服务的接口,返回结果" + result;

}

@RequestMapping("/")

public String order() { return "订单服务"; }

@Reques tMapping( "/orderToMember"){

Entry entry = nu11;

try{

entry = SphU. entry(GETORDER_ KEY);

returnorderToMember接口”

}catch (Exception e){

//限流的情况就会进入到 Exception

return“当前访问人数过多,请稍后重试!”

} finally {

//SphU.entry(xxx)需要与 entryexit()成对出现否则会导致调用链记录异常

if (entry != null){

entry.exit();

}

}

}

//创建我们的限流规则

public String initFlowQpsRule() {

List<FlowRule> rules = new ArrayList<FlowRule>();

FlowRule rule1 = new F1owRule();

rule1. setResource( GETORDER_ KEY);

// QPS 控制在1,资源名称

rule1. setCount(1);

// QPS 限流

rule1. setGrade(RuleConstant. FLOW_ GRADE_ QPS);

rule1. setLimitApp("default" );

rules .add(rule1);//默认限流名称数

FlowRu1eManager . LoadRules(rules);

return....限流配置初始化成功....

}

}

@RequestMapping("/initFlowQpsRule")

public String initFlowQpsRule()  {

List<FlowRule>  rules = new ArrayList<FlowRule>();FlowRule rule1=newFlowRule();rule1.setResource(GETORDER_KEY);//QPS 控制在2以内

rule1.setCount(1);//QPS 限流

rule1.setGrade(RuleConstant.FLOW_GRADE_QPS); rule1.setLimitApp("default");

rules.add(rule1);

FlowRuleManager.loadRules(rules);

return "....限流配置初始化成功..";

}

以上代码需要依赖的配置:(放入到项目当中)

<dependency>

roupId>ore. sprineframework.c loud</groupId>

<artifactId>spring-c loud-salibaba- sent inel</artifactId>+

<version>0.2.2. REL EASE</version>+

</dependency>

<dependency>

<groupId>org.springfranework.boot</gcoupd>

<artifactId>spring- boot - starter- actuator</ artifactId>:

</dependency>

先去加载匹配到规则,把规则初始化内置里面,初始化完成后再刷新。

要想每秒钟最多有10个请求访问,把 rule1. setCount(1);

// QPS 限流   改为   rule1. setCount(10);

相关文章
|
6月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
168 3
|
5月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
7月前
|
Java 数据安全/隐私保护 Sentinel
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
微服务学习 | Spring Cloud 中使用 Sentinel 实现服务限流
|
7月前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
920 0
|
7月前
|
SpringCloudAlibaba 监控 Java
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
SpringCloud Alibaba Sentinel实现熔断与限流--学习笔记
122 0
|
7月前
|
监控 数据挖掘 索引
深度剖析Sentinel热点规则
深度剖析Sentinel热点规则
230 1
|
7月前
|
监控 Java API
解密Sentinel中流控规则的阀值奥秘
解密Sentinel中流控规则的阀值奥秘
70 0
|
7月前
|
监控 算法 Java
sentinel 服务限流工作原理
sentinel 服务限流工作原理
|
7月前
|
监控 Java API
Sentinel熔断限流真的太丝滑了
Sentinel熔断限流真的太丝滑了
191 0
|
4月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
99 1