Spring Cloud构建微服务架构:Hystrix监控面板【Dalston版】

在上一篇《服务容错保护(hystrix断路器)》的介绍中,我们提到断路器是根据一段时间窗内的请求情况来判断并操作断路器的打开和关闭状态的。而这些请求情况的指标信息都是HystrixCommand和HystrixObservableCommand实例在执行过程中记录的重要度量信息,它们除了Hystrix断路器实现中使用之外,对于系统运维也有非常大的帮助。这些指标信息会以“滚动时间窗”与“桶”结合的方式进行汇总,并在内存中驻留一段时间,以供内部或外部进行查询使用,Hystrix Dashboard就是这些指标内容的消费者之一。

下面我们基于之前的示例来结合Hystrix Dashboard实现Hystrix指标数据的可视化面板,这里我们将用到下之前实现的几个应用,包括:

  • eureka-server:服务注册中心
  • eureka-client:服务提供者
  • eureka-consumer-ribbon-hystrix:使用ribbon和hystrix实现的服务消费者

由于eureka-consumer-ribbon-hystrix项目中的/consumer接口实现使用了@HystrixCommand修饰,所以这个接口的调用情况会被Hystrix记录下来,以用来给断路器和Hystrix Dashboard使用。断路器我们在上一篇中已经介绍过了,下面我们来具体说说Hystrix Dashboard的构建。

动手试一试

在Spring Cloud中构建一个Hystrix Dashboard非常简单,只需要下面四步:

  • 创建一个标准的Spring Boot工程,命名为:hystrix-dashboard。
  • 编辑pom.xml,具体依赖内容如下:
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Dalston.SR1</version>
<relativePath />
</parent>
<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>
  • 为应用主类加上@EnableHystrixDashboard,启用Hystrix Dashboard功能。
@EnableHystrixDashboard
@SpringCloudApplication
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class, args);
}
}
  • 根据实际情况修改application.properties配置文件,比如:选择一个未被占用的端口等,此步非必须。
spring.application.name=hystrix-dashboard
server.port=1301

到这里我们已经完成了基本配置,接下来我们可以启动该应用,并访问:http://localhost:1301/hystrix,我们可以看到如下页面:

这是Hystrix Dashboard的监控首页,该页面中并没有具体的监控信息。从页面的文字内容中我们可以知道,Hystrix Dashboard共支持三种不同的监控方式,依次为:

  • 默认的集群监控:通过URLhttp://turbine-hostname:port/turbine.stream开启,实现对默认集群的监控。
  • 指定的集群监控:通过URLhttp://turbine-hostname:port/turbine.stream?cluster=[clusterName]开启,实现对clusterName集群的监控。
  • 单体应用的监控:通过URLhttp://hystrix-app:port/hystrix.stream开启,实现对具体某个服务实例的监控。

前两者都对集群的监控,需要整合Turbine才能实现,这部分内容我们将在下一篇中做详细介绍。在本节中,我们主要实现对单个服务实例的监控,所以这里我们先来实现单个服务实例的监控。

既然Hystrix Dashboard监控单实例节点需要通过访问实例的/hystrix.stream接口来实现,自然我们需要为服务实例添加这个端点,而添加该功能的步骤也同样简单,只需要下面两步:

  • 在服务实例pom.xml中的dependencies节点中新增spring-boot-starter-actuator监控模块以开启监控相关的端点,并确保已经引入断路器的依赖spring-cloud-starter-hystrix
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
  • 确保在服务实例的主类中已经使用@EnableCircuitBreaker@EnableHystrix注解,开启了断路器功能。

到这里已经完成了所有的配置,我们可以在Hystrix Dashboard的首页输入http://localhost:2101/hystrix.stream,已启动对“eureka-consumer-ribbon-hystrix”的监控,点击“Monitor Stream”按钮,此时我们可以看到如下页面:

在对该页面介绍前,我们先看看在首页中我们还没有介绍的两外两个参数:

  • Delay:该参数用来控制服务器上轮询监控信息的延迟时间,默认为2000毫秒,我们可以通过配置该属性来降低客户端的网络和CPU消耗。
  • Title:该参数对应了上图头部标题Hystrix Stream之后的内容,默认会使用具体监控实例的URL,我们可以通过配置该信息来展示更合适的标题。

回到监控页面,我们来详细说说其中各元素的具体含义:

  • 我们可以在监控信息的左上部分找到两个重要的图形信息:一个实心圆和一条曲线。
    • 实心圆:共有两种含义。它通过颜色的变化代表了实例的健康程度,如下图所示,它的健康度从绿色、黄色、橙色、红色递减。该实心圆除了颜色的变化之外,它的大小也会根据实例的请求流量发生变化,流量越大该实心圆就越大。所以通过该实心圆的展示,我们就可以在大量的实例中快速的发现故障实例和高压力实例。
    • 曲线:用来记录2分钟内流量的相对变化,我们可以通过它来观察到流量的上升和下降趋势。
  • 其他一些数量指标如下图所示:

