SpringBoot中--Feign整合Hystrix熔断机制

1.Hystrix简介【个人理解】

Hystrix是一种熔断机制,在接口出现错误并持续调用一定次数和时间后,会阻止接口继续调用,防止级联失败。
Hystrix在服务错误百分比超过了阈值,熔断器开关自动打开,一段时间内停止对该服务的所有请求。
Hystrix请求失败,被拒绝,超时或熔断时执行降级逻辑。
Hystrix可提高系统可用性,容错性,是一个实现了超时机制和断路器模式的工具类库。

2.Hystrix部分配置文件

##熔断超时时间,30秒
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=30000
##隔离策略,默认是Thread, 可选Thread|Semaphore
hystrix.command.default.execution.isolation.strategy=SEMAPHORE
hystrix.command.default.execution.timeout.enabled 执行是否启用超时,默认启用true
hystrix.command.default.execution.isolation.thread.interruptOnTimeout 发生超时是是否中断,默认true
hystrix.command.default.execution.isolation.semaphore.maxConcurrentRequests 最大并发请求数,默认10,该参数当使用ExecutionIsolationStrategy.SEMAPHORE策略时才有效。如果达到最大并发请求数,请求会被拒绝。理论上选择semaphore size的原则和选择thread size一致,但选用semaphore时每次执行的单元要比较小且执行速度快(ms级别),否则的话应该用thread。

3.代码的编写

3–1启动类加注解@EnableHystrix

@EnableHystrix //在启动类上添加@EnableHystrix注解开启Hystrix的熔断器功能。
@SpringBootApplication
public class UserTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(UserTestApplication .class, args);
    }
}

3–1Fegin接口的编写

//表示"user-service"的服务,指定fallback
@FeignClient(value = "user-service", fallback = UserFeginHystrix.class)
public interface UserFegin {
    @RequestMapping(value = "/user/pages")
    MyPage<User> pages(@RequestBody Useruser);
}

3–2Hystrix熔断类的编写

@Slf4j
@Component
public class UserFeginHystrix implements FallbackFactory<UserFegin > {
    @Override
    public MyPage<User> pages(User user) {
        log.info("熔断,默认回调函数");
        return new MyPage<>();
    }
}

你可能感兴趣的:(springboot,Hystrix,java,fegin)