SpringCloud Alibaba——Sentinel服务熔断与限流(四、@SentinelResource注解)

简介: SpringCloud Alibaba——Sentinel服务熔断与限流(四、@SentinelResource注解)

1.开篇


前面的三篇文章分别介绍了sentinel中的流控规则、降级规则、热点规则,那么这篇文章来说一下关于@SentinelResource注解的作用。

在之前学习Hystrix的时候,有一个核心注解是@HystrixCommand,而阿里的sentinel中的@SentinelResource注解可以理解为@HystrixCommand的升级。

2.项目源码


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

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

下面的测试对应了git仓库中的8401模块。前提是nacos启动成功、sentinel启动成功。


2.1 按资源名称限流

首先访问8401模块controller中的 /byResource 请求。需要先访问一次才可以在sentinel中看到它的信息。


接下来在sentinel的簇点链路中可以看到这个请求,我们来新增流控规则。


该配置的意思是:当1秒内byResource请求访问超过1次,则进行限流。这里我在@SentinelResource注解中配置了blockHandler属性,当触发限流之后,不再走sentinel默认的限流机制(Blocked by Sentinel),而是走我们自定义的限流方法(如下图)。


2.2 按URL地址限流

首先访问8401模块controller中的/rateLimit/byUrl 请求。需要先访问一次才可以在sentinel中看到它的信息。


在簇点链路这里可以看到有两个,如果说是按资源名称限流,就选第一个byUrl;如果是按URL地址限流,就选第二个。

这里配置的仍然是QPS超过1则触发限流,但是/rateLimit/byUrl 请求并没有我们自定义的限流方法,所以此时采用的就是sentinel默认的。


经过上面两个案例(按资源名称限流、按URL地址限流),我们会发现一些问题。


1.    系统默认的,没有体现我们自己的业务要求。

2.    依照现有条件,我们自定义的处理方法又和业务代码耦合在一块,不直观。

3.    每个业务方法都添加一个兜底的,那代码膨胀加剧。

4.    全局统一的处理方法没有体现。

这就引出了我们下面的案例,全局统一处理限流方法。


2.3 自定义限流处理逻辑


首先对应8401模块的controller中的/rateLimit/customerBlockHandler 请求,全局统一处理限流方法对应的是 handler 包下的 CustomerBlockHandler 这个类。


开启8401之后,先进行一次 /rateLimit/customerBlockHandler 请求的访问,然后到sentinel中设置它的限流逻辑信息,只要QPS > 1,则触发我们自定义的限流方法。在@SentinelResource注解中就对应着 blockHandlerClassblockHandler 这两个属性,哪个类中的哪个方法是我们定义的全局限流方法。


上面的所有案例主要介绍了 @SentinelResource注解中的valueblockHandlerClassblockHandler 这三个属性,分别对应的就是服务降级限流的相关配置。


下面的文章将介绍服务熔断,也就是@SentinelResource注解中的fallback属性。

相关文章
|
负载均衡 Dubbo Java
Spring Cloud Alibaba与Spring Cloud区别和联系?
Spring Cloud Alibaba与Spring Cloud区别和联系?
|
人工智能 SpringCloudAlibaba 自然语言处理
SpringCloud Alibaba AI整合DeepSeek落地AI项目实战
在现代软件开发领域,微服务架构因其灵活性、可扩展性和模块化特性而受到广泛欢迎。微服务架构通过将大型应用程序拆分为多个小型、独立的服务,每个服务运行在其独立的进程中,服务与服务间通过轻量级通信机制(通常是HTTP API)进行通信。这种架构模式有助于提升系统的可维护性、可扩展性和开发效率。
4978 2
|
人工智能 安全 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应用,提升业务价值。
1511 4
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
4052 8
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
2000 8
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
4037 1
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
3028 13
Spring Cloud Alibaba:一站式微服务解决方案
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。

热门文章

最新文章

下一篇
开通oss服务