spring cloud(二) 熔断器Hystrix使用

使用场景

在微服务架构中,如果某个节点提供者出现错误.会让调用它的服务消费者出现联级错误,导致整个服务不可用.熔断器就可以让其快速失败,不再远程访问.从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续
执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时.

准备工作

  • 框架以及版本号
框架 版本号
Spring Boot 1.4.0.RELEASE
Spring Cloud Brixton.SR5
  • 实例准备
实例 端口 功能
eureka-server 8761 注册发现服务器(单节点)
user-server 9090、9091 用户管理服务器(多节点,演示均衡负载)
eureka-client 8090 服务消费者,调用用户管理接口(演示用本身不提供服务)

Hystrix的使用

  • pom
  
      org.springframework.cloud
      spring-cloud-starter-hystrix
  
  • 启动类

使用注解@EnableCircuitBreaker开启Hystrix

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class ExampleSpringCloudEurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(ExampleSpringCloudEurekaClientApplication.class, args);
    }

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}
  • feign整合Hystrix
@FeignClient(name = "user-server", fallback = HystrixUserClientFallback.class)
public interface UserServerFeign {

    @RequestMapping(value = "/user", method = RequestMethod.GET)
    String getUser();
}
  • fallback配置类

fallback的作用是当调用的服务器出现错误时,指定回调方法来处理

@Component
@Slf4j
public class HystrixUserClientFallback implements UserServerFeign {

    @Override
    public String getUser() {
        log.info("调用用户接口出现了异常");
        return "get user 1 error";
    }
}

为了方便测试,指定一个返回值

测试

  • 启动注册中心eureka-server
  • 启动服务提供者user-server
  • 启动服务调用者eureka-client
  • 关闭user-server应用
  • eureka-client调用user-server显示日志
2018-09-03 14:23:47.791  INFO 1978 --- [ HystrixTimer-2] c.e.s.c.e.c.h.HystrixUserClientFallback  : 调用用户接口出现了异常

示例代码

https://github.com/gbKidCoding/spring-cloud-example-discovery-eureka.git

参考资料

  • Spring Cloud与Docker微服务架构实战 周立 著

你可能感兴趣的:(spring cloud(二) 熔断器Hystrix使用)