前提
为何需要服务熔断
没有熔断服务会导致一个服务挂掉后,另一个服务也收到影响,也挂掉,以此类推。(故障蔓延)
0.Hystrix防止故障蔓延,通过控制那些访问的远程的服务结点,提供强大的故障和延迟提供强大的容错能力(在consumer访问的provider故障了,或者长时间没有处理请求,此时consumer调用自己的也就是Hystrix提供的方法来处理请求也叫服务降级)
- 如何使用Hystrix
在服务端consumer中添加依赖
在consumer的启动类中,添加使用Hystrix的注解(启动Hystrix)
在consumer中的调用远程服务的方法中添加注解使用注解的参数(fallbackMethod中指定出现需要熔断后调用的方法)
- 服务降级
服务降级就是调用在@Hystrix中指定的方法中,可以获取到异常类(这个过程是spring注入的)如果异常是本地方法的异常,就和java中的异常一样。如何这个异常是远程服务返回的异常是HttpServerErro.....是个统一返回异常。这个异常可以以温柔的形式返回给用户。
- 自定义异常熔断类
继承那个类我忘了,需要可以上网查一查,
重写里面的方法、
类中有一个run();用来调用远程服务的方法(不需要手动调用,spring框架调用)
有一个fallBack();在执行run()的时候出现异常,spring就会调用这个方法;
- Hystrix的仪表盘
使用:创建一个Hystrix仪表盘模块
添加依赖
在主启动类中添加@EnableHystrixDashboard
在properties中设置端口号,需要占用一个端口号
访问ip地址+端口号
在页面中添加需要访问的url地址
(这个一般是运维人员使用的)
可以显示被Hystrix监控的微服务的调用情况