天天看点

spring cloud 2.0 入门 Spring Cloud Hystrix Board 配置应用说明 

这几天空闲在家就拿来整合下,熔断是很容易弄出来,但是这个dashboard还是遇到很大的麻烦,所以记录下。

Hystrix 是一个服务监控工具,由于网上整合了大多数都是1.x版本的,整合结果如下:

spring cloud 2.0 入门 Spring Cloud Hystrix Board 配置应用说明 

应用说明 

spring boot  2.1.4.RELEASE

spring cloud 2.1.x

直接上pom文件:

<?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>springclouddemo</artifactId>
        <groupId>com.rain.study</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-cloud-hystrix</artifactId>

    <dependencies>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

        <!-- web 项目应该放在开头 会自动加载-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.1.4.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
            <version>2.1.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter</artifactId>
                </exclusion>
            </exclusions>
        </dependency>


        <!--识别服务 的发现自动注册在这个包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
            <version>4.3.2</version>
        </dependency>

        <!--实现熔断添加的包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

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

        <!--hystrix 仪表盘包-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
            <version>2.1.1.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-archaius</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

</project>
           

启动文件 

@EnableDiscoveryClient
@EnableEurekaClient
@SpringBootApplication
@EnableHystrix
@EnableHystrixDashboard
@EnableCircuitBreaker
public class SpringCloudHystrixApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringCloudHystrixApplication.class,
                args);
    }

    @Bean(name="remoteRestTemplate")
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public ServletRegistrationBean getServlet() {
        HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
        registrationBean.setLoadOnStartup(1);
        registrationBean.addUrlMappings("/actuator/hystrix.stream");
        registrationBean.setName("HystrixMetricsStreamServlet");
        return registrationBean;
    }

}
           

值得说明的是 ServletRegistrationBean getServlet() 这个必须得加不加就会出问题,感谢前辈的总结。还有一个要注意的地方就是dashboard的访问问题,网上有说 http://localhost:9005/actuator/hystrix.stream 这个地址和 http://localhost:9005/hystrix(9005是我自己的端口),其实刚开始也没搞明白是什么鬼情况:

访问 http://localhost:9005/actuator/hystrix.stream  出现一会json 我还纳闷这什么意思,为啥和别人给的那个不一样,估计很多人也和我差不多会纠结这个问题,直到我看见另外一篇 博客(https://blog.csdn.net/xiaoluo033/article/details/80952786)恍然大悟:

访问Dashboard的步骤如下:

第一步:打开 http://localhost:9005/hystrix

spring cloud 2.0 入门 Spring Cloud Hystrix Board 配置应用说明 

第二步: 在监控地址栏中输入 http://localhost:9005/actuator/hystrix.stream  点击 Monitor Stream 就好了,至此全部完成

spring cloud 2.0 入门 Spring Cloud Hystrix Board 配置应用说明 

继续阅读