Spring Cloud Hystrix的使用

Posted 碰磕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Hystrix的使用相关的知识,希望对你有一定的参考价值。

Spring Cloud Hystrix的使用

Spring Cloud Hystrix

熔断器(断路器)用于保护微服务不雪崩的方法

  • 当有服务调用的情况下才会出现服务器雪崩,所以Hystrix常和OpenFeign,Ribbon一起出现

在OpenFeign中使用Hystrix

编写两个模块

  • 模块1:customer-service-01:用于调用模块2的方法
  • 模块2:rent-car-service-02用于编写方法

模块1所需依赖:springwebeureka-clientopenfeign

模块2所需依赖:springwebeureka-client

模块依赖如上方所示,我就不示例创建项目了

编写(创建)方配置

即模块2:rent-car-service-02

yml:

server:
  port: 8080
spring:
  application:
    name: rent-car-service
eureka:
  client:
    service-url:
      defaultZone: eureka远程地址
  instance:
    hostname: localhost
    instance-id: $eureka.instance.hostname:$spring.application.name:$server.port

启动类:

开启eurekaClient服务

@SpringBootApplication
@EnableEurekaClient

编写方法

创建文件夹controller–>创建方法类RentCarController

@RestController
public class RentCarController 
    @GetMapping("rent")
    public String rent()
        return "租车....";
    

上方就配置好了方法编写模块

调用(使用)方配置

即模块2:rent-car-service-02

yml:

  • feign.hystrix.enabled:true用于开启Hystrix的
server:
  port: 8081
spring:
  application:
    name: customer-service
eureka:
  client:
    service-url:
      defaultZone: eureka远程地址
  instance:
    hostname: localhost
    instance-id: $eureka.instance.hostname:$spring.application.name:$server.port
feign:
  hystrix:
    enabled: true #在cloudF版前是默认开启的

启动类:

开启eurekaClient、feignClient服务

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients

编写Feign接口

创建文件夹feign–>创建接口CustomerRentFeign

然后编写指定服务中的方法接口(方法名一致)

  • value:指定调用服务名
@FeignClient(value = "rent-car-service")
public interface CustomerRentFeign 
    @GetMapping("rent")
    public String rent();

编写方法

创建文件夹controller–>创建方法类CustomerController

@RestController
public class CustomerController 
    @Autowired
    private CustomerRentFeign customerRentFeign;

    @GetMapping("customerRent")
    public String CustomerRent()
        System.out.println("客户来了");
        return customerRentFeign.rent();
    

这样即可实现调用编写方的接口了~

使用熔断器(Hystrix)

解决编写方停了导致服务器报错

在调用方新增依赖

<!--        hystrix依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

feign文件夹下创建hystrix文件夹并编写文件CustomeRentFeignHystrix

继承编写的feign并重写它的方法

@Component
public class CustomeRentFeignHystrix implements CustomerRentFeign 
    @Override
    public String rent() 
        return "服务器雪崩备选方案~";
    

再在feign中指向备选方案

fallback:表示服务挂了指向的备选接口

@FeignClient(value = "rent-car-service",fallback = CustomeRentFeignHystrix.class)
public interface CustomerRentFeign 
    @GetMapping("rent")
    public String rent();

这样即可实现即使服务挂了也不会报错,也能有备选方案~✌

常用配置

以上是关于Spring Cloud Hystrix的使用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud总结22.Hystrix Dashboard的使用(上)

Spring Cloud Hystrix的使用

Spring Cloud Hystrix集成

使用 Spring-Cloud-Config 而不是 Archaius 的 Hystrix 运行时配置?

Spring Cloud 学习——5.使用 feign 的 hystrix 支持

spring cloud 学习 - hystrix 服务熔断处理