SpringCloud之Hystrix Dashbord监控中心+分布式配置中心

摘要:
弹簧防尘套启动器执行器<'*'访问/histox流将如图所示。此处没有信息。让我们调用几个接口:org.springframework。云<

HystrixDashbord

Hystrix(注意 是单纯的Hystrix) 提供了对于微服务调用状态的监控(信息), 但是,需要结合spring-boot-actuator 模块一起使用。

在包含了 hystrix的项目中, 引入依赖:

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

这时候访问/actuator/hystrix.stream 便可以看见微服务调用的状态信息

需要注意的是, 在Spring Finchley 版本以前访问路径是/hystrix.stream,如果是Finchley 的话 还得在yml里面加入以下配置,因为spring Boot 2.0.x以后的Actuator 只暴露了info 和health 2个端点,这里我们把所有端点开放。

management:
endpoints:
 web:
  exposure:
   include: '*'

访问/hystix.stream会出现如图情况

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第1张

 这里会发现没有任何信息, 因为我刚启动项目, 我们来调用几个接口看看:

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第2张

这些密密麻麻的,就是我们的微服务监控的信息, 但是, 这种json格式的字符串, 难免会让人不太好阅读, 所以, 这时候需要我们的主角登场了:HystrixDashbord

什么是HystrixDashbord/如何使用?

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

我们新建一个项目 加入依赖:

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

在spring boot启动类上面加入注解EnableHystrixDashboard

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

启动项目后访问/hystrix能看见一个类似tomcat的首页:

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第3张

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

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第4张

当然, 如果你微服务没有发生过调用, 那么这个页面就会一直显示加载中, 我这里是调用后的效果。

 Hystrix仪表盘解释:

实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,它的健康度从绿色,该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,就可以在大量的实例中快速的发现故障实例和高压力实例。

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

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第5张

 

Spring-Cloud-Config

config是什么?

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

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

大概结构流程关系如下图:
SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第6张

怎么使用config?

创建一个config server来管理项目的所有配置文件,那新建一个config server服务,引入依赖及spring-cloud 的依赖

<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仓库到本地,默认是在配置被首次请求时,configserver才会clone git仓库
    #native:
     #search-locations: classpath:/config #若配置中心在本地,本地的地址

配置好以后,可以先试试通过config server来读取配置。

提前在GitHub上传一些配置文件以便测试

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第7张

我们来看看GitHub上的test-config配置文件的内容:

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第8张

接下来就是通过config server来访问读取这个配置文件,如何读取呢?

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

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第9张

那我们要获取dev环境或者test环境下的配置呢? 通过-隔开即可。

我们现在来访问 test-config-dev:

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第10张

其实,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类型的反过来也是如此

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第11张

这样可以得知通过config server(配置中心)可以读取到远程的配置。那接下来就需要客户端获取配置就OK了。

客户端从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的一个地址

那么 他就会获取到我们刚刚看到的那个配置:

server:
port: 8201
spring:
profiles: dev
application:
 name: test-cloud-dev-2.0

我们来测试一下 看看他会不会使用这个8201端口启动

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第12张

这里 我们查看启动信息,能发现他现在使用的是我们从config server上读取到的配置。

spring cloud config 高可用

 config 高可用可以通过很多种方式, 比如说搭建一个nginx:

SpringCloud之Hystrix Dashbord监控中心+分布式配置中心第13张

或者config server注册到eureka上,client端也注册到eureka上,则已经实现高可用

如何注册就不提了,需要注意的点就是当config server都注册完之后 client的配置文件进行以下改动:

spring:
cloud:
 config:
  name: test-config
  profile: dev
  label: master
  discovery:
   enabled: true
   service-id: test-config
eureka:
client:
 serviceUrl:
  defaultZone: http://localhost:3000/eureka/

  

免责声明:文章转载自《SpringCloud之Hystrix Dashbord监控中心+分布式配置中心》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jni中关于dll的装载问题[转]win764bit,下载了mysql 5.6.21默认安装在c盘,担心以后会占空间,需要改动吗?怎么改?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#中的ComboBox实现只能选择不能输入,且下拉框中有默认值。

下拉框有DropDownStyle这一属性,把DropDownStyle类型选为DropDownList,则下拉框只能选择不能输入了。但是这时的下拉框是没有默认值的,即使在Text属性中输入默认值,也不起作用。就要在(某某某.Designer.cs)文件中修改。这是没有修改的:this.NameTemplateBox.Cursor = System.Win...

如何用IDEA创建springboot(maven)并且整合mybatis连接mysql数据库和遇到的问题

一、New->Project 二、点击next  三、在Group栏输入组织名,Artifact就是项目名。选择需要的java版本,点击next  四、添加需要的依赖 在这里我们也可以添加sql方面的依赖,这样的话,我们就不用手动在pom文件添加依赖了  五、修改您希望放项目的位置,点击finish,等待idea下载springboot项目模板...

10个 NPM 使用技巧

对于一个项目,常用的一些npm简单命令包含的功能有:初始化一个文件夹( npm init ),下载npm模块( npm install ),创建测试( npm tese ) 和自定义脚本( npm run )。但是,进一步了解一些 npm 的使用技巧可以彻底改变你的日常开发任务。 注:如果你需要关于初学npm的参考,可以参阅我们的 初学者指南 。如果你对...

Hyperledger Fabric 1.0 从零开始(八)——Fabric多节点集群生产部署

6.1、平台特定使用的二进制文件配置 该方案与Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e类似,根据企业需要,可以控制各节点的域名,及联盟链的统一域名。可以指定单独节点的访问,生成指定的公私钥、证书等文件。具体的参数配置可以参考generateArtifacts.sh文件,可执行自动化生成,也可以按照该脚本里的命令手动...

【spring】静态资源的访问受限解决方法

前言 我们知道在整合spring mvc框架的时候需要在web.xml中配置一个servlet 代码如下 <!--spring mvc 的DispatcherServlet--> <servlet> <servlet-name>enterprise-servlet</servlet-name...

git clean用法

git clean用法   想批量删除branch中新加的文件(untracked files),,git reset --hard不行~   首先确认要删除的文件 git clean -fd -n   如果以上命令给出的文件列表是你想删除的, 那么接下来执行   git clean -f -d或者git clean -fd就可以了。   其中-f表示文...