当前位置:主页 > java教程 > SpringCloud Hystrix-Dashboard仪表盘的实现

SpringCloud Hystrix-Dashboard仪表盘的实例详解

发布:2020-02-19 08:57:06 144


为找教程的网友们整理了SpringCloud相关的编程文章,网友郝韫玉根据主题投稿了本篇教程内容,涉及到SpringCloud、Hystrix-Dashboard、仪表盘、SpringCloud Hystrix-Dashboard仪表盘的实现相关内容,已被990网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

SpringCloud Hystrix-Dashboard仪表盘的实现

Hystrix Dashboard,它主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题。下面通过一个例子来学习。

一、新建一个Spring Cloud 项目,命名为hystrix-dashboard

1.1在pom.xml引入相关的依赖

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

1.2在spring boot 的启动类上面引入注解@EnableHystrixDashboard,启用Hystrix Dashboard功能。

package org.hope.hystrix.dashboard;

import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;

@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
 public static void main(String[] args) {
  SpringApplication.run(HystrixDashboardApplication.class, args);
 }

}

1.3修改配置文件application.properties

spring.application.name=hystrix-dashboard
server.port=2001

1.4启动应用,然后再浏览器中输入http://localhost:2001/hystrix可以看到如下界面

SpringCloud Hystrix-Dashboard仪表盘的实现

通过Hystrix Dashboard主页面的文字介绍,我们可以知道,Hystrix Dashboard共支持三种不同的监控方式

☞默认的集群监控:通过URL:http://turbine-hostname:port/turbine.stream开启,实现对默认集群的监控。

☞指定的集群监控:通过URL:http://turbine-hostname:port/turbine.stream?cluster=[clusterName]开启,实现对clusterName集群的监控。

☞单体应用的监控:通过URL:http://hystrix-app:port/hystrix.stream开启,实现对具体某个服务实例的监控。

☞Delay:控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,可以通过配置该属性来降低客户端的网络和CPU消耗。

☞Title:该参数可以展示合适的标题。

二、要有一个eureka-server用来提供eureka的服务注册中心,在码云上有,可以作为参考。此处不再粘代码。

三、要有一个eureka-service来提供服务,工程名为hello-service,项目地址同上。

四、新建一个服务被监控的工程,工程名为ribbon-customer。

4.1pom.xml引入相关依赖

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

<dependency>
 <groupId>org.springframework.cloud</groupId>
 <artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>

4.2在启动类上添加@EnableCircuitBreaker 开启断路器功能

package com.didispace;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@EnableCircuitBreaker //开启断路器功能
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {

 @Bean
 @LoadBalanced
 RestTemplate restTemplate() {
  return new RestTemplate();
 }
 public static void main(String[] args) {
  SpringApplication.run(ConsumerApplication.class, args);
 }

}

4.3 RestController

package com.didispace.web;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConsumerController {

 @Autowired
 HelloService helloService;

 @RequestMapping(value = "/ribbon-consumer", method = RequestMethod.GET)
 public String helloConsumer() {
  return helloService.hello();
 }

}

4.4 application.properties配置文件

spring.application.name=ribbon-consumer
server.port=9000
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds=2000

通过上面的步骤,已经基本完成了准备工作,下面我们进行测试。

1.启动eureka-server

2.启动hello-service

3.启动ribbon-customer

4.启动hystrix-dashboard

5.在浏览器输入http://localhost:2001/hystrix

6.在浏览器的新窗口输入http://localhost:9000/ribbon-consumer

7.在Hystrix-Dashboard的主界面上输入: http://localhost:9000/hystrix.stream然后点击 Monitor Stream按钮

SpringCloud Hystrix-Dashboard仪表盘的实现

在监控的界面有两个重要的图形信息:一个实心圆和一条曲线。

  • 实心圆:1、通过颜色的变化代表了实例的健康程度,健康程度从绿色、黄色、橙色、红色递减。2、通过大小表示请求流量发生变化,流量越大该实心圆就越大。所以可以在大量的实例中快速发现故障实例和高压实例。
  • 曲线:用来记录2分钟内流浪的相对变化,可以通过它来观察流量的上升和下降趋势。

注意:当使用Hystrix Board来监控Spring Cloud Zuul构建的API网关时,Thread Pool信息会一直处于Loading状态。这是由于Zuul默认会使用信号量来实现隔离,只有通过Hystrix配置把隔离机制改成为线程池的方式才能够得以展示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。


相关文章

  • SpringCloud Netflix Ribbon源码解析(推荐)

    SpringCloud Netflix Ribbon源码解析(推荐)

    发布:2022-10-21

    给大家整理一篇关于SpringCloud的教程,这篇文章主要介绍了SpringCloud Netflix Ribbon源码解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下


  • SpringCloud中Eureka的配置及使用讲解

    发布:2023-03-14

    Eureka 服务注册中心,主要用于提供服务注册功能,当微服务启动时,会将自己的服务注册到 Eureka Server,这篇文章主要介绍了SpringCloud中Eureka的配置及详细使用,需要的朋友可以参考下


  • JAVA快速搭建基本的springboot

    发布:2021-05-28

    本文主要入门者介绍怎么搭建一个基础的springboot环境,本文通过图文并茂的形式给大家介绍从spring boot到spring cloud的完美搭建过程,适用java入门教学,需要的朋友可以参考下


  • SpringCloud Config使用本地仓库及map注入

    发布:2021-05-07

    这篇文章主要介绍了SpringCloud Config使用本地仓库及map注入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下


  • SpringCloud Gateway路由组件详解

    发布:2023-03-28

    SpringCloud Gateway 是 Spring Cloud 的一个全新项目,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。这篇文章主要介绍了SpringCloud Gateway网关作用,需要的朋友可以参考下


  • SpringCloud Feign客户端使用流程

    发布:2023-04-18

    在springcloud中,openfeign是取代了feign作为负载均衡组件的,feign最早是netflix提供的,他是一个轻量级的支持RESTful的http服务调用框架,内置了ribbon,而ribbon可以提供负载均衡机制,因此feign可以作为一个负载均衡的远程服务调用框架使用


  • 关于pom.xml中maven无法下载springcloud包问题

    关于pom.xml中maven无法下载springcloud包问题

    发布:2022-10-21

    为网友们分享了关于java的教程,小编遇到这样一个问题spring-cloud-starter-feign,spring-cloud-starter-eureka 一直无法下载,maven仓库中包路径显示为unknown,怎么解决呢?下面小编给大家带来了pom.xml中maven无法下载springcloud包问题,需要的朋友可以参考下


  • SpringCloud Bus组件的使用配置详解

    SpringCloud Bus组件的使用配置详解

    发布:2022-07-11

    给大家整理一篇关于Spring Cloud的教程,bus称之为springcloud中消息总线,主要用来在微服务系统中实现远端配置更新时通过广播形式通知所有客户端刷新配置信息,避免手动重启服务的工作,这篇文章主要介绍了SpringCloud Bus组件的使用,需要的朋友可以参考下


网友讨论