Hystrix

三大概念:服务降级,服务熔断,服务限流

开始

1.添加依赖
2.实现业务
3.在启动类中添加注解@EnableCircuitBreaker

1.服务降级
为需要服务降级的方法添加注解,并提供其服务降级方法

@HystrixCommand(fallbackMethod = "payment_TimeoutHandler",commandProperties = {
        @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "3000")
})
public String payment_Timeout(){
    try {
        TimeUnit.SECONDS.sleep(3);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    return "线程: "+Thread.currentThread().getName()+" Processing For Timeout";
}
public String payment_TimeoutHandler(){
    return "sorry, server is busy right now";
}

统一的默认服务降级
1.在类上添加注解

@DefaultProperties(defaultFallback = "payment_dafualtHandler",commandProperties = {
        @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds",value = "1500")
})

2.给需要统一处理的方法添加注解@HystrixCommand
也可以实现feign的接口,实现类中实现各个方法(内为降级代码)
在feign接口中的@FeignClient注解中添加fallback= “实现类.class"

服务熔断(10次请求有6成出错,触发熔断,10秒钟后尝试半开)

//服务熔断
@HystrixCommand(fallbackMethod = "paymentCircuitBreakerHandler",commandProperties = {
        @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),
        @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),
        @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60")
})
public String paymentCircuitBreaker(int id){
    if (id<0){
        int i = 1/0;
    }
    return "success";
}
public String paymentCircuitBreakerHandler(int id){
    return "internal server error ,maybe you can try later";
}

dashboard 监控

1.新建module添加dashboard依赖
2.在被监控的yml中添加

management:
  endpoints:
    web:
      exposure:
        include: hystrix.stream

3.填写链接即可
http://localhost:8005/actuator/hystrix.stream

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值