接着第二篇随笔,这篇主要学习下如何搭建Hystrix的仪表盘(Hystrix Dashboard)。Hystrix仪表盘主要用途就是用来监控Hystrix组件各项指标信息,通过这些指标信息我们就可以判断出某个服务当前健康状况,及时发现问题,再根据实际情况及时解决存在的问题。Hystrix仪表盘支持三种不用的监控方式:单体应用监控、默认的集群监控、指定的集群监控。单体监控顾名思义的话就是对单一个节点做监控,该节点实例要开启/hystrix.stream端点,仪表盘通过该接口获取节点的指标信息。后面两种都是集群监控,实际情况下我们一个微服务,都会部署多个节点实例,从而达到高可用和负载均衡的作用,那么使用集群监控就可以对该服务整个集群健康情况集中监控起来,集群监控的除了需要开启/hystrix.stream端点,还需要引入Turbine来汇集集群信息。

  下面看看在Spring Cloud全家桶套餐里面,如何简单几步即可搭建一个Hystrixy仪表盘了。

一、 搭建Hystrix仪表盘

  首先新建一个HystrixBoard项目,配置一下pom.xml依赖。

<?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><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.7.RELEASE</version><relativePath/></parent><modelVersion>4.0.0</modelVersion><groupId>com.pumpkin</groupId><artifactId>pumpkin-hystrix-dashboard</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><name>HystrixDashboard</name><description>Spring Cloud Study</description><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><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></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>Brixton.SR5</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

  启动主类增加@EnableHystrixDashboard注解

package com.pumpkin;import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;@EnableHystrixDashboard
@SpringCloudApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

  

  启动项目,访问http://localhost:9000/hystrix。其中URL格式就是对应开头讲的默认集群监控、指定集群监控、单体应用监控三种方式,Delay参数用于控制仪表盘轮询获取监控指标的间隔,默认为2000毫秒;Title参数用来配置一个监控页面头部标题的,默认是具体监控实例的URL。

  

  

二、 添加监控实例

  直接拿上一篇随笔的Hystrix项目作为监控对象,首先作为监控对象一定要开启/hystrix.stream监控端点,并确保有hystrix相关依赖,添加监控需加入以下依赖。

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

  启动Hystrix项目,然后在仪表盘输入需要监控的节点URL,如:http://127.0.0.1:8000/hystrix.stream,就可以看到Hystrix节点的监控指标数据了。

三、Turbine集群监控

  接下来学习下利用Turbine汇集集群监控指标,配合Hystrix仪表盘,我们就可以实现对某微服务全部节点监控指标统一起来展示和监控。新建一个工程,命名了Turbine吧,首先也是配置pom.xml依赖。

<?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.pumpkin</groupId><artifactId>pumpkin-turbine</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>Turbine</name><parent><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-parent</artifactId><version>Brixton.SR5</version><relativePath /> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-turbine</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

  

  创建主类。注意需要增加的注解。

package com.pumpkin;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
import org.springframework.context.annotation.Configuration;@Configuration
@EnableAutoConfiguration
@EnableTurbine
@EnableDiscoveryClient
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}

  最后一步,配置application.properties文件。spring.application.name=turbine

server.port=9001
management.port=8990
#指定注册中心
eureka.client.serviceUrl.defaultZone=http://localhost:5001/eureka/,http://localhost:5002/eureka/
turbine.app-config=Hystrix    #指定需要收集监控信息的服务名,由于Turbine也会注册到注册中心,因此能获取到该服务的所有节点信息
turbine.cluster-name-expression="default" #配置集群名称
turbine.combine-host-port=true        #让同一同主机上的服务能通过主机名和端口号进行区分,默认是以host区别的

  

  大工告成,这时候启动Turbine,并且在Hystrix仪表盘输入http://localhost:9001/turbine.stream就可以看到对Hystrix这个服务的集群监控数据了。大家发现了没有,在我们使用Turbine的时候完全是对服务没有任何侵入式的,不需要任何代码。为了演示集群监控的效果,我修改一个Hystrix服务的端口,再启动一个Hystrix服务效果如下。

四、总结

  这篇随笔主要补充了Hystrix提供了可视化的监控手段,通过Hystrix仪表盘我们可以轻松对部署的服务进行监控,并且支持单体监控和集群监控的方式,对被监控服务而言是完全透明,没有侵入式的。

五、参考资料

  Spring Cloud微服务实战-翟永超。本系列的学习都是参考该书籍学习的,同时源码使用的Spring Boot和Spring Cloud的版本也与该书保持一致

六、源码

  码云地址:git@gitee.com:pumpkingg/Spring-Cloud-Study.git 该篇随笔对应的代码是master分支下命名为blog2的Tag

