携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情
一、实现服务降级熔断的目的
在分布式微服务的架构层,服务之间会进行互相调用,比如秒杀服务,会调用商品+库存+订单+积分服务,如果积分服务异常,我们希望整体秒杀服务还能继续使用,而不是整条服务型全部失败,因此旧需要给积分服务设置降级熔断,当积分服务降级熔断的时候,我们只要记录一下请求的相关数据,在后面再进行补救即可。
1-1、创建服务提供端
还依赖之前创建SpringCloudAlibaba父项目,创建子模块服务,父项目中已经添加了springCloud/springBoot/springmvc依赖。
1-1-1、首先在项目中添加Nacos注册中心依赖
1-1-2、修改yml,添加Nacos配置信息
1-1-3、添加服务
添加一个减库存的服务,并且人为创建一个异常服务,这样在调用服务的时候就会发生异常。
1-1-4、访问服务
服务启动成功
查看nacos服务,已经注册成功
1-2、创建服务调用端
还依赖之前创建SpringCloudAlibaba父项目,创建子模块服务,父项目中已经添加了springCloud/springBoot/springmvc依赖。
1-2-1、添加依赖
<!--nacos 服务注册与发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--openfeign依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--sentinel依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
1-2-2、修改yml添加feign对sentinel的支持
1-2-3、添加OpenFeign调用服务提供端接口
需要注意的是,一定要添加fallback参数,并指定服务异常处理兜底方法
1-2-4、添加fallback的处理类
一定要记得给当前类添加@Component注解,并且给熔断降级的服务添加相关处理方法
1-2-5、添加服务消费端方法接口
1-2-6、访问服务消费端接口
如下,服务已经成功降级。