Hystrix review

Hystrix

断路器,实现快速失败,提供了很多失败策略,来防止雪崩,并且提供了监控

1.断路器注解

这里在启动类加@EnableCircuitBreaker或者@EnableHystrix都可以

2.@HystrixCommand

其是作用在consumer上的,在你的调用provider的controller方法上加上该注解

@HystrixCommand(fallbackMethod="funcXXX")

自己写一个funcXXX,返回一个错误的跟provider返回的同类型对象

这样当provider挂了以后,就可以立马返回一个错误对象,不用等待了。

关于@HystrixCommand有一些属性,可以查阅文档进行设置

3.Throwable

关键概念,如果我们的fallback方法执行了,这并不意味着断路器已经打开,这个概念已经要明确,我们需要知道进入到fallback方法的原因,这个时候在我们的fallback方法里面加一个入参Throwable

如果抛了异常,但是我们不想执行fallback方法,一些处理办法,这里不说,需要时查文档

4.深入理解断路器

我们先使用Actuator来检测端点健康状态,/health可以查看,我们的consumer的断路器的情况,我们发现,当关掉provider的时候,断路器依然是UP状态,说明断路器并没有开启,原因就是我们的失败率没有达到阈值(5s内20次请求失败),最后强调一遍,执行了fallback并不意味着断路器开启了,请求超时、失败、被拒绝、断路器开启,都会执行fallback;

如果断路器开启,那么检测到的status:CIRCUIT_OPEN,这样就不会再去请求该provider服务了

5.Feign整合Hystrix

我们使用Feign是使用了其接口,没有方法体,所以我们之前的@HystrixCommand在这里不适用;

如何使用Feign的Hystrix呢?实际上,springcloud已经帮我们整合了Hystrix和Feign

如果想让Feign打开Hystrix支持,在配置文件设置

    feign.hystrix.enable=true

我们在@FeignClient后面加一个属性:fallback="FeignClientFallback.class",然后让这个类也实现UserFeignClient接口,重写其方法即可

6.Feign获取异常信息

这个时候要在@FeignClient的一个fallbackFactroy属性上写一个自定义的类,然后要实现FallbackFactory接口,并且重写一个叫做create的方法,,把日志方法写在fallback方法里面;

同样我们可以根绝不同的Throwable返回不同的错误值

7.禁用Hystrix

需要时看文档,默认是禁止的

8.Hystrix监控

我们使用Actuator监控Hystrix暴露给外的数据来进行监控

我们使用/hystrix.stream就可以查看,前提是加了@HystrixCommand的方法被执行过

9.Hystrix Dashboard可视化监控

Hystrix Dashboard是一个独立的Server

依赖一个hysrix-dashboard的包,配置一个8030端口的server,我们启动项目以后就可以进入这个server,一个可视化界面

我们在url输入刚刚开启的服务端点8010/hystrix.stream

就会生成一个图形化的界面,里面显示了被@HystrixCommand注解的这个方法的各种指标

10.Turbine聚合监控数据

可以将所有的相关的/hystrix.stream端点的数据全部聚合到一个组合的/turbine.stream里面

我们专门写一个springboot项目,添加turbine的依赖,然后启动:

    EurekaServer

    consumer1

    consumer2

    provider

    hystrix-dashboard

    turbine

我们在hystrix-dashboard里面输入turbin的地址,就可以看到一个聚合监控页面

11.mq获取stream

如果我们的turbine无法获取到所有的hystrix-stream,我们可以采用消息中间件的方式拿,具体到时候看文档,有整合包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值