springCloud - 第13篇 - 服务监控 集群模式 Hystrix-turbine

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

1. 在springcloud 体系中,可以用 hystrix-dashboard  实时监控服务的运行状态。上一文记录了单实例的监控,现在实现集群监控。

2. 新建工程 hystrix-turbine 作为集群监控的实现服务。

2.1 file - new - module 

2.2  spring Initializr - module SDK 选择自己的 JDK ,其余的可以不用填写,next。

2.3 填写工程相关信息:包名、工程名等,next。

2.4 此步只是帮助自动生成依赖,可不选,直接 next。

2.5 工程名,代码存放位置等,finish 。

2.6 生成工程的结构如下:

2.7 pom.xml 重用 hystrix-dashboard 的依赖,另新增少量依赖:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com</groupId><artifactId>hystrix-turbine</artifactId><version>0.0.1-SNAPSHOT</version><name>hystrix-turbine</name><description>监控面板-集群 </description><parent><groupId>com</groupId><artifactId>hystrix-dashboard</artifactId><version>0.0.1-SNAPSHOT</version></parent><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></project>

2.8 启动类:

package com.hystrixturbine;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.turbine.EnableTurbine;//监控面板-集群
@EnableTurbine@SpringBootApplication
public class HystrixTurbineApplication {public static void main(String[] args) {SpringApplication.run(HystrixTurbineApplication.class, args);}}

2.9 配置文件 application.properties:

# 注册中心 - 端口: 1234、工程名: eureka (见 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 端口
server.port= 8889# 工程名
spring.application.name= hystrix-turbine# 被监控服务名称
turbine.app-config= ribbon,feign# 集群名称为“default”。
# 应用服务很多时,可用多个 hystrix-turbine 来监控不同的聚合集群,集群名可区分这些不同的聚合集群,
# 此集群名亦可在 hystrix-dashboard 中用来定位不同的聚合集群:
# 即:“http://turbine-hostname:port/turbine.stream?cluster=[clusterName]” 中对应 “clusterName”便可。
turbine.cluster-name-expression= "default"# 同一主机上的服务通过主机名与端口号的组合来进行区分,默认以 host 区分服务,
# 这样,本地调试时,本机上的不同服务则会聚合成一个服务来统计。
turbine.combine-host-port= true

3. 类同已有的 ribbon 工程,调整已有工程 feign 工程。

3.1 增加依赖 spring-cloud-starter-netflix-hystrix,此时 feign工程完整 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.feign</groupId><artifactId>service-feign</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>service-feign</name><description>服务消费 feign 方式</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><!-- 开启 hystrix 监控 --><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-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency></dependencies><repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository></repositories></project>

3.2 配置文件中加上 hystrix 相关配置,完整配置为:

# 注册中心 - 端口: 1234、工程名: eureka (见 eureka 工程中配置)。
eureka.client.serviceUrl.defaultZone= http://localhost:1234/eureka/# 端口
server.port= 8702# 工程名
spring.application.name= feign# 开启断熔器: ( Feign 自带断路器,但默认为不开启: false)
feign.hystrix.enabled=true# 也可配置为'*' ,纳入 hystrix 服务监控
management.endpoints.web.exposure.include= hystrix.stream

3.3  启动类确认注解 :@EnableHystrix,同时加上 hystrixMetricsStreamServlet 方法,完整启动类为:

package com.feign.servicefeign;import com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.hystrix.EnableHystrix;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;@SpringBootApplication/*** 基于接口的注解,可插拔,可使用 Feign注解 和 JAX-RS注解* Feign 默认集成 Ribbon,并和 Eureka 结合,默认实现负载均衡。*/
@EnableFeignClients// 标明自已为服务
@EnableEurekaClient// 开启断路器: Hystrix
@EnableHystrix
public class ServiceFeignApplication {public static void main(String[] args) {SpringApplication.run(ServiceFeignApplication.class, args);}@Beanpublic ServletRegistrationBean hystrixMetricsStreamServlet() {ServletRegistrationBean registration = new ServletRegistrationBean(new HystrixMetricsStreamServlet());registration.addUrlMappings("/hystrix.stream");return registration;}
}

4. 依次启动工程: 注册中心 eureka ( 端口 1234 ) 、 服务应用 ribbon  ( 端口 8701 ) 、服务应用 feign ( 端口 8702)、

监控集群服务 hystrix-turbine ( 端口 8889)、监控仪表盘hystrix-dashboard  ( 端口 8888) 。

其中,服务应用 ribbon、feign 都调用第三方服务应用:seeParam  ( 端口 8801) 。

