SpringCloud系列之Hystrix 服务熔断和降级

前言:

        在微服务框架中,每个微服务都是负责某一项单独的任务,整个应用由多个微服务构成,微服务之间的数据通过远程调用实现交互,在整个应用中,可能会出现服务A调用服务B,并等待服务B的结果,服务B调用服务C,服务C调用服务D、E等,这就是所谓的“扇出”,如果此时这个链路上的某个服务出现故障,宕机不可用等,整个应用对服务A的调用会越来越占用资源,从而引起系统崩溃,这就是所谓的”雪崩效应"。为了解决上述问题,人们引入服务熔断、降级等保护性措施,最大限度的保证服务的可用性。

一、概念描述

       服务熔断:当程序达到某个熔断体条件的时候,程序会根据事先设定好的机制给与调用者反馈。

       服务降级:在系统资源有限的时候,为了保证核心功能的运行,减少非核心业务的调用,会临时关闭非核心业务来保证核心的业务正常的开展,在合适的时候在去开放非核心。

 

二、服务熔断

1、在原项目基础上,添加Hystrix依赖

2、在相应的方法上面添加注解@HystrixCommond

SpringCloud系列之Hystrix 服务熔断和降级_第1张图片

通过fallBackMethod属性指定熔断时要执行的方法。

3、启动类上添加注解@EnableHystrix

4、调用方法

SpringCloud系列之Hystrix 服务熔断和降级_第2张图片

在数据库没有该数据的时候也不会抛出异常,而是反馈我们实现设定好的结果。

SpringCloud系列之Hystrix 服务熔断和降级_第3张图片

三、服务降级

1、在上文feign客户端的注解@FeignClient增加属性SpringCloud系列之Hystrix 服务熔断和降级_第4张图片

在整个service方法上添加该属性,作用类似于Spring中的AOP ,作用域为整个service层的所有方法。

2、其中的fallbackFactory属性指定了对应的处理逻辑DeptClientServiceHystrix

DeptClientServiceHystrix要实现FallbackFactory接口,并实现create()方法,这里面的方法及服务在降级时候的处理逻辑。

3、这个时候再调用接口

SpringCloud系列之Hystrix 服务熔断和降级_第5张图片

这里没有任何的处理逻辑,直接调用自定义的降级方法

SpringCloud系列之Hystrix 服务熔断和降级_第6张图片

直接给客户端返回我们处理逻辑。可以理解为该项服务被关闭。

四、HystrixdashBoard监控

       Hystrix也给我们提供了对各个微服务调用的监控。

1、编写hystrix-dashboard类,添加依赖

SpringCloud系列之Hystrix 服务熔断和降级_第7张图片

2、添加配置文件application.yml

这里只要配置一个端口号就可以了。

3、启动类上添加注解@EnableHystrixDashboard

访问<主机名>:端口号/hystrix

SpringCloud系列之Hystrix 服务熔断和降级_第8张图片

出现此界面说明,配置成功了。

4、监控服务调用

下面使用Hystrix来监控服务的调用。

1、给要被监控的服务添加相关依赖

SpringCloud系列之Hystrix 服务熔断和降级_第9张图片

2、启动服务配置监控路径,此处演示的是单个微服务监控

SpringCloud系列之Hystrix 服务熔断和降级_第10张图片

3、点击按钮 Monitor Stream 即可出现监控画面

SpringCloud系列之Hystrix 服务熔断和降级_第11张图片

总结:本文记录了springcloud 服务降级和服务熔断,以及单机环境下的服务监控,后面还将记录网关和配置中心等配置。

你可能感兴趣的:(SpringCloud系列,springcloud,Hystrix)