2.0X版本以上搭建Turbine Hystrix总结的一些心得

我用的是Nacos不是Eureka
一、首先添加Pom文件的Maven依赖,如果是用Nacos就需要把Trubine 的Eureka给剔除掉,不然的话会起依赖冲突,Nacos依赖的下面几个是Turbine Hystrix必须要加的依赖

<!--引入阿里NACOS 配置管理-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>0.2.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
  <!-- Hystrix -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
 <!-- Actuator -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
 <!--hystrix 面板-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <!--集群监控 排除eureka依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-turbine</artifactId>
            <version>1.4.7.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-netflix-eureka-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

二、配置Nacos yam文件
我配置在网关里面,也就是我配置Turbine入口模块

turbine:
  app-config: goit4-dms-alco,goit4-ems-alco  #需要监控的服务名称
  aggregator:
    cluster-config: default
  cluster-name-expression: "'default'"	//不要忘记单引号
  combine-host-port: true
instanceUrlSuffix: /actuator/hystrix.stream  //默认地址

需要被监控的模块配置,我只拿出来一些关于Hystrix的配置,其余的配置和这个关系不大就没有放上去了,上面的网关配置也一样

spring:
  application:
    name: goit4-dms-alco	//服务名称
feign:
  hystrix:
    enabled: true
hystrix:
  threadpool:
    default:
      coreSize: 20
management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

三、启动类加注解

@SpringBootApplication
@EnableDiscoveryClient	//发现Nacos服务
@EnableZuulProxy
@EnableOAuth2Sso
@EnableHystrixDashboard	//开启Hystrix监控面板
@EnableTurbine	//开启Turbine
@EnableCircuitBreaker	//开启熔断
public class ZuulApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZuulApplication.class, args);
	}

	@Bean
	public ServletRegistrationBean getServlet() {	//boot工程2.0X以上这个必须要加
		HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
		ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
		registrationBean.setLoadOnStartup(1);
		registrationBean.addUrlMappings("/actuator/hystrix.stream");  //2.0X 默认地址
		registrationBean.setName("HystrixMetricsStreamServlet");
		return registrationBean;
	}
}

四、配置了Turbine的启动顺序必须在被监控的模块后面
然后输入127.0.0.1:8302/hystrix //这边的ip和端口号都是自己在nacos里面定义的,输入自己的就好,后面加个hystrix

基本上只需要关注那个长条的文本框,输入刚才的地址加端口号拼接上在启动写的默认地址/actuator/hystrix.stream
在这里插入图片描述
点击按钮就会进入如下页面
在这里插入图片描述

五、之前遇到的一些问题汇总
1)之前报错404,找不到127.0.0.1:8302/actuator/hystrix.stream
我的解决方法
启动类加上

@Bean
	public ServletRegistrationBean getServlet() {	//boot工程2.0X以上这个必须要加
		HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
		ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
		registrationBean.setLoadOnStartup(1);
		registrationBean.addUrlMappings("/actuator/hystrix.stream");  //2.0X 默认地址
		registrationBean.setName("HystrixMetricsStreamServlet");
		return registrationBean;
	}

2)一直Loading,不报错,也不输出数据
这个问题卡了我很久,搞的很难受,百度上找了几种方法都还是一样在Loading,然后才发现,我不应该把turbine配置在auth模块的启动类里面,换成了网关之后就成功了

原因是没有触发熔断,所以一直没有数据


版权声明:本文为Shaofeng07原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。