Spring Cloud Hystrix -- 服务容错

Spring Cloud Hystrix:封装于Netflix Hystrix,[hɪst'rɪks]
功能:服务降级,服务熔断

概念
断路器:circuit breaker
滚动时间窗(统计窗口):rolling window,断路器统计失败率的时间段,默认为最近10秒
半断开状态:在这个状态下,断路器会尝试放行一次服务,这次服务成功则进入闭合状态,否则进入断开状态

Hystrix 项目构建

1、配置Maven依赖

        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.cloud
            spring-cloud-starter-hystrix
        

2、给主类加上注解:@EnableCircuitBreaker
3、在Controller中使用
fallback:服务降级后调用的方法

@RestController
@RequestMapping("/my")
@DefaultProperties(defaultFallback = "defaultFallback")  // 整个Controller默认的fallback
public class MyController {
    @RequestMapping("api1")
    @HystrixCommand      // 当该服务抛出异常 或 超时,用defaultFallback()作为返回,即服务降级
    public String api1() {
        throw new RuntimeException();
    }

    @RequestMapping("api2")
    @HystrixCommand(fallbackMethod = "fallback",commandProperties={
            @HystrixProperty(name="execution.isolation.thread.timeoutInMilliseconds", value="2000")
    })    // 指定fallback,指定超时时间,超时时间默认为1秒
    public String api2() {
        Thread.sleep(3000);
        return "success";
    }

    @HystrixCommand(fallbackMethod = "fallback",commandProperties={
            @HystrixProperty(name="circuitBreaker.enabled", value="true"),   // 开启熔断机制
            @HystrixProperty(name="circuitBreaker.requestVolumeThreshold", value="10"), // 在滚动时间窗内,失败10次,进入断开状态,默认值是20
            @HystrixProperty(name="circuitBreaker.errorThresholdPercentage", value="60"), // 在滚动时间窗内,失败60%,进入断开状态,默认值为50
            @HystrixProperty(name="circuitBreaker.sleepWindowInMilliseconds", value="5000") // 进入断开状态5秒后,进入半断开状态
    })
    @RequestMapping("api3")
    public String api3() {
        throw new RuntimeException();
    }

    public String defaultFallback(){
        return "默认提示";
    }
    public String fallback(){
        return "请稍后重试";
    }
}

Hystrix Dashboard

1、添加Maven依赖

        
            org.springframework.cloud
            spring-cloud-starter-netflix-hystrix-dashboard
        

2、给主类添加注解:@EnableHystrixDashboard
3、访问 localhost:8060/hystrix,可以查看各断路器的统计信息 和 状态

你可能感兴趣的:(Spring Cloud Hystrix -- 服务容错)