一、Hystrix Dashboard简介

在微服务架构中为例保证程序的可用性防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard是作为断路器状态的一个组件提供了数据监控和友好的图形化界面

二、准备工作

本文的的工程栗子,来源于SpringCloud教程第1篇:Eureka(F版本)的栗子,在它的基础上进行改造。

三、开始改造service-hi

在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"> 
    <modelVersion>4.0.0</modelVersion> 
 
    <groupId>com.forezp</groupId> 
    <artifactId>service-hi</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
 
    <name>service-hi</name> 
    <description>Demo project for Spring Boot</description> 
 
    <parent> 
        <groupId>com.forezp</groupId> 
        <artifactId>sc-f-chapter12</artifactId> 
        <version>0.0.1-SNAPSHOT</version> 
    </parent> 
 
    <dependencies> 
        <dependency> 
            <groupId>org.springframework.cloud</groupId> 
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-web</artifactId> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework.boot</groupId> 
            <artifactId>spring-boot-starter-actuator</artifactId> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework.cloud</groupId> 
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework.cloud</groupId> 
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> 
        </dependency> 
         
    </dependencies> 
 
    <build> 
        <plugins> 
            <plugin> 
                <groupId>org.springframework.boot</groupId> 
                <artifactId>spring-boot-maven-plugin</artifactId> 
            </plugin> 
        </plugins> 
    </build> 
 
 
</project>

在程序的入口ServiceHiApplication类,加上@EnableHystrix注解开启断路器,这个是必须的,并且需要在程序中声明断路点HystrixCommand;加上@EnableHystrixDashboard注解,开启HystrixDashboard

package com.forezp.servicehi; 
 
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.cloud.client.SpringCloudApplication; 
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker; 
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; 
import org.springframework.cloud.netflix.eureka.EnableEurekaClient; 
import org.springframework.cloud.netflix.hystrix.EnableHystrix; 
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; 
import org.springframework.web.bind.annotation.GetMapping; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 
 
@SpringBootApplication 
@EnableEurekaClient 
@EnableDiscoveryClient 
@RestController 
@EnableHystrix 
@EnableHystrixDashboard 
@EnableCircuitBreaker 
public class ServiceHiApplication { 
 
    /** 
     * 访问地址 http://localhost:8762/actuator/hystrix.stream 
     * @param args 
     */ 
 
    public static void main(String[] args) { 
        SpringApplication.run( ServiceHiApplication.class, args ); 
    } 
 
    @Value("${server.port}") 
    String port; 
 
    @RequestMapping("/hi") 
    @HystrixCommand(fallbackMethod = "hiError") 
    public String home(@RequestParam(value = "name", defaultValue = "forezp") String name) { 
        return "hi " + name + " ,i am from port:" + port; 
    } 
 
    public String hiError(String name) { 
        return "hi,"+name+",sorry,error!"; 
    } 
 
}

配置yml文件

server: 
  port: 8762 
 
spring: 
  application: 
    name: service-hi 
 
eureka: 
  client: 
    serviceUrl: 
      defaultZone: http://localhost:8761/eureka/ 
management: 
  endpoints: 
    web: 
      exposure: 
        include: "*" 
      cors: 
        allowed-origins: "*" 
        allowed-methods: "*"

运行程序: 依次开启eureka-server 和service-hi.

四、Hystrix Dashboard图形展示

调用IT虾米网 如果不调用的话下一步操作  网页就一直ping 并不会返回任何信息

打开http://localhost:8762/actuator/hystrix.stream,可以看到一些具体的数据:

打开IT虾米网可以看见以下界面:

在界面依次输入:http://localhost:8762/actuator/hystrix.stream 、2000 、miya ;点确定。

在另一个窗口输入: http://localhost:8762/hi?name=forezp

重新刷新hystrix.stream网页,你会看到良好的图形化界面:

 

 源码下载: IT虾米网


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

SpringCloud教程第10篇:高可用的服务注册中心(F版本)