Hystrix熔断器
- 熔断的思想介绍
当整个系统的某个条件被触发,就会执行之前设定好的动作,为了保证系统稳定的工作。系统跑在服务器上,要保证N个9的高可用,熔断机制就是一个很好的保证提醒。
- Hystrix在Ribbon中的实现
步骤一:引入依赖
|
<dependency>
|
步骤二:在启动类上使用注解开启Hystrix
|
@EnableDiscoveryClient
|
步骤三:在要进行熔点的客户端方法上设置熔断方法
|
@HystrixCommand(fallbackMethod = "hiError")
|
3.熔断的条件是什么?
1)服务宕机
2)服务抛异常
3)服务超时
比如说服务需要睡3秒,但是客户端的ribbon以及hystrix的默认连接超时时间都是1秒,因此需要通过配置将时间修改成指定值(建议3-5秒),这样才不会因为调用服务的时间过长而造成熔断。
|
#ribbon的全局超时时间的设置
|
半开
# 设置全局方法的超时时间
`hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds`
# 设置时间滑动窗口(默认值是10秒)
`hystrix.command.default.metrics.rollingStats.timeInMilliseconds`
# 当熔断器打开的时候,多长时间内会拒绝所有的请求,直接调用降级方法。过了这个时间,就会进入到半开状态
hystrix.command.default.metrics.rollingStats.sleepWindowInMilliSeconds
在Feign中使用Hystrix
步骤一:开启hystrix
Feign已经集成了Hystrix,默认是关闭状态,需要手动开启
|
feign: |
步骤二:创建要配置熔断的接口的实现类(降级类)
|
@Component
|
步骤三: 在要配置熔断的接口上使用注解,指明之前配好的降级类
|
@FeignClient(value = "hello-spring-cloud-service-admin",fallback = AdminServiceHystrix.class)
|
Feign中的超时时间计算:
Ribbon的超时时间+hystrix的超时时间。