Spring Cloud:使用Hystrix实现断路器原理详解(下)

bb

阅读文本大概需要 3 分钟。

上一节主要介绍了 Spring Cloud 中使用 Hystrix 来做服务的熔断与降级处理,确保整个系统正常运行,而不至于发生“雪崩效应”。那么如果我们想在一个可视化界面来监控这些服务,该怎么做呢?

1. Hystrix Dashboard 监控

除了隔离依赖服务的调用以外,Hystrix 还提供了准实时的调用监控(Hystrix Dashboard),Hystrix 会持续记录所有通过 Hystrix 发起的请求的执行信息,并以统计报表和图形的形式展示给用户,包括每秒执行多少请求,有多少成功或者失败等。Spring Cloud 也提供了 Hystrix Dashboard 的整合,对监控内容转化成可视化界面。

2. 如何监控?实际落地操作

我们新建一个工程:microservice-order-consumer-hystrix-dashboard,用来完成可视化监控。端口号设置为 9002。

2.1 导入监控相关的依赖

首先要导入 dashboard 的依赖:

<dependencies>
   <!-- hystrix -->
   <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-hystrix-dashboard</artifactId>
   </dependency>
</dependencies>

2.2 添加启动注解

在启动类中,需要添加 @EnableHystrixDashboard 注解。

@SpringBootApplication
@EnableHystrixDashboard
public class OrderConsumerHystrixDashboard {

   public static void main(String[] args) {
       SpringApplication.run(OrderConsumerHystrixDashboard.class, args);
   }
}

2.3 服务提供方需要添加监控依赖

在服务提供方,也需要添加一个 Spring Boot 监控依赖:

<!-- spring boot actuator 监控信息 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2.4 测试一下

OK,这样的话,hystrix dashboard 就基本配置好了,启动一下我们新建的这个监控项目,在浏览器中输入:http://localhost:9002/hystrix ,如果出现下面的这只豪猪兄,那说明 dashboard 没有问题。

bb

3. 如何来监控其他服务

OK,上面我们能正常启动豪猪兄了,但是如何监控其他服务呢?我们以带有 hystrix 的订单提供服务为例(端口号为8001)。如果要实现被监控,我们需要在被监控的服务上做一些准备。

3.1 依赖导入

首先在这个订单服务上添加 hystrix 依赖(当然了,该8001端口的订单提供服务已经添加过了该依赖了):

<!-- hystrix -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

3.2 启动类注解

在启动类上添加注解:@EnableCircuitBreaker

@SpringBootApplication
@EnableEurekaClient
@MapperScan("com.itcodai.springcloud.dao")
@EnableCircuitBreaker
public class OrderProvider01 {

   public static void main(String[] args) {
       SpringApplication.run(OrderProvider01.class, args);
   }
}

3.3 application.yml 配置文件

最后,在配置文件中开启指标流端点,这个在后面监控时候需要用到,下文再来描述。

# 配置hystrix dashboard的url访问
# 开启指标流端点
management:
 endpoints:
   web:
     exposure:
       include: hystrix.stream

3.4 测试一下

万事俱备,只欠东风了,接下来我们来测试一下效果。首先:使用8001端口的订单服务为例,首先启动eureka集群,然后启动带有hsytrix的订单服务,我们在浏览器里输入 http://localhost:8001/provider/order/get/1 可以获取订单服务信息,确定订单服务正常。

然后打开 http://localhost:9002/hystrix 能出现豪猪兄,说明 dashboard 没有问题。

bb

我们看到,这个url 就是用来监控某个服务的状态,上面在application.yml文件里配置的url就是作用于此,我们新打开一个浏览器窗口,输入:http://localhost:8001/actuator/hystrix.stream,可以看到一直在刷一些信息,这些信息就是该服务相关接口的信息,但是很不直观,接下来我们看一下直观的效果。

在豪猪兄的页面输入http://localhost:8001/actuator/hystrix.stream, delay延迟设置为2000(2秒),Title自己取个名字即可。打开后即可在可视化页面监控 8001 这个端口的接口调用信息,我们调用两个接口:

http://localhost:8001/provider/order/get/1

http://localhost:8001/provider/order/get/list

多次刷新几次调用,可以看到可视化界面的一些信息,如下:

bb

从这个监控仪表盘中可以很清楚的看到服务被调用的状态,至于如何看,不同的部分表示什么?大家可以去百度一下,解释的很清楚,这里不再赘述。

注意一下:Hystrix dashboard 面板正常显示,所监控的接口方法上必须要有 @HystrixCommand 注解,否则会一直显示 Loading,这是一个注意的地方。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31558358/viewspace-2565241/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31558358/viewspace-2565241/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值