hystrix熔断和降级的区别_一、Hystrix熔断器

1. 熔断的思想介绍

当整个系统的某个条件被触发,就会执行之前设定好的动作,为了保证系统稳定的工作。系统跑在服务器上,要保证N个9的高可用,熔断机制就是一个很好的保证提醒。

568128ece620fa8683fe2ba5241886dc.png

2. Hystrix在Ribbon中的实现

步骤一:引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  </dependency>

步骤二:在启动类上使用注解开启Hystrix

@EnableDiscoveryClient
@SpringBootApplication
@EnableHystrix
  public class QfSpringCloudNetflixEurekaConsumerRibbonApplication

步骤三:在要进行熔点的客户端方法上设置熔断方法

@HystrixCommand(fallbackMethod = "hiError")
  public String sayHi(String message){
    //调用服务的提供者并获得结果并返回

    //服务提供者返回的是一个String
String uri = "http://HELLO-SPRING-CLOUD-SERVICE-ADMIN/hi?message="+message;
    return restTemplate.getForObject(uri,String.class);
}
  
  //当熔断被打开,那么此方法会被调用
public String hiError(String message){
    return String.format("您的消息:%s未发送成功,请检查您的网络",message);
}

3.熔断的条件是什么?

1)服务宕机

2)服务抛异常

3)服务超时

比如说服务需要睡3秒,但是客户端的ribbon以及hystrix的默认连接超时时间都是1秒,因此需要通过配置将时间修改成指定值(建议3-5秒),这样才不会因为调用服务的时间过长而造成熔断。

#ribbon的全局超时时间的设置ribbon:ReadTimeout: 4000ConnectTimeout: 4000#设置全局方法的超时时间hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 10000

半开

# 设置全局方法的超时时间

`hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds`

# 设置时间滑动窗口(默认值是10秒)

`hystrix.command.default.metrics.rollingStats.timeInMilliseconds`

# 当熔断器打开的时候,多长时间内会拒绝所有的请求,直接调用降级方法。过了这个时间,就会进入到半开状态

hystrix.command.default.metrics.rollingStats.sleepWindowInMilliSeconds

78622dbda6fcac0bdecfb0e2b47c8dfc.png

3. 在Feign中使用Hystrix

步骤一:开启hystrix

Feign已经集成了Hystrix,默认是关闭状态,需要手动开启

feign:
  hystrix:
    enabled: true

步骤二:创建要配置熔断的接口的实现类(降级类)

@Component
  public class AdminServiceHystrix implements MyService {
    @Override
    public String sayHi(String message) {
        return String.format("您的网络有问题!!!");
    }
}

步骤三: 在要配置熔断的接口上使用注解,指明之前配好的降级类

@FeignClient(value = "hello-spring-cloud-service-admin",fallback = AdminServiceHystrix.class)
  public interface MyService {
  
    @RequestMapping("hi")
    public String sayHi(@RequestParam String message);
  
}

Feign中的超时时间怎么计算:

Ribbon的超时时间+hystrix的超时时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值