我是靠谱客的博主 想人陪画板,最近开发中收集的这篇文章主要介绍SpringCloud-Hystrix 断路器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

**Hystrix断路器:**就是让服务进行隔离,在微服务中服务之间是相互调用的,如果服务之间不能相互隔离,很可能会出现雪崩效应。Hystrix相当于一个保险丝,保护其他服务不受影响。
完整的pom文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>cloud</artifactId>
        <groupId>com.fangjia</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>api</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

        <!-- feign远程调用 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!--Hystrix 依赖 主要是用  @HystrixCommand-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

    </dependencies>

</project>

启动类:

@SpringBootApplication
@EnableFeignClients(basePackages = "com.fangjia")
@EnableHystrix
@EnableEurekaClient
public class FangJiaApiApplication {
    public static void main(String[] args) {
        SpringApplication.run(FangJiaApiApplication.class,args);
    }
}

配置文件中开启hystrix:

feign:
  hystrix:
    enabled: true

可以配置远程调用的日志输出:

@Configuration
public class FeignConfiguration {

    @Bean
    Logger.Level apiLogLevel(){
        /**
         * 日志输出级别
         * NONE:不输出日志
         * BASIC: 输出请求方法的url和请求的响应时间
         * HEADERS: 将BASIC信息和请求头信息输出
         * FULL:输出完整的信息
         */
        return Logger.Level.FULL;
    }
}

完整yml文件:

server:
  port: 8660 #服务端口
eureka:
  client:
    registerWithEureka: true #服务注册开关
    fetchRegistry: true #服务发现开关
    serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址,多个中间用逗号分隔
      defaultZone: http://username:123456@localhost:8661/eureka/  #开启eureka验证之后需要加上用户名密码才能注册上去、
  instance:
    prefer-ip-address: true #将自己的ip地址注册到Eureka服务中
    ip-address: localhost
    instance-id: fangzi-api:8660 #指定实例id
    lease-renewal-interval-in-seconds: 5 #表示EurekaClient 发送心跳给 server端的频率
    lease-expiration-duration-in-seconds: 5 #表示EurekaServer 至上一次收到client的心跳之后,等待下一次心跳的超时时间,在这个时间内若没收到下一次心跳,则移除该 Instance
spring:
  application:
    name: fangzi-api
#配置日志输出级别
logging:
  level:
    com.fangjia.api.client.HelloApiService: DEBUG
feign:
  hystrix:
    enabled: true

建议:将所有的远程调用服务接口放在一个微服务下进行管理,这样调用的时候打成一个jar包引入即可
远程调用接口

/**
 * create by: liyunxing
 * description:
 * create time: 16:22 2019/8/16
 * value:请求的服务名称
 * Path:名称的前缀
 * configuration:定义的日志输出级别的配置类
 */
@FeignClient(value = "fangzi-feign",
        path = "fangzi",
        configuration = FeignConfiguration.class,
        fallback = HelloApiServiceFallBack.class)
@Component
public interface HelloApiService {

    @GetMapping(value = "hello")
    String hello();
}

hystrix断路由类:

@Component
@RequestMapping(value = "fallback/fangjia")//注意路径要和Feign区分
public class HelloApiServiceFallBack implements HelloApiService{

    @Override
    public String hello() {
        return "调用失败";
    }
}

此时如果没有启用其他服务,将会显示“调用失败信”息。
停用hystrix
1.全部停用:在配置文件中将true改为false
2.单个服务停用:在服务中增加如下配置:

    @Bean
    @Scope("prototype")
    public Feign.Builder feignBuilder(){
        return Feign.builder();
    }

最后

以上就是想人陪画板为你收集整理的SpringCloud-Hystrix 断路器的全部内容,希望文章能够帮你解决SpringCloud-Hystrix 断路器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部