更多Spring Cloud内容请持续关注我的博客更新或在《Spring Cloud微服务实战》中获取。

代码示例

样例工程将沿用之前在码云和GitHub上创建的SpringCloud-Learning项目,重新做了一下整理。通过不同目录来区分Brixton和Dalston的示例。

  • 码云:点击查看
  • GitHub:点击查看

相关阅读

  • Spring Cloud构建微服务架构:服务注册与发现(Eureka、Consul)
  • Spring Cloud构建微服务架构:服务消费者(基础)
  • Spring Cloud构建微服务架构:服务消费者(Ribbon)
  • Spring Cloud构建微服务架构:服务消费者(Feign)
  • Spring Cloud构建微服务架构:分布式配置中心
  • Spring Cloud构建微服务架构:服务容错保护(hystrix服务降级)
  • Spring Cloud构建微服务架构:服务容错保护(hystrix依赖隔离)
  • Spring Cloud构建微服务架构:服务容错保护(hystrix断路器)
  • Spring Cloud构建微服务架构:Hystrix监控面板
  • Spring Cloud构建微服务架构:Hystrix监控数据聚合
  • 更多Spring Cloud内容…

money.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477514.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学术会议 | 欢迎注册参加第11届国际知识图谱联合会议

11th International Joint Conference On Knowledge Graphs(IJCKG 2022)IJCKG(International Joint Conference On Knowledge Graphs)会议之前是国际语义技术联合会议&#xff08;the Joint International Semantic Technology Conference (JIST)&#xff09;&#xff0c;JIST …

LeetCode 396. 旋转函数(数学)

1. 题目 给定一个长度为 n 的整数数组 A 。 假设 Bk 是数组 A 顺时针旋转 k 个位置后的数组&#xff0c;我们定义 A 的“旋转函数” F 为&#xff1a; F(k) 0 * Bk[0] 1 * Bk[1] ... (n-1) * Bk[n-1]。计算F(0), F(1), …, F(n-1)中的最大值。 注意: 可以认为 n 的值小…

敬你一杯调参人生

文 | 不会的选C源 | LA PAUSE乐泊一杯上好的手冲咖啡也是作品&#xff0c;就像算法工程师调参已久的模型&#xff0c;建筑师终于定稿的一份设计&#xff0c;一首制作人编排已久的歌曲。从第一次喝到风味开始喝咖啡的人很多&#xff0c;有的喝速溶&#xff0c;有的追星巴克新品&…

Spring Cloud构建微服务架构:服务容错保护(Hystrix断路器)【Dalston版】

前言 在前两篇《Spring Cloud构建微服务架构&#xff1a;服务容错保护&#xff08;Hystrix服务降级&#xff09;》和《Spring Cloud构建微服务架构&#xff1a;服务容错保护&#xff08;Hystrix依赖隔离&#xff09;》中&#xff0c;我们对Hystrix提供的服务降级和依赖隔离有了…

LeetCode 934. 最短的桥(2次BFS)

1. 题目 在给定的二维二进制数组 A 中&#xff0c;存在两座岛。&#xff08;岛是由四面相连的 1 形成的一个最大组。&#xff09; 现在&#xff0c;我们可以将 0 变为 1&#xff0c;以使两座岛连接起来&#xff0c;变成一座岛。 返回必须翻转的 0 的最小数目。&#xff08;可…

讲习班 | ISWC 2022 知识感知的零样本学习

前言近年来&#xff0c;深度学习技术依托强大的计算资源、复杂的神经网络和大规模的标注数据集在视觉、语言、医学、金融等广泛的研究领域取得了显著的成就。然而&#xff0c;在现实应用场景中&#xff0c;尤其是在开放世界的背景假设下&#xff0c;随时会有一些新的概念/对象出…

谷歌提出 RNN 版 Transformer,或为长文本建模的当前最优解

文 | 小轶今天给大家介绍一篇谷歌的最新工作&#xff0c;解决的是 Transformer 的长文本处理问题。在原生 Transformer 中&#xff0c;attention 的复杂度是输入序列长度的平方级别&#xff0c;因此限制了它处理长文本的能力。简单来说&#xff0c;本文提出的解决方案就是把 Tr…

Spring Cloud构建微服务架构:服务容错保护(Hystrix依赖隔离)【Dalston版】

前言 在上一篇《Spring Cloud构建微服务架构&#xff1a;服务容错保护&#xff08;Hystrix服务降级&#xff09;》中&#xff0c;我们已经体验了如何使用HystrixCommand来为一个依赖资源定义服务降级逻辑。实现方式非常简单&#xff0c;同时对于降级逻辑还能实现一些更加复杂的…

