Spring Cloud项目之断路器集群监控Hystrix Dashboard
微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
这里我们将叙述Spring Cloud中的断路器监控Hystrix Dashboard,在此之前我们需要了解一下Spring Cloud的基本组件。详情可了解https://www.souyunku.com/categories/。
Hystrix Dashboard
在微服务架构中为例保证程序的可用性,防止程序出错导致网络阻塞,出现了断路器模型。断路器的状况反应了一个程序的可用性和健壮性,它是一个重要指标。Hystrix Dashboard
是作为断路器状态的一个组件,提供了数据监控和友好的图形化界面。
准备项目:
1. eureka-service:eureka注册中心,端口:8761,用于服务注册与发现;
2. eureka-provider_1:服务提供者1,端口:8071,用于提供服务;
3. eureka-provider_2:服务提供者2,端口:8072,用于提供服务;
4. ribbon-consumer-hystrix-dashboard:带有断路器、监控面板的消费者,端口:9000,用于消费服务、提供断路器和监控界面。
1-3个项目可参考https://www.souyunku.com/自行创建,或者从下文附件中下载。我们详细讲下ribbon-consumer-hystrix-dashboard项目的构建;
一、构建ribbon-consumer-hystrix-dashboard :
1.添加pom依赖:
2.启动类:
/*
* 开启服务负载均衡
*
* @EnableDiscoveryClient向服务注册中心注册
* 并且向程序的ioc注入一个bean: restTemplate
* 并通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。
*/
//通过 @EnableHystrix 开启 Hystrix 断路器监控,这个是必须的,并且需要在程序中声明断路点@HystrixCommand
//加上@EnableHystrixDashboard注解,开启HystrixDashboard
@EnableHystrixDashboard
@EnableHystrix
@EnableDiscoveryClient
@SpringBootApplication
public class RibbonConsumerApplication_2 { @LoadBalanced
@Bean
RestTemplate restTemplate() {
return new RestTemplate();
} public static void main(String[] args) { SpringApplication.run(RibbonConsumerApplication_2.class, args);
//将存放该项目注册信息的接口url写入本地文件
} }
3. 控制层:
/**
* 消费提供者方法
* 描述:调用提供者的 `home` 方法
**/
@RestController
public class ConsumerController { @Autowired
private RestTemplate restTemplate; //创建了熔断器的功能 ,并指定了defaultStores熔断方法
//@HystrixCommand 声明短路点,表明该方法为hystrix包裹,
//可以对依赖服务进行隔离、降级、快速失败、快速重试等等hystrix相关功能
//fallbackMethod 降级方法
//commandProperties 普通配置属性,可以配置HystrixCommand对应属性,例如采用线程池还是信号量隔离、熔断器熔断规则等等
//ignoreExceptions 忽略的异常,默认HystrixBadRequestException不计入失败
//groupKey() 组名称,默认使用类名称
//commandKey 命令名称,默认使用方法名
@HystrixCommand(fallbackMethod = "defaultStores")
@GetMapping(value = "/hello")
public String hello() {
return restTemplate.getForEntity("http://eureka-provider/", String.class).getBody();
} //熔断方法直接返回了一个字符串, "feign + hystrix ,提供者服务挂了"
public String defaultStores() {
return "Ribbon + hystrix ,提供者服务挂了";
}
}
4. 安全控制 ,访问/hystrix路径要进行登录认证(可以不设置)
@Configuration
//@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{ @Override
protected void configure(final HttpSecurity http) throws Exception {
http.httpBasic()
.and()
.authorizeRequests()
.antMatchers("/hystrix")
.authenticated();
} @Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("root").password("123").roles("USER");//设置用户名密码
} }
二、 启动步骤:
1.启动注册中心 :eureka-service
2.启动eureka-provider_1和eureka-provider_2,启动后注册中心监控面板显示服务以及注册到eureka:
3.启动消费者项目:ribbon-consumer-hystrix-dashboard,启动后可在eureka注册中心发现服务
4. 登录断路器监控面板
由于我们添加了登录认证,需要在弹出框输入用户名密码(已在代码中配置)
登录后监控面板主页:看见一只像刺猬的神情有点凶小熊就可以了
5.进入图形化监控页面:
在界面依次输入:
http://127.0.0.1:9000/hystrix.stream
(需要监控的对象)
2000
(获取监控数据间隔时间)
hello (需要监控的接口)
我们可以看一下http://127.0.0.1:9000/hystrix.stream,可以看见图形化界面的显示就是根据项目暴露的hystrix.stream接口返回的数据进行监听的。
下图是网上找的显示各指标的含义:
最后附上这四个项目的百度网盘地址:
链接:https://pan.baidu.com/s/1Q1R9I7IkQJ78sJUaokD04A
提取码:b37z
代码已上传至github,可以从我主页右上角获取。
Spring Cloud项目之断路器集群监控Hystrix Dashboard的更多相关文章
- 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务
在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...
- SpringCloud2.0 Turbine 断路器集群监控 基础教程(九)
1.启动基础工程 1.1.启动[服务中心]集群,工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...
- Spring Cloud :断路器集群监控(Turbine)
一. 简介 上一篇文章我们已经实现了对单个服务实例的监控,当然在实际应用中,单个实例的监控数据没有多大的价值,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine.Turb ...
- spring cloud: Hystrix(八):turbine集群监控(dashboard)
turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群, 因此可以通过turbine来监控集群下hystrix的metrics情况,通过eur ...
- Spring Cloud(Dalston.SR5)--Config 集群配置中心
Spring Cloud Config 是一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,他分为服务端和客户端两个部分.服务端也称为分布式配置中心,是一个独立的微服务 ...
- Spring Cloud Turbine微服务集群实时监控
本文代码下载地址: https://gitlab.com/mySpringCloud/turbine SpringBoot版本:1.5.9.RELEASE (稳定版) SpringCloud版本:Ed ...
- Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine
1. Hystrix Dashboard (断路器:hystrix 仪表盘) Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboa ...
- Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!
Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...
- Spring Cloud之Zuul网关集群
Nginx+Zuul 一主一备 或者 轮训多个 在微服务中,所有服务请求都会统一到Zuul网关上. Nginx 配置: #user nobody; worker_processes 1; #error ...
随机推荐
- django 多对多自定义第三张表时的注意事项
杂交(自定义第三张表+ManyToManyField) # modles.py class Boy(models.Model): name = models.CharField(max_length= ...
- MySQL之父造访腾讯云 为腾讯云数据库开源点赞
近日,技术大牛 MariaDB 公司创始人兼CTO Michael Widenius(又名Monty).MariaDB 基金会主席 Kaj 来到中国,针对MariaDB与腾讯云的技术合作进行回访.去年 ...
- 【效率神奇】Github丧心病狂的9个狠招
Github,一个被业内朋友成为「全球最大的同性交友社区」的平台. 小时候遇到不会的字可以查新华字典.后来写作文我们可以通过作文书.或者文摘去找合适的素材.同样,写代码可以去Github上找适合自己的 ...
- ElasticSearch入门 附.Net Core例子
1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档. Elas ...
- 请给你的短信验证码接口加上SSL双向验证
序言 去年年底闲来几天,有位同事专门在网上找一些注册型的app和网站,研究其短信接口是否安全,半天下来找到30来家,一些短信接口由于分析难度原因,没有继续深入,但差不多挖掘到20来个,可以肆意被调用, ...
- 第13章 Base64 URL编码 - IdentityModel 中文文档(v1.0.0)
JWT令牌使用Base64 URL编码进行序列化. IdentityModel包括Base64Url帮助编码/解码的类: var text = "hello"; var b64ur ...
- Element表格嵌入复选框以及单选框
1,element 表格嵌入CheckBox 效果图如下: 2,element结合checkBox实现单选效果如下: html代码: <template> <div> < ...
- 土旦:关于display:flex碰上white-space nowrap 影响布局的问题
背景,做一个前面图片宽度固定,后面宽度自适应,使用到了flex布局,但是想让后面div里文字不换行,超出以点点表示时,这时布局就乱了,查了下,原来flex布局与white-space:nowrap有影 ...
- openlayers4 入门开发系列之聚合图篇(附源码下载)
前言 openlayers4 官网的 api 文档介绍地址 openlayers4 api,里面详细的介绍 openlayers4 各个类的介绍,还有就是在线例子:openlayers4 官网在线例子 ...
- windows系统库
内部组件 这些程序库文件通常不会被程序直接使用,不过它们却是用来实现其他程序库功能的重要程序库. Hal.dll Windows系统的硬件抽象层就是由Hal.dll实现[1].HAL提供很多函数,而这 ...