十六、断路器-Turbine 的使用

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

<dependency> 
    <groupId>org.springframework.cloudgroupId> 
    <artifactId>spring-cloud-starter-turbineartifactId> 
dependency> 
<dependency> 
    <groupId>org.springframework.cloudgroupId> 
    <artifactId>spring-cloud-starter-eurekaartifactId> 
dependency> 
<dependency> 
    <groupId>org.springframework.bootgroupId> 
    <artifactId>spring-boot-starter-actuatorartifactId> 
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

你可能感兴趣的:(Spring,Cloud)