4.1 seeParam 工程未启动,由于有熔断机制,访问 feign 工程效果为:

4.2 同样,seeParam 工程未启动,由于有熔断机制,访问 ribbon 工程效果为:

4.3 访问 http://localhost:8888/hystrix.stream ,可看到和单实例监控界面入口一样的面板界面。

此时,在 hystrix-dashboard 中使用集群监控的 URL 查看监控信息,在页面第一个输入框中输入 hystrix-turbine 工程的访问路径:http://localhost:8889/turbine.stream

4.4  进入实时监控显示页面可看到 ,刚才已经多次刷新过请求的 feign、ribbon 工程的运行状况统计信息:

红色 100% 表示 请求 seeParam 工程失败。球体为红色也表明服务健康状态为最差。

4.5 启动  seeParam 工程后,请求其接口:

再多次刷新 feign、ribbon 的请求后,分别请求到了 seeParam 的接口:

此时,再查看 hysteix-dashboard 中的服务统计信息:

失败请求率为 0.0%,球体也变为绿色,表示服务运行正常。

至此,服务监控的集群模式也实现了。

-------------------------------------------------------------

下一篇:springCloud - 第14篇 - 

源码见:

https://gitee.com/FJ_WoMenDeShiJie/springcloud-feign

https://gitee.com/FJ_WoMenDeShiJie/springcloud-ribbon

https://gitee.com/FJ_WoMenDeShiJie/springcloud-seeParam

https://gitee.com/FJ_WoMenDeShiJie/springcloud-hystrix-turbine

https://gitee.com/FJ_WoMenDeShiJie/springcloud-hystrix-dashboard

-------------------------------------------------------------

PS:这个系列不定时更新,只是个人的学习分享,

内容全程参考书目:

《Spring Cloud 与 Docker 微服务架构空实战 》、

《Spring Cloud 微服务实战》及此书作者博客:http://blog.didispace.com/spring-cloud-learning/

《深入理解 Spring Cloud 与微服务构建》及此书作者博客:https://blog.csdn.net/forezp/article/details/70148833

----------------------------------------------------------------
 

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

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

相关文章

解决:Error response from daemon: Cannot restart container xxx: driver failed programming external

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我的情况&#xff1a;个人站点访问不了&#xff0c;重启了阿里云ECS服务器后&#xff0c;发现服务器 80端口不通&#xff0c;于是重启…

专访许鹏:谈C程序员修养及大型项目源码阅读与学习

摘要&#xff1a;阅读源码是开源项目最好的学习方式&#xff0c;然而真正的执行起来却并不容易。这里我们为大家分享许鹏的源码阅读经验、C程序员的修养以及Spark和Storm源码走读博文。 对许鹏的第一印象来源于其Bolg的粗读&#xff0c;最早时候更准确说应该是博文的粗略统计—…

解决:mysql 连接报错 Authentication plugin ‘caching_sha2_password‘cannot be loaded

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 Navicat连接linux上的mysql时报如下错误&#xff1a; 错误原因&#xff1a; 即从mysql5.7版本之后&#xff0c;默认采用了caching_sha2_…

【历史回顾】Linux发展一览

我们周围到处都有Linux的身影&#xff0c;在家中、公司里、大学、实验室&#xff0c;太空空间站。现在的Linux已经从一个个人爱好发展成了一场计算机革命。在这篇文章里&#xff0c;我们向你展示最完整的Linux 23年来发展的历史年表。我们周围到处都有Linux的身影&#xff0c;在…

专访联想谢政维:功耗和价格是天蝎项目最大障碍!

摘要&#xff1a;与国外OpenStack和OCP&#xff08;开放计算项目&#xff09;频频见诸报端不同&#xff0c;中国的天蝎计划看起来神神秘秘&#xff0c;今天专访联想谢政维&#xff0c;他帮我们解密了目前天蝎项目的一些基本情况&#xff0c;以及他对未来天蝎发展的观点。 服务…

解决:Chrome 插件安装时提示 程序包无效:“CRX_HEADER_INVALID“

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 今天在添加谷歌插件的时候&#xff0c;却发现谷歌浏览器显示 程序包无效&#xff1a;"CRX_HEADER_INVALID"&#xff0c;现整理…

65种GPU性能测试,AMD开源驱动领先!

摘要&#xff1a;近日&#xff0c;Phoronix测试了65 种不同的GPU使用开源驱动的OpenGL性能&#xff0c;测试的GPU型号包括Intel HD Graphics、AMD Radeon、AMD FirePro和NVIDIA GeForce系列。结果显示&#xff0c;相比之下&#xff0c;AMD开源驱动领先于NVIDIA。 【编者按】20…

