spring cloud hystrix熔断器

hystrix是一个开源的 容错库。目的是为了防止雪崩效应,防止产生级联失败。


hystirx解决雪崩效应的主要方式

1,服务降级    ----》fallbacke模式(后备模式)

2,线程隔离    ----》壁仓模式(默认)

3,限流           ----》信号量模式

熔断机制触发以上方式


哪里用哪里加起步依赖

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
@EnableCircuitBreaker//开启熔断机制
@SpringBootApplication
@EnableEurekaClient
@EnableCircuitBreaker//开启熔断机制
public class UserConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserConsumerApplication.class,args);
    }

    @Bean
    @LoadBalanced //启动负载均衡
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

在需要使用的那个controller类中

@GetMapping("look")
    //该注解修饰方法,当方法报错的时候进行调用指定的方法
    @HystrixCommand(fallbackMethod = "defaultMethod")
    public User look(){

        User user = restTemplate.getForObject("http://user-provider/user/2", User.class);

        return user;
    }
    //该方法返回值要和被@HystrixCommand注解修饰的返回值一样
    public User defaultMethod(){
        //创建一个默认的user对象
        User user = new User();
        user.setId(0);
        user.setUsername("默认的数据");
        return user;
    }
//修饰到类上,指定默认的降级方法,作用到该类的所有的方法,降级方法不能有参数
@DefaultProperties(defaultFallback = "defaultAllMethod")

然后在对应方法上加上@HystrixCommand标签即可

配置

hystrix:
  command:
    default:
      circuitBreaker:
        #强制打开熔断器,默认是false 注意不要改成ture,不然所有请求都会被降级熔断
        forceOpen: true
        #触发熔断错误比例阈值,默认是50%
        errorThresholdPercentage: 50
        #熔断后休眠时长,默认是5000毫秒
        sleepWindowInMilliseconds: 10000
        #熔断触发最小请求次数,默认值是20
        requestVolumeThreshold: 10
      execution:
        isolation:
          thread:
            #熔断超时设置,默认是1000毫秒
            timeoutInMilliseconds: 2000

可以参考一下这个(14条消息) Spring Cloud配置熔断器_常年被追砍的博客-CSDN博客_springcloud熔断器配置

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值