十六、断路器-Turbine 的使用

来源:互联网 发布:刘氏哈蜜椴树白蜜 知乎 编辑:程序博客网 时间:2024/04/29 07:10

前言:
上一节里面,我们使用 Hystrix Dashboard, 只能看到单个应用内的服务信息。在生产环境下,我们经常是集群状态,所以我们就要用到 Turbine 这个应用。
作用:汇总系统内多个服务的数据并显示到 Hystrix Dashboard 上。
一、 新建项目 spring-cloud-turbine
1、 添加 jar

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

2、 配置文件:application.properties

# server server.port=9999 # spring spring.application.name=spring-cloud-turbine # eureka #eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ eureka.client.serviceUrl.defaultZone=http://drunck:123456@localhost:8761/eureka/ # info自定义 info.build.name=@project.name@ info.build.description=@project.description@ info.build.groupId=@project.groupId@ info.build.artifact=@project.artifactId@ info.build.version=@project.version@ eureka.instance.status-page-url-path=/info eureka.instance.instanceId=${spring.application.name}:${random.value} eureka.instance.prefer-ip-address=true #设置拉取服务注册信息时间,默认60s eureka.client.registry-fetch-interval-seconds=30 #指定续约更新频率,默认是30s eureka.instance.lease-renewal-interval-in-seconds=15 #设置过期剔除时间,默认90s eureka.instance.lease-expiration-duration-in-seconds=45 # turbine(说明:注意必须为大写,因为 eureka 返回的值都是大写的) turbine.aggregator.clusterConfig=SPRING-CLOUD-CONSUMER turbine.app-config=spring-cloud-consumer

3、 创建主类,添加 @EnableTurbine 注解

package com.drunck.education; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.turbine.EnableTurbine; @EnableTurbine @SpringBootApplication public class TurbineApplication {  public static void main(String[] args) {   SpringApplication.run(TurbineApplication.class, args);  } } 

二、 测试:如何监控一个集群应用
1、 启动应用,SPRING-CLOUD-CONSUMER 启动 2 个(8888,8889),注意端口冲突(去除 devtools 依赖)
2、 访问:http://localhost:8761/hystrix
同时要监控 8888 和 8889 端口
方法一:
分别加入:
http://localhost:8888/hystrix.stream 和 http://localhost:8889/hystrix.stream
方法二:
加入:http://localhost:9999/turbine.stream?cluster=SPRING-CLOUD-CONSUMER
说明:其中 cluster 对应配置文件中 clusterConfig 中的名称
3、 访问:http://localhost:8888/user/1 和 http://localhost:8889/user/1

三、 测试:如何监控多个集群应用
1、spring-cloud-turbine 的 application.properties 添加配置:(注销之前的配置)

turbine.aggregator.clusterConfig=drunck turbine.app-config=spring-cloud-consumer,spring-cloud-consumer2 turbine.cluster-name-expression=metadata['cluster'] turbine.combine-host-port=true # 默认为 true,让同一个主机上面的服务通过主机名与端口号的组合来区分 

2、spring-cloud-consumer 的 application.properties 添加配置:

eureka.instance.metadata-map.cluster=DRUNCK

(这个时候,需要在 spring-cloud-consumer,spring-cloud-consumer2 配置)

3、在 http://localhost:8761/hystrix 加入:http://localhost:9999/turbine.stream?cluster=DRUNCK

四、 测试:监控全部应用
1、 spring-cloud-turbine 的 application.properties 修改配置: 保留:

turbine.app-config=spring-cloud-consumer,spring-cloud-consumer2 

修改:

turbine.cluster-name-expression='default' 

禁用:

 # turbine.aggregator.clusterConfig=DRUNCK 

2、 在 http://localhost:8761/hystrix 加入:http://localhost:9999/turbine.stream

阅读全文
0 0