SpringCloud Alibaba——Sentinel服务熔断与限流(五、服务熔断)

简介: SpringCloud Alibaba——Sentinel服务熔断与限流(五、服务熔断)

1.开篇



前面那四篇文章,基本上都是在聊sentinel中有关限流降级的内容,现在该聊聊sentinel中的服务熔断了。

内容大致就是 @SentinelResource 注解中的fallback属性,同时分别整合RibbonOpenFeign

2.项目源码


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

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

下面的测试对应了git仓库中的9003900484这三个微服务模块。前提是nacos启动成功、sentinel启动成功。先对90039004中的请求 /paymentSQL/{id} 进行一次访问。可以正常拿到数据,说明微服务提供者启动成功。


2.1 Sentinel + Ribbon


测试完90039004之后,我们启动84微服务消费者模块,因为nacos默认集成了ribbon,所以这里访问 /consumer/fallback/{id} 自然是一次9003、一次9004,已经实现了负载均衡。


2.1.1 只配置fallback

下面来说服务熔断,就要通过 @SentinelResource 注解中的fallback属性来配置。如果我们什么都不配,注解中只写一个标注服务熔断的唯一名称value属性,那么此时如果出错,反馈给用户的将会是error page,看上去很不友好。

所以这里在 @SentinelResource 注解中进行fallback属性的配置,详情参考仓库代码。配置了fallback之后再访问,由于id=45这两个值我没有添加,所以访问必然出错,但我们配置了fallback属性,此时出错就会走fallback对应的兜底方法。


2.1.2 只配置blockHandler


上面的案例只配置了fallback,可以看到出错之后会走fallback中定义的兜底方法。

下面演示只配置blockHandler的情况。当异常数达到两次之后,未来2秒的时间窗口内,将转向blockHandler中定义的降级限流方法。


2.1.3 fallbackblockHandler都配置

因为blockHandler负责的是在sentinel页面中的降级限流,所以我们这里先对fallback请求方法做一个配置。QPS > 1 则触发blockHandler的降级限流。


id=1,数据存在,正常情况下1s内访问1次,是可以拿到数据的。

下面这张图是我在1s内访问了多次,则满足配置 QPS > 1,触发blockHandler相关的降级限流方法。


id=4,数据不存在,访问之后直接会报 IllegalArgumentException 非法参数异常,而我们的@SentinelResource注解中的fallback属性可以来处理该异常信息,此时不再返回error page,而是返回fallback中定义的兜底方法。


上面的截图1s内只访问了1id=4这个请求,下面我1s内访问多次,此时满足 QPS > 1,直接触发blockHandler相关的降级限流方法。


根据fallbackblockHandler都配置的情况,我们可以得出结论:👇👇👇

·       fallback管理Java中的运行时异常信息,如果出现异常,则走fallback中定义的兜底方法。

·       blockHandler一般需要在sentinel中进行配置,只要你满足了QPS、异常数等这些配置信息,一定走blockHandler中定义的降级限流方法。

·       例如上面的案例,异常1s内出现1次,则走fallback1s内超过1次,则走blockHandler


2.2 Sentinel + OpenFeign


使用Sentinel集成OpenFeign了话,首先要做一些修改。


1.    因为nacos默认继承了ribbon,所以sentinel中可以直接使用ribbon,不用再添加ribbon依赖。但是openfeign不一样,需要pom中额外添加openfeign的依赖。

2.    yml配置文件中,激活sentinelopenfeign的支持。

3.    连接服务提供者的业务接口上需要添加 @FeignClient 注解等相关配置信息。

4.    主启动类上添加@EnableFeignClients 注解表示开启对OpenFeign的支持。


下面就做一个简单的测试了,需要启动84微服务消费者、9004微服务提供者。进行一次访问,可以拿到数据。


此时将9004微服务提供者停掉,再次访问,可以看到84微服务消费者进行了自动降级,也就是找不到微服务提供者9004,会去找连接服务提供者的业务接口,根据业务接口上的 @FeignClient 注解等相关配置信息,找到相应的接口实现类中的降级方法,进行自动降级。

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

热门文章

最新文章