前言:
在微服务框架中,每个微服务都是负责某一项单独的任务,整个应用由多个微服务构成,微服务之间的数据通过远程调用实现交互,在整个应用中,可能会出现服务A调用服务B,并等待服务B的结果,服务B调用服务C,服务C调用服务D、E等,这就是所谓的“扇出”,如果此时这个链路上的某个服务出现故障,宕机不可用等,整个应用对服务A的调用会越来越占用资源,从而引起系统崩溃,这就是所谓的”雪崩效应"。为了解决上述问题,人们引入服务熔断、降级等保护性措施,最大限度的保证服务的可用性。
一、概念描述
服务熔断:当程序达到某个熔断体条件的时候,程序会根据事先设定好的机制给与调用者反馈。
服务降级:在系统资源有限的时候,为了保证核心功能的运行,减少非核心业务的调用,会临时关闭非核心业务来保证核心的业务正常的开展,在合适的时候在去开放非核心。
二、服务熔断
1、在原项目基础上,添加Hystrix依赖
2、在相应的方法上面添加注解@HystrixCommond
通过fallBackMethod属性指定熔断时要执行的方法。
3、启动类上添加注解@EnableHystrix
4、调用方法
在数据库没有该数据的时候也不会抛出异常,而是反馈我们实现设定好的结果。
三、服务降级
1、在上文feign客户端的注解@FeignClient增加属性
在整个service方法上添加该属性,作用类似于Spring中的AOP ,作用域为整个service层的所有方法。
2、其中的fallbackFactory属性指定了对应的处理逻辑DeptClientServiceHystrix
DeptClientServiceHystrix要实现FallbackFactory接口,并实现create()方法,这里面的方法及服务在降级时候的处理逻辑。
3、这个时候再调用接口
这里没有任何的处理逻辑,直接调用自定义的降级方法
直接给客户端返回我们处理逻辑。可以理解为该项服务被关闭。
四、HystrixdashBoard监控
Hystrix也给我们提供了对各个微服务调用的监控。
1、编写hystrix-dashboard类,添加依赖
2、添加配置文件application.yml
这里只要配置一个端口号就可以了。
3、启动类上添加注解@EnableHystrixDashboard
访问<主机名>:端口号/hystrix
出现此界面说明,配置成功了。
4、监控服务调用
下面使用Hystrix来监控服务的调用。
1、给要被监控的服务添加相关依赖
2、启动服务配置监控路径,此处演示的是单个微服务监控
3、点击按钮 Monitor Stream 即可出现监控画面
总结:本文记录了springcloud 服务降级和服务熔断,以及单机环境下的服务监控,后面还将记录网关和配置中心等配置。