springCloud学习【二】:服务熔断降级:Hystrix容错框架【实例】

代码地址

☆本文章的代码地址——需单独下载
★项目完整代码——gitee地址:不断更新
本文基于上一篇文章Demo代码编写

服务熔断、雪崩、降级等概念

根据其他的Blog和官网解释自己总结:

熔断:当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用
雪崩:一个服务的失败,导致整条产业链的服务都失败的现象
降级:服务降级有很多种降级方式,如开关降级、限流降级、熔断降级。熔断理解为降级的一种方式

降级:举例:A服务调用B服务,但是B服务因为某些原因挂掉了,那么A继续调用就会报错,这种情况下,让A不要去调用B服务了,直接掉自己的逻辑实现业务逻辑,理解为降级的手段之一。
降级:举例:还是A调B,B响应太慢了,让B停掉自己的一些不重要的业务逻辑,来增加B响应A的速度
降级:熔断理解为降级的一种方式。也是本文要进行学习的内容

Hystrix解释

网上一堆堆解释,这里只说它是个啥
Hystrix是Netflix开源的一款容错框架,同样具有自我保护能力。完了…?嗯,完了,就是个这东西。
本文要学习的便是这个玩意

服务消费添加熔断机制【Ribbon+restTemplate方式消费服务时】

  1. 在基于Ribbon的消费者模块的pom.xml中添加依赖
    在这里插入图片描述
  2. 启动类增加注解@EnableHystrix
    在这里插入图片描述
  3. 消费服务的地方增加注解@HystrixCommand(fallbackMethod = "err" )err为调用错误时去执行什么方法
    在这里插入图片描述
  4. 依次启动注册中心,三个服务提供者,一个消费者。registry-service-service1-service2-consume
    现在的端口我的依次是 8770-8771-8775-8774-8772
    然后postMan发送请求测试
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    可见三个服务都正常
    在这里插入图片描述
    然后停止掉8774的服务提供者,再次测试
    在这里插入图片描述
    在这里插入图片描述
    可见,没有报错,而是执行了另一个方法,达到熔断效果,也称之为服务降级,A不再去调用B,而是执行了本项目的err方法。

服务消费添加熔断机制【Feign方式消费服务时】

  1. Feign自带熔断器的功能,不过需要手动配置开启,再feign消费端配置文件配置,如下图feign.hystrix.enabled:true·在这里插入图片描述
  2. 然后上一章说的,使用feign消费服务不需要实现类接口,现在要进行服务降级,就需要实现该接口了,如下图
    在这里插入图片描述
  3. 修改IService.java接口文件,注解后面增加,fallback=IServiceImpl.class,标识调用服务失败时去执行什么
    踩坑:如果使用feign方式消费服务,同时要进行服务降级的操作,那么@RequestMapping就不能加在类上了。直接改为写在方法上请求全路径,否则会包错:There is already 'XXXXX' bean method在这里插入图片描述
    4.依次启动注册中心,三个服务和基于feign的服务消费者,请求没有问题之后,停掉一个服务。
    测试如下
    在这里插入图片描述
    在这里插入图片描述
    有错了, 返回了实现类的消息
    在这里插入图片描述

结束:总结写在前面了更详细的总结写在Demo项目里面,请下载,不要积分,点个赞即可

未完待续——如果看到这里了,(●'◡'●)该去点赞了啊喂

有空写完其他的服务相关的再来补充,啥玩意路由啊,断路器啊,消息总线啊,服务链路啊啥的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值