美文网首页
尚学堂109天总结+Hystrix进阶

尚学堂109天总结+Hystrix进阶

作者: 人间草木为伴 | 来源:发表于2019-12-09 22:07 被阅读0次

    109天
    行百里者半九十,想要在一个行业里成为顶尖人才,一定满足一万小时定律,要想学好JAVA,需要持之以恒不断地努力,每天都要勤思考+善于询问+解决问题!

    知识温故而知新>>>>>>

    今天学到的知识>>>>>>

    1. 解决灾难性雪崩效应-隔离机制-信号量隔离-信号量隔离处理

    1. 什么是信号量隔离?
    image
    1. 信号量隔离参数的作用是什么?
    image

    2. 线程池隔离和信号量隔离的区别

    1. 线程池隔离与信号量隔离有什么区别?
    image
    1. 什么情况下使用线程池隔离?什么情况下使用信号量隔离?
    image

    7. 创建Turbine聚合服务器

    1. Turbine的作用是什么?
    image

    10. 采用RabbitMQ收集数据监控-设计原理与服务搭建

    1. 使用RabbitMQ收集数据的原理是什么?并绘制图形
    image
    1. 描述RabbitMQ收集监控数控的详细步骤

    习题的情况总结>>>>>>

    Feign 的服务降级处理

    1.2修改配置文件开启对 hystrix 的支持

    spring.application.name=springcloud-eureka-consumer-feign-f allback 
    server.port=9020 
    #设置服务注册中心地址,指向另一个注册中心 
    eureka.client.serviceUrl.defaultZone=http://user:123456@eur eka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/ 
    #Feign 默认是不开启  Hystrix 的。默认为:false 
    feign.hystrix.enabled=true 
    

    1.3修改 ProductConsumerService

    @FeignClient(name="ego-product-provider",fallback=ProductSe rviceFallback.class) 
    public    interface    ProductConsumerService { 
    //查询所有商品 
    @RequestMapping(value="/product/findAll",method=RequestMeth od.GET) 
    public    List<Product> findAll(); 
    } 
    

    1.4添加 ProductServiceFallback 类

    @Component 
    public    class    ProductServiceFallback implements ProductConsumerService { 
    //能够返回托底数据的  fallback方法 
    @Override 
    public    List<Product> findAll() { 
    List<Product> list = new    ArrayList<>(); 
    list.add(new    Product(-1, "我是托底数据")); 
    return    list; 
    } 
    }
    

    1.5修改 ProductController

    /** 
    * Product Consumer 服务 
    * @author    Administrator 
    * 
    */ 
    @RestController 
    public    class    ProductController { 
    @Autowired 
    ProductConsumerService consumerservice; 
    /** 
    * Consumer中的查询所有商品的方法 
    * @return 
    */ 
    @RequestMapping(value="/list",method=RequestMethod.GET) public    List<Product> getAll(){ 
    return    this.consumerservice.findAll(); 
    } 
    }
    

    降级后的异常记录

    2.2添加 ProductServiceFallbackFactory 类

    @Component 
    public class ProductServiceFallbackFactory implements FallbackFactory<ProductConsumerService> { 
    Logger logger = 
    LoggerFactory.getLogger(ProductServiceFallbackFactory.class); @Override 
    public  ProductConsumerService create(final  Throwable arg0) { 
    return    new    ProductConsumerService() { 
    //能够返回托底数据的  fallback方法 
    @Override 
    public    List<Product> findAll() { 
    logger.warn("Fallback Exception: ",arg0); 
    List<Product> list = new    ArrayList<>(); 
    list.add(new    Product(-1, "我是托底数据")); return    list; 
    } 
    }; 
    } 
    }
    

    2.3修改 ProductConsumerService

    @FeignClient(name="ego-product-provider",fallbackFactory=Pr oductServiceFallbackFactory.class) 
    public    interface    ProductConsumerService { 
    //查询所有商品 
    @RequestMapping(value="/product/findAll",method=RequestMeth od.GET) 
    public    List<Product> findAll(); 
    }
    

    可视化的数据监控 Hystrix-dashboard

    2    修改  pom 文件添加  Hystrix-dashboard 坐标 
    <?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"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.bjsxt</groupId> 
    <artifactId>springcloud-eureka-consumer-ribbon-dashboard </artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>springcloud-eureka-consumer</name> 
    <description>Demo project for Spring Boot</description> <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> </parent> 
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> 
    <java.version>1.8</java.version> 
    </properties> 
    <dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-dependencies</artifactId> 
    <version>Dalston.SR5</version> 
    <type>pom</type> 
    <scope>import</scope> 
    </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> </dependency> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-config</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> 
    <java.version>1.8</java.version> 
    </properties> 
    <dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-dependencies</artifactId> 
    <version>Dalston.SR5</version> 
    <type>pom</type> 
    <scope>import</scope> 
    </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> </dependency> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-config</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    

    3 修改启动类

    @EnableCircuitBreaker //开启熔断器    断路器 
    @EnableEurekaClient 
    @SpringBootApplication 
    @EnableHystrix 
    @EnableHystrixDashboard 
    public    class    ConsumerApplication { 
    public    static    void    main(String[] args) { SpringApplication.run(ConsumerApplication.class, 
    args); 
    } 
    } 
    

    Hystrix-dashboard 监控中心

    修改 pom 文件添加 Hystrix-dashboard 坐标

    <?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"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.bjsxt</groupId> 
    <artifactId>springcloud-eureka-consumer-ribbon-dashboard </artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>springcloud-eureka-consumer</name> 
    <description>Demo project for Spring Boot</description> <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.13.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> </parent> 
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEn coding> 
    <project.reporting.outputEncoding>UTF-8</project.reporting. outputEncoding> 
    <java.version>1.8</java.version> 
    </properties> 
    <dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-dependencies</artifactId> 
    <version>Dalston.SR5</version> 
    <type>pom</type> 
    <scope>import</scope> 
    </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <dependencies> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> </dependency> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-config</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-hystrix</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId > 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
    <plugin> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-maven-plugin</artifactId> 
    </plugin> 
    </plugins> 
    </build> 
    </project> 
    

    修改启动类

    @EnableCircuitBreaker //开启熔断器    断路器 
    @EnableEurekaClient 
    @SpringBootApplication 
    @EnableHystrix 
    @EnableHystrixDashboard 
    public    class    ConsumerApplication { 
    public    static    void    main(String[] args) { SpringApplication.run(ConsumerApplication.class, 
    args); 
    } 
    }
    

    相关文章

      网友评论

          本文标题:尚学堂109天总结+Hystrix进阶

          本文链接:https://www.haomeiwen.com/subject/hxlegctx.html