SpringCloud Alibaba——Sentinel服务熔断与限流(三、热点规则)

简介: SpringCloud Alibaba——Sentinel服务熔断与限流(三、热点规则)

1.开篇



何为热点:热点即经常访问的数据,很多时候我们希望统计或者限制某个热点数据中访问频次最高的TopN数据,并对其访问进行限流或者其它操作。


兜底方法,分为系统默认和客户自定义两种:之前的case,限流出问题后,都是用sentinel系统默认的提示:Blocked by Sentinel (flow limiting)


我们能不能自定义类似hystrix,某个方法出问题了,就找对应的兜底降级方法?结论:从@HystrixCommand @SentinelResource

2.项目源码


github源码地址:https://github.com/2656307671/SpringCloud-Alibaba-Sentinel

gitee源码地址:https://gitee.com/szh-forever-young/SpringCloud-Alibaba-Sentinel

本次做Sentinel测试的代码请参考上面的仓库。对应的是controller中的 testHotKey 请求方法。

首先新增热点规则:👇👇👇


限流模式只支持QPS模式,固定写死了。(这才叫热点)


@SentinelResource注解的方法参数索引,0代表第一个参数p11代表第二个参数p2,以此类推。

单机阀值以及统计窗口时长表示在此窗口时间超过阀值就限流。上面的抓图就是第一个参数有值的话,1秒的QPS1,超过就限流,限流后调用deal_testHotKey降级方法。


下面我们到浏览器中访问 localhost:8401/testHotKey,后面要加上参数p11秒访问1次是不会出问题的,但是1秒内多次刷新访问,就会出现如下图结果,页面信息为testHotKey方法的降级方法中的内容。


由于在testHotKey方法中,参数p1p2都不是必须的。


如果请求url为:localhost:8401/testHotKey?p1=a,则1秒内多次访问会触发降级。

如果请求url为:localhost:8401/testHotKey?p2=b,则1秒内多次访问不会触发降级,因为我们定义的热点规则参数索引是0,是针对p1的。

如果请求url为:localhost:8401/testHotKey?p1=a&p2=b,则1秒内多次访问会触发降级。只要参数包含p1都符合热点规则。


下面再来说一下参数例外项。


普通情况:当访问url中包含p1的请求超过1秒钟1个之后,达到阈值1后马上被限流。

特例情况:我们期望p1参数当它是某个特殊值时,它的限流值和平时不样。假如当p1的值等于5时,它的阈值可以达到200


则需要在热点规则中进行如下配置:👇👇👇


上图的意思是说,热点规则面对的参数仍然是索引0p1),如果说p1的值为5,则满足参数例外项,此时阈值达到200,也就是说此时1秒内访问达到200次才会触发降级。所以下面在浏览器中访问,就可以得到testHotKey方法的返回值了。

如果说p1的值不是5,那么它的阈值仍然是上面的1,只要1秒内超过1次的访问,则直接触发降级。

相关文章
|
6月前
springCloud之服务降级熔断Hystrix、OpenFeign
springCloud之服务降级熔断Hystrix、OpenFeign
369 0
|
3月前
|
XML 监控 Java
Spring Cloud全解析:熔断之Hystrix简介
Hystrix 是由 Netflix 开源的延迟和容错库,用于提高分布式系统的弹性。它通过断路器模式、资源隔离、服务降级及限流等机制防止服务雪崩。Hystrix 基于命令模式,通过 `HystrixCommand` 封装对外部依赖的调用逻辑。断路器能在依赖服务故障时快速返回备选响应,避免长时间等待。此外,Hystrix 还提供了监控功能,能够实时监控运行指标和配置变化。依赖管理方面,可通过 `@EnableHystrix` 启用 Hystrix 支持,并配置全局或局部的降级策略。结合 Feign 可实现客户端的服务降级。
197 23
|
3月前
|
监控 Java API
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
先简单介绍熔断、降级等核心概念,然后阐述SpringBoot整合Sentinel的实现方式,最后介绍Sentinel在本项目中的应用。
谷粒商城笔记+踩坑(25)——整合Sentinel实现流控和熔断降级
|
4月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
5月前
|
监控 Java 开发者
Spring Cloud中的服务熔断与降级
Spring Cloud中的服务熔断与降级
|
5月前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
6月前
|
自然语言处理 监控 开发者
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
springCloud之Sentinel流量路由、流量控制、流量整形、熔断降级
144 0
|
3月前
|
SpringCloudAlibaba API 开发者
新版-SpringCloud+SpringCloud Alibaba
新版-SpringCloud+SpringCloud Alibaba
|
13天前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
141 13
Spring Cloud Alibaba:一站式微服务解决方案
|
4月前
|
资源调度 Java 调度
Spring Cloud Alibaba 集成分布式定时任务调度功能
定时任务在企业应用中至关重要,常用于异步数据处理、自动化运维等场景。在单体应用中,利用Java的`java.util.Timer`或Spring的`@Scheduled`即可轻松实现。然而,进入微服务架构后,任务可能因多节点并发执行而重复。Spring Cloud Alibaba为此发布了Scheduling模块,提供轻量级、高可用的分布式定时任务解决方案,支持防重复执行、分片运行等功能,并可通过`spring-cloud-starter-alibaba-schedulerx`快速集成。用户可选择基于阿里云SchedulerX托管服务或采用本地开源方案(如ShedLock)
143 1
下一篇
DataWorks