重点领域知识工程课程群虚拟教研室建设启动会暨第一次教学研讨会在线召开...

重点领域知识工程课程群虚拟教研室启动会暨第一次教学研讨会于2022年10月11日晚在线召开。重点领域教学资源建设项目管理办公室相关负责人、中国中文信息学会语言与知识计算专委会主任李涓子、天津大学智能与计算学部主任李克秋出席会议并致辞。天津大学人工智能学院院长胡清华…

LeetCode 556. 下一个更大元素 III

1. 题目 给定一个32位正整数 n&#xff0c;你需要找到最小的32位整数&#xff0c;其与 n 中存在的位数完全相同&#xff0c;并且其值大于n。如果不存在这样的32位整数&#xff0c;则返回-1。 示例 1: 输入: 12 输出: 21示例 2: 输入: 21 输出: -1来源&#xff1a;力扣&#x…

这可能是你与 AI 大神们近距离接触的唯一机会……

明人不说暗话&#xff1a;作为粤海街头放飞梦想的有志青年&#xff0c;他们可能是国内最大胆的「狗仔队」。从2016年成立至今&#xff0c;他们报道过&#xff1a;国内外数十场 AI 学术会议动态&#xff0c;写下老中青研究者们在会场前线的精神风采AI 领域的每一个最新研究突破&…

Spring Cloud构建微服务架构:服务容错保护(Hystrix服务降级)【Dalston版】

前言 在微服务架构中&#xff0c;我们将系统拆分成了一个个的服务单元&#xff0c;各单元应用间通过服务注册与订阅的方式互相依赖。由于每个单元都在不同的进程中运行&#xff0c;依赖通过远程调用的方式执行&#xff0c;这样就有可能因为网络原因或是依赖服务自身问题出现调…

论文浅尝 | 基于注意力图卷积神经网络的依存驱动关系抽取

笔记整理&#xff1a;王大壮论文链接&#xff1a;https://aclanthology.org/2021.acl-long.344.pdf动机句法信息,特别是依存树,已经被广泛应用于关系提取,以更好地分析与给定实体相关联的上下文信息。然而大多数现有的研究都饱受依赖树噪声的影响&#xff0c;特别是当它们自动生…

别再龟速炼丹了!聊聊怎样科学提升训练效率

文 | Horace He等编 | Juniper源 | 机器之心深度学习是门玄学&#xff1f;也不完全是。每个人都想让模型训练得更快&#xff0c;但是你真的找对方法了吗&#xff1f;在康奈尔大学本科生、曾在 PyTorch 团队实习的 Horace He 看来&#xff0c;这个问题应该分几步解决&#xff1a…

LeetCode 第 17 场双周赛(469/897,前52.3%)

文章目录1. 比赛结果2. 题目LeetCode 5143. 解压缩编码列表 easyLeetCode 5144. 矩阵区域和 mediumLeetCode 5145. 祖父节点值为偶数的节点和 mediumLeetCode 5146. 不同的循环子字符串 hard1. 比赛结果 做出来了1, 3两题&#xff0c;第2题在比赛结束后10分钟提交通过。 2.…

Spring Cloud构建微服务架构:分布式配置中心【Dalston版】

Spring Cloud Config是Spring Cloud团队创建的一个全新项目&#xff0c;用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持&#xff0c;它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心&#xff0c;它是一个独立的微服务应用&#xff0c;用来连…

图谱实战 | 知识图谱在美团搜索酒旅场景认知中的应用

分享嘉宾&#xff1a;陈骐 美团 高级算法专家编辑整理&#xff1a;毛佳豪 中国平安浙江分公司(实习)出品平台&#xff1a;DataFunTalk导读&#xff1a;知识图谱凭借能够以图模型描述知识和世界万物关联关系的特性&#xff0c;在各行业领域大放异彩。与此同时&#xff0c;知识图…

AI技术在空气净化机器人中的高能应用

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

Spring Cloud构建微服务架构:服务消费(Feign)【Dalston版】

通过前两篇《Spring Cloud构建微服务架构&#xff1a;服务消费&#xff08;基础&#xff09;》和《Spring Cloud构建微服务架构&#xff1a;服务消费&#xff08;Ribbon&#xff09;》&#xff0c;我们已经学会了在Spring Cloud中基本的服务调用方式。本文我们将继续介绍Spring…

LeetCode 1317. 将整数转换为两个无零整数的和

1. 题目 「无零整数」是十进制表示中 不含任何 0 的正整数。 给你一个整数 n&#xff0c;请你返回一个 由两个整数组成的列表 [A, B]&#xff0c;满足&#xff1a; A 和 B 都是无零整数A B n 题目数据保证至少有一个有效的解决方案。 如果存在多个有效解决方案&#xff…