zoukankan      html  css  js  c++  java
  • SpringCloud组件之HystrixDashbord

    声明:本文根据鲁班学院商鞅老师课件整理得来。

    帮助:本文涉及到的详细代码请参考:https://github.com/LoveWK/mySpringCloud.git

    什么是HystrixDashbord,我们该如何使用它?

      Dashbord 翻译一下的意思是 仪表盘, 顾名思义, hystrix监控信息的仪表盘, 那这个仪表盘到底是什么样子呢? 以及 怎么来使用呢?

      首先创建一个新的moudle,加入相关依赖:

    <?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>SpingCloudDemo</artifactId>
            <groupId>org.example</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>HystrixDashbord</artifactId>
        <!--加入Hystrix-dashboard依赖-->
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
            </dependency>
        </dependencies>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Finchley.SR2</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
    </project>

      

       然后创建启动类,在启动类上加入@EnableHystrixDashboard注解即可

      

       在yml文件中配置端口号,启动项目后访问/hystrix能看见一个类似tomcat的首页:

      

      在中间这个输入框中,填入需要监控的微服务的监控地址 也就是/actuator/hystrix.stream点击按钮,就会跳转到仪表盘页面:

      之后我们配置调用方的服务。

      首先在user的配置文件中加入相关依赖:

       <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

      

       然后在配置文件中进行配置:

      

       这样我们在HystrixDashbord的页面中填入我们访问过的地址即可

      

       点击进入后就可以看到一个类似仪表盘的页面

      

    Hystrix仪表盘解释:

      实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,它的健康度从绿色

      该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,就可以在大量的实例中快速的发现故障实例和高压力实例。

      曲线:用来记录2分钟内流量的相对变化,可以通过它来观察到流量的上升和下降趋势。

      整图解释:

      

    Spring-Cloud-Config

    config是什么?

      我们既然要做项目, 那么就少不了配置,传统的项目还好,但是我们微服务项目, 每个微服务就要做独立的配置, 这样难免有点复杂, 所以, config项目出来了,它就是为了解决这个问题: 把你所有的微服务配置通过某个平台:

      比如 github, gitlib 或者其他的git仓库 进行集中化管理(当然,也可以放在本地).

      

    怎么使用config

      刚刚讲完理论, 那么我们来实践一下, 怎么配置这个confi呢? 我们刚刚说过 由一个config server 来管理所有的配置文件, 那么我们现在新建一个config server 项目 然后引入依赖:

    <dependency>
    
        <groupId>org.springframework.cloud</groupId>
    
        <artifactId>spring-cloud-config-server</artifactId>
    
    </dependency>

      然后启动类上面加入注解EnableConfigServer:

    @SpringBootApplication
    @EnableConfigServer
    public class AppConfig {
    
        public static void main(String[] args) {
            SpringApplication.run(AppConfig.class);
        }
    }

      yml配置:

    server:
    
      port: 8080
    
    spring:
    
      application:
    
        name: test
    
    
    
      cloud:
    
        config:
    
          server:
    
            git:
    
              uri: https://github.com/513667225/my-spring-cloud-config.git #配置文件在github上的地址
    
     #         search-paths: foo,bar*  #Configserver会在 Git仓库根目录、 foo子目录,以及所有以 bar开始的子目录中查找配置文件。
    
    #          clone-on-start: true  #启动时就clone仓库到本地,默认是在配置被首次请求时,config server才会clone git仓库
    
            #native:
    
              #search-locations: classpath:/config #若配置中心在本地,本地的地址

      配置好以后,我们先试试通过config server来读取配置

    那么如何通过config server来访问呢? 

      启动项目后, 我们可以通过名字来读取里面的配置信息:

      

       config访问配置文件,是需要一个具体的访问规则的, 那么这个访问规则到底是什么呢? 我们可以在官网找到: 

      /{application}/{profile}[/{label}]
      /{application}-{profile}.yml
      /{label}/{application}-{profile}.yml
      /{application}-{profile}.properties
      /{label}/{application}-{profile}.properties

      application就是配置文件的名字, profile就是对应的环境 label就是不同的分支 由这个规则可见, 我们使用的是第二种规则, 剩下的规则, 同学们可以自己去试试 ,  对于yml 和properties类型config可以完美转换, 也就是说你存的是yml 但是可以读取为properties类型的反过来也是如此:

    客户端从config上获取配置

      刚刚给大家简单演示了一下config 以及怎么读取配置, 不过实际开发中,更多的不是我们人为去获取,而是由微服务从config上加载配置, 那么, 怎么来加载呢?

      首先,我们需要在我们的微服务加入一个依赖声明他是config的客户端:

    <dependency>
    
        <groupId>org.springframework.cloud</groupId>
    
        <artifactId>spring-cloud-starter-config</artifactId>
    
    </dependency>

      需要注意的是,这个依赖不包括spring -boot依赖, 也就是说, 假设你这个项目要当作spring boot来启动的话, 还得依赖spring boot 

      启动类不需要做改动, 标准的spring boot启动类即可

      需要注意的是yml文件

      以前我们对于spring boot的配置 是在application.yml里面配置的,现在从config上读取配置的话,还得需要一个bootstrap.yml配置文件

      解释一下这个bootstrap.yml:

        spring cloud有一个“引导上下文"的概念,这是主应用程序的父上下文。引导上下文负责从配置服务器加载配置属性,以及解密外部配置文件中的属性。和主应用程序加载application.(yml或 properties)中的属性不同,引导上下文加载(bootstrap.)中的属性。配置在 bootstrap.*中的属性有更高的优先级,因此默认情况下它们不能被本地配置。

      那么我们application.yml配置文件里面 只需要做一些简单的配置就可以了:

    spring:
      application:
        name: test-config

      重点在于bootstrap.yml:

    spring:
    
      cloud:
    
        config:
    
          name: test-config #这是我们要读取的配置文件名 对应获取规则的{application}
    
          profile: dev   #这个是要获取的环境 对应的便是{profile}
    
          label: master #这个就是获取的节点 对应的是{label}
    
          uri: http://localhost:8080/ #这就是我们config server的一个地址
  • 相关阅读:
    第二阶段冲刺7
    第二阶段冲刺6
    课后作业02需求分析
    阅读计划
    个人总结
    第十六周学习进度条
    第十五周学习进度条
    《梦断代码》阅读笔记03
    《梦断代码》阅读笔记02
    《梦断代码》阅读笔记01
  • 原文地址:https://www.cnblogs.com/wk-missQ1/p/13359261.html
Copyright © 2011-2022 走看看