转载于:https://www.cnblogs.com/yipaihushuo/p/9220641.html

Spring Cloud学习系列第三篇【服务容错保护】相关推荐

  1. Spring Cloud学习系列第六篇【分布式配置中心】

    今天来学习如何使用Spring Cloud Config在微服务中搭建一个分布式配置中心,使用了分布式配置中心之后,我们就可以通过它来管理应用资源与业务资源配置内容.Spring Cloud Conf ...

  2. Spring Cloud应用开发(四:服务容错保护)

    1.Spring Cloud Hystrix的使用 1.1.创建microservice-eureka-user-hystrix工程,并在其pom.xml中引入eureka和hystrix的依赖: 1 ...

  3. Spring Cloud Eureka 入门 (三)服务消费者详解

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! "真正的进步 ...

  4. Spring Cloud学习系列第一章:Eureka之服务注册与发现

    一.Spring Cloud简介 Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线).分布式系统的协调导致了样 ...

  5. Spring Cloud学习笔记(三)Eureka 服务的注册与发现

    目录 注册中心 Eureka 介绍 Eureka Server 服务注册 提供注册表 同步状态 Eureka Client:注册中心客户端 Register: 服务注册 Renew: 服务续约 Evi ...

  6. Spring Cloud架构教程 (三)服务网关(基础)

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: alt 我们使用Spring Cloud Netflix中的Eureka实 ...

  7. Spring Cloud学习笔记(三)

    四.ribbon 负载均衡(Load Balancer,简称LB):其含义就是指将负载(客户端发送的请求.工作任务等)进行平衡.分摊到多个服务上处理,从而协同完成工作任务. Spring Cloud ...

  8. 实战 Spring Cloud Gateway 之限流篇

    来源:https://www.aneasystone.com/archives/2020/08/spring-cloud-gateway-current-limiting.html 话说在 Sprin ...

  9. 灰度发布-Spring cloud gray系列之服务灰度测试

    概述 spring cloud gray是作者公司(掌门1对1) 内部孵化的出来的产品,相对来说是比较稳定,毕竟经过了公司的线上验证,目前捐献给了spring cloud中国社区,项目链接,关于特性原 ...

  10. spring cloud 入门系列六:使用Zuul 实现API网关服务

    通过前面几次的分享,我们了解了微服务架构的几个核心设施,通过这些组件我们可以搭建简单的微服务架构系统.比如通过Spring Cloud Eureka搭建高可用的服务注册中心并实现服务的注册和发现: 通 ...

最新文章

  1. dubbo入门--Hello World
  2. logicaldoc 6.5 结合postgresql 9.x安装部署—基于windows平台
  3. MySQL的高级运用_MYSQL之SQL高级运用(帮助你高效率编程)
  4. InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
  5. atexit注册进程终止处理函数
  6. xodo上的笔记不见了_一起来“终极笔记名场面批发市场”进货吗
  7. 01 能够使用Format实现格式化输出显示
  8. 寻找连通域算法_FPGA实现的连通域识别算法升级
  9. 连点器安卓手机版_鼠大侠手机版下载-鼠大侠鼠标连点器手机版下载 v1.4 安卓版...
  10. Oracle logmnr使用
  11. RHEL常用Linux命令操作 第四章实验报告
  12. DS1302时钟模块通信原理(SPI总线)
  13. c语言队列的作用,C语言队列
  14. 中兴网络设备交换机路由器查看日志命令方法
  15. PTA 数据结构与算法分析 7-38 寻找大富翁 (25 分)
  16. aardio - 【库】FlexCell表格组件
  17. 计算机操作系统概述---目标、作用、功能、特性和发展过程
  18. 计算机执行优盘上程序的过程,U盘打开后,文件变成exe执行文件怎么办-电脑自学网...
  19. java超市购物系统类图,UML实例(四):在线购物系统顺序图
  20. html如何做动态桌面壁纸,wallpaper engine怎么自己做壁纸?动态壁纸制作方法

热门文章

  1. C++ set 多级排序 多维度排序
  2. C++ shared_ptr make_shared是什么意思
  3. 漂亮实用的loading(加载)封装
  4. oracle执行大sql,mybatis连接oracle执行sql语句出现ORA
  5. 语言木头折断放置问题_沃尔玛验厂不能接受的问题点有哪些
  6. html之常用input type
  7. 正则表达式在java中的用法
  8. java泛型为类类型_Java泛型:仅定义为返回类型的通用类型
  9. 阶段3 2.Spring_07.银行转账案例_8 基于接口的动态代理回顾
  10. 操作系统核心原理-4.线程原理(上):线程基础与线程同步