通过Nacos注册中心,实现OpenFeign整合Sentinel并实现服务降级熔断

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第5天,点击查看活动详情

一、实现服务降级熔断的目的

在分布式微服务的架构层,服务之间会进行互相调用,比如秒杀服务,会调用商品+库存+订单+积分服务,如果积分服务异常,我们希望整体秒杀服务还能继续使用,而不是整条服务型全部失败,因此旧需要给积分服务设置降级熔断,当积分服务降级熔断的时候,我们只要记录一下请求的相关数据,在后面再进行补救即可。

1-1、创建服务提供端

还依赖之前创建SpringCloudAlibaba父项目,创建子模块服务,父项目中已经添加了springCloud/springBoot/springmvc依赖。

1-1-1、首先在项目中添加Nacos注册中心依赖

image.png

1-1-2、修改yml,添加Nacos配置信息

image.png

1-1-3、添加服务

添加一个减库存的服务,并且人为创建一个异常服务,这样在调用服务的时候就会发生异常。 image.png

1-1-4、访问服务

服务启动成功 image.png

查看nacos服务,已经注册成功 image.png

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的支持

image.png

1-2-3、添加OpenFeign调用服务提供端接口

需要注意的是,一定要添加fallback参数,并指定服务异常处理兜底方法 image.png

1-2-4、添加fallback的处理类

一定要记得给当前类添加@Component注解,并且给熔断降级的服务添加相关处理方法 image.png

1-2-5、添加服务消费端方法接口

image.png

1-2-6、访问服务消费端接口

如下,服务已经成功降级。 image.png

猜你喜欢

转载自juejin.im/post/7126522269106438174