微服务(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的更多相关文章

  1. 改造断路器集群监控Hystrix Turbine实现自动注册消费者、实时监控多个服务

    在上一篇文章中,我们搭建了Hystrix Dashoard,对指定接口进行监控.但是只能对一个接口进行监听,功能比较局限: Turbine:汇总系统内多个服务的数据并显示到 Hystrix Dashb ...

  2. SpringCloud2.0 Turbine 断路器集群监控 基础教程(九)

    1.启动基础工程 1.1.启动[服务中心]集群,工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...

  3. Spring Cloud :断路器集群监控(Turbine)

    一. 简介      上一篇文章我们已经实现了对单个服务实例的监控,当然在实际应用中,单个实例的监控数据没有多大的价值,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine.Turb ...

  4. spring cloud: Hystrix(八):turbine集群监控(dashboard)

    turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群, 因此可以通过turbine来监控集群下hystrix的metrics情况,通过eur ...

  5. Spring Cloud(Dalston.SR5)--Config 集群配置中心

    Spring Cloud Config 是一个全新的项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,他分为服务端和客户端两个部分.服务端也称为分布式配置中心,是一个独立的微服务 ...

  6. Spring Cloud Turbine微服务集群实时监控

    本文代码下载地址: https://gitlab.com/mySpringCloud/turbine SpringBoot版本:1.5.9.RELEASE (稳定版) SpringCloud版本:Ed ...

  7. Spring Cloud 入门教程(八): 断路器指标数据监控Hystrix Dashboard 和 Turbine

    1. Hystrix Dashboard (断路器:hystrix 仪表盘)  Hystrix一个很重要的功能是,可以通过HystrixCommand收集相关数据指标. Hystrix Dashboa ...

  8. Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  9. Spring Cloud之Zuul网关集群

    Nginx+Zuul 一主一备 或者 轮训多个 在微服务中,所有服务请求都会统一到Zuul网关上. Nginx 配置: #user nobody; worker_processes 1; #error ...

随机推荐

  1. Java解析表达式

    需求 思路 总结 需求 指定一个String表达式,表达式符合给出的运算符规范,比如:2!=2 and 2>=3 or 4<=4,计算出表达式的结果(true or false). 支持的 ...

  2. Django解决跨域问题

    原理:浏览器的同源策略,其实我们的请求发送过去了,服务器也进行响应了,就是浏览器把响应给阻止响应而已 第一种方法jsonp 因为浏览器不对 <script> 标签里面的src属性进行阻止, ...

  3. 机器学习周志华 pdf统计学习人工智能资料下载

    周志华-机器学习 pdf,下载地址: https://u12230716.pipipan.com/fs/12230716-239561959 统计学习方法-李航,  下载地址: https://u12 ...

  4. 死磕 java集合之LinkedBlockingQueue源码分析

    问题 (1)LinkedBlockingQueue的实现方式? (2)LinkedBlockingQueue是有界的还是无界的队列? (3)LinkedBlockingQueue相比ArrayBloc ...

  5. SpringBoot SpEL表达式注入漏洞-分析与复现

    目录 0x00前言 0x01触发原因 0x02调试分析 0x03补丁分析 0x04参考文章 影响版本: 1.1.0-1.1.12 1.2.0-1.2.7 1.3.0 修复方案:升至1.3.1或以上版本 ...

  6. 【JVM虚拟机】(7)---深入理解Class中-属性集合

    #[JVM虚拟机](7)---深入理解Class中-属性集合 之前有关class文件已经写了两篇博客: 1.[JVM虚拟机](5)---深入理解JVM-Class中常量池 2.[JVM虚拟机](6)- ...

  7. SpringCloud学习系列之二 ----- 服务消费者(Feign)和负载均衡(Ribbon)使用详解

    前言 本篇主要介绍的是SpringCloud中的服务消费者(Feign)和负载均衡(Ribbon)功能的实现以及使用Feign结合Ribbon实现负载均衡. SpringCloud Feign Fei ...

  8. MobileForm控件的使用方式-用.NET(C#)开发APP的学习日志

    今天继续Smobiler开发APP的学习日志,这次是做一个title.toolbar.侧边栏三种效果 样式一 一.          Toolbar 1.       目标样式 我们要实现上图中的效果 ...

  9. Java面向接口编程,低耦合高内聚的设计哲学

    接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...

  10. 2017-12-24 手机编程环境初尝试-用AIDE开发Android应用

    前不久才接触到纯粹用手机进行编程的开发者, 当时颇有孤陋寡闻之感, 因为之前听说过手机编程还是一些在线编程学习网站开发的学习环境, 没有想过真的有用它做实际开发的. 此文用AIDE免费版在自己的手机上 ...