指尖上的艺术——如何运用代码发挥无限创意

摘要&#xff1a;计算机为我们的生活带来了不计其数的变化&#xff0c;现在&#xff0c;我们不妨也把它与艺术结合起来&#xff0c;去从机器的角度来为生活增添活力与色彩&#xff0c;开拓一个无限可能的艺术创作新境界。 写在前面 生成的艺术&#xff0c;指尖上的艺术&#…

解决:XXX类存在 却报错 Unkonwn class:‘XXX‘ 、@Autoeired 注入失败

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 我的情况如图&#xff0c;有一个CuxxxxManager 类明明是就在本工程中的&#xff0c;我想注入到对应 Service 中&#xff0c;却直接报…

精益设计:“纸上谈兵”的说服力

摘要&#xff1a;当你和团队通宵达旦地输出大量完整而精美的方案时&#xff0c;可客户却根本不买帐。这究竟是沟通出了问题&#xff0c;还是我们犯了错&#xff1f;如何提高设计效率、提升沟通及如何设计出更好的用户体验是每个互联网从业者都值得关注的问题。 【编者按】此前…

如何兼职创业并避免风险

大多数人开始创建第一家公司时&#xff0c;仍然有一份正常工作。 这是有道理的&#xff1a;你不需要贷款&#xff0c;并且你并不需要资金。如果你“失败”了&#xff0c;你失去仅仅是时间&#xff0c;但考虑到你得到的乐趣&#xff0c;经历&#xff0c;以及一切你已经学会的东西…

8款最受欢迎的HTML5/CSS3应用及代码

新的一周开始&#xff0c;小编也将继续为大家分享精彩的HTML5应用&#xff0c;还有CSS3和jQuery方面的东西。今天给大家带来的是8款最受欢迎的HTML5/CSS3应用及代码&#xff0c;一起来看看吧。 1、基于HTML5 Canvas的图表插件Chart.js chart.js是一款基于HTML5 Canvas的图表插…

超负荷写代码 = 慢性自杀

本文是html5tricks原创翻译&#xff0c;转载请看清文末的转载要求&#xff0c;谢谢合作&#xff01; 也许你会认为我是个故弄玄虚的标题党&#xff0c;不过我需要澄清一下。首先&#xff0c;这是真的&#xff0c;超负荷写代码的确意味着慢性自杀。然后问题就来了&#xff0c;“…

程序员必须知道的10大基础实用算法及其讲解

算法一&#xff1a;快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下&#xff0c;排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较&#xff0c;但这种状况并不常见。事实上&#xff0c;快速排序通常明显比其他Ο(n log n) 算法更快&a…

Git远程操作详解

摘要&#xff1a;Git是目前最流行的版本管理系统&#xff0c;学会Git几乎成了开发者的必备技能。本文详细介绍5个Git命令&#xff0c;它们的概念和用法&#xff0c;理解了这些内容&#xff0c;你就会完全掌握Git远程操作。 【编者按】Git是一个分布式版本控制&#xff0f;软件…

深入理解 AMQP 协议

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 PS&#xff1a;更多详情见 AMQP主页 &#xff1a;http://www.amqp.org/ 。 一、AMQP 是什么 AMQP&#xff08;Advanced Message Queuing…

广州市科目三电子路考--大观路通过经验

视频&#xff1a;大观路 &#xff1a; http://v.pps.tv/play_3EO9GY.html 大家好&#xff0c;我是2014年5月8日考科目三的&#xff0c;本人是90分通过考试&#xff0c;在掉头的时候死火被扣10分&#xff0c;下面我会说明为什么会被扣10分的。 大观路段考试&#xff0c;总体来…

SpringBoot:Actuator 监控管理工程各项信息

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 在微服务体系中&#xff0c;有很多工程相互作用&#xff0c;如果其中某一个Down 了&#xff0c;可能就不是那么容易快速定位 bug 所属了…

如果编程语言是超级英雄……

摘要&#xff1a;此前我们曾假设过如果编程语言是女人&#xff0c;如果编程语言是把刀&#xff0c;现在我们将编程语言设想成电影中的超级英雄会是怎样一番情景呢&#xff1f; 说到编程语言&#xff0c;当然是萝卜白菜&#xff0c;各有所爱。假如要你在钟爱的语言之前加个超级…

Springboot:监控与管理 Actuator

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 前言&#xff1a; Actuator是一个暴露自身信息的模块&#xff0c;主要实现对应用系统的监控与管理。主要有三大功能&#xff1a; …