四、SpringCloud 之 Hystrix 框架入门

2018-09-12  本文已影响0人  cqzhangjian

生活中的空气开关设备,当电路发生短路等情况的时候,空气开关设备就会立刻断开电流,保障用电火灾的发生。Hystrix 框架就是实现了类似于 空气开关设备的作用,在多应用程序上级联依赖过程中,级联依赖的某个组件不可用的时候, 就可以使用 Hystrix 来断开依赖,避免整个系统的不可用。起到服务的保护功能。

1.Hystrix 介绍

1.1 Hystrix 概述

Hystrix 的使用提供了 访问调用远程系统、 服务以及第三方的节点出现的延迟或者故障的容错能力

1.2 Hystrix 弹性容器性特点

fallback 流程给 服务不可用的情况下可以给用户一个提示,这种避免了其他服务崩溃问题

2.Hystrix 使用

2.1 创建 服务注册中心工程

2.2 创建 服务提供者工程 (横向扩展两个实例)

2.3 创建 服务调用者工程 (使用 熔断器)

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
    </dependencies>
================================================================================

    @SpringBootApplication
    @EnableEurekaClient
    @EnableCircuitBreaker  //开启断路器功能
    public class ScServiceOrderInvokeApplication {

    
      @Bean
      @LoadBalanced
      public RestTemplate restTemplate() {
        
        return new RestTemplate();
      }
    
    
      public static void main(String[] args) {
        SpringApplication.run(ScServiceOrderInvokeApplication.class, args);
      }
    }


============================================================================
@RestController
public class InvokeOrderServerController {

    @Autowired
    RestTemplate testTemplate;
    
    
    @GetMapping(value="/api/invoke/order/{id}")
    @HystrixCommand(fallbackMethod="fallbackInfo") // 指定 fallback逻辑的回调方法名称
    public String getOrderInfo(@PathVariable String id) {
        return testTemplate.getForObject("http://sc-service-order/order/"+id, String.class);
    }
    
    // 回调方法
    public String fallbackInfo(@PathVariable String id) {
        
        return "服务不可以用,稍后再试..";
    }
    
    
}
注意: 回调方法和接口方法参数和返回值必须保持一致

2.4 源代码下载地址

https://github.com/cqzhangjian/eureka-hystrix.git

上一篇 下一篇

猜你喜欢

热点阅读