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次的访问,则直接触发降级。

相关文章
|
2月前
|
监控 虚拟化 Docker
Sentinel监测到了服务,但是实时监控不显示曲线图,应该怎么解决这个问题?
在虚拟机(VMware,IP:192.168.175.100)中部署了Sentinel,使用Docker运行,端口映射为8858。服务的`application.properties`配置指向Sentinel仪表盘(192.168.175.100:8858),客户端IP为物理机IP(192.168.2.2)。然而,cart-service在Sentinel中显示失联且无曲线图,而sentinel-dashboard自身监控正常。
|
2月前
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
668 1
|
1月前
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
3月前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
335 4
|
8月前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
162 1
|
10月前
|
监控 Java Sentinel
使用Sentinel进行服务调用的熔断和限流管理(SpringCloud2023实战)
Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
252 3
|
6月前
|
负载均衡 算法 Java
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
40岁老架构师尼恩分享了关于SpringCloud核心组件的底层原理,特别是针对蚂蚁集团面试中常见的面试题进行了详细解析。内容涵盖了Nacos注册中心的AP/CP模式、Distro和Raft分布式协议、Sentinel的高可用组件、负载均衡组件的实现原理等。尼恩强调了系统化学习的重要性,推荐了《尼恩Java面试宝典PDF》等资料,帮助读者更好地准备面试,提高技术实力,最终实现“offer自由”。更多技术资料和指导,可关注公众号【技术自由圈】获取。
蚂蚁面试:Nacos、Sentinel了解吗?Springcloud 核心底层原理,你知道多少?
|
7月前
|
监控 Java Nacos
SpringCloud基础5——微服务保护、Sentinel
sentinel、雪崩问题、流量控制、隔离和降级、授权规则、规则持久化
SpringCloud基础5——微服务保护、Sentinel
|
9月前
|
监控 Java 应用服务中间件
SpringCloud面试之流量控制组件Sentinel详解
SpringCloud面试之流量控制组件Sentinel详解
428 0
|
10月前
|
Java 开发者 Sentinel
Spring Cloud系列——使用Sentinel进行微服务保护
Spring Cloud系列——使用Sentinel进行微服务保护
100 5
下一篇
oss创建bucket