『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

栏目: 后端 · 发布时间: 5年前

内容简介:上次说了Hystrix,这个Hystrix是springcloud核心内容,如果还是比较了解,多看看官方的api,一定要记住要看一手文档,不要看二手文档。上次都是用的小demo,但是在互联网公司这些小的demo用的是最多的,源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)/

上次说了Hystrix,这个Hystrix是springcloud核心内容,如果还是比较了解,多看看官方的api,一定要记住要看一手文档,不要看二手文档。上次都是用的小demo,但是在互联网公司这些小的demo用的是最多的,

源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)/

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

(一)Feign整合Hystrix

  • Feign是以接口形式工作的,要如何整合Hystrix了?又是如何实现降级了?

    >事实上,SpringCloud默认已为Feign整合了Hystrix,只要Hystrix在项目的classpath中,Feign默认就会用断路器包裹所有方法。(注意:从Spring Cloud Dalston开始,Feign默认是不开启Hystrix的。因此,如使用Dalston及以上版本请务必额外设置属性:feign.hystrix.enabled=true,否则断路器不会生效)

源码:07-ms-consumer-order-feign-hystrix-fallback

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

Feign整合Hystrix的写法见 类,只需使用@FeignClient注解的fallback属性就可以为指定名称Feign客户端添加降级方法。

(二)Feign禁用Hystrix

  • 如何Feign禁用Hystrix

    > SpringCloud为Feign默认整合了Hystrix,也就是说只要Hystrix在项目的classpath中,Feign就会使用断路器包裹Feign客户端的所有方法(Dalston及以上版本默认Feign不开启Hystrix)。这样虽然方便,但有的场景并不需要该功能,如何为Feign禁用Hystrix呢?

源码:07-ms-consumer-order-feign-hystrix-fallback

  • 全局禁用Hystrix

    > 只需在application.yml中配置feign.hystrix.enabled=false即可

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

为指定Feign客户端禁用Hystrix:增加< FeignDisableHystrixConfiguration >类

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

在FeignClient注解里加上configuration的属性配置

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

  • 流程启动项目

    > 源码:07-ms-consumer-order-feign-hystrix-fallback

    > 源码:07-ms-provider-user

    > 源码:07-ms-eureka-server

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

(三)Hystrix监控

Hystrix还提供了近乎实时的监控。 HystrixCommand在执行时,会生成

执行结果和运行指标,比如每秒执行的请求数、成功数等,这些监控数据对分析应用系统的状态很有用。

使用 Hystrix的模块 hystrix-metrics-event-stream,就可将这些监控的指标信息以text/event-stream的格式暴露给外部系统。 spring-cloud-starter-netflix-hystrix包含该模块,在此基础上,只须为项目添加 spring-boot-starter-actuator依赖,就可使用/hystrix.stream端点获得Hystrix的监控信息了。

  • 启动项目

    > 源码:07-ms-consumer-order-feign-hystrix-fallback-stream

    > 源码:07-ms-provider-user

    > 源码:07-ms-eureka-server

为项目增加依赖

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

在启动类上增加@EnableCircuitBreaker,这样就可以使用/hystrix.stream端点监控Hystrix了。

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

请求对应url:http://127.0.0.1:8020/user/1

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

请求对应url:http://127.0.0.1:8020/hystrix.stream

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

上边都是文字,看都看懵逼了。还是找个可视化的吧。

(四)使用Hystrix Dashboard可视化监控数据

前面讨论了Hystrix的监控,但访问/hystrix.stream端点获得的数据是以文字形式展示的。很难通过这些数据,一眼看出系统当前的运行状态。可使用 Hystrix Dashboard,让监控数据图形化、可视化。

源码:07-ms-hystrix-dashboard

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

项目添加依赖

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

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

并在启动类上增加注解@EnableHystrixDashboard

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

运行项目访问:http://localhost:8030/hystrix,效果如下图

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

将上一个项目的查看监控数据地址输入,在title里任意输入一个监控名称test,点击Monitor Stream按钮,效果如下图(须先运行至少一次订单服务的用户查询接口才能显示数据,否则无监控数据)。

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

在监控的界面有两个重要的图形信息:一个实心圆和一条曲线。

* 实心圆:

1.通过颜色的变化代表了实例的健康程度,健康程度从绿色、黄色、橙色、

红色递减。

2.通过大小表示请求流量发生变化,流量越大该实心圆就越大。所以可以在大

量的实例中快速发现故障实例和高压实例。

* 曲线:

用来记录2分钟内流浪的相对变化,可以通过它来观察流量的上升和下降趋势。

(五)使用Turbine聚合监控数据

Turbine是一个聚合 Hystrix监控数据的工具,它可将所有关/hystrix.stream端点的数据聚合到一个组合的/turbine.stream中,从而让集群的监控更加方便。

源码:07-ms-hystrix-turbine

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

添加依赖

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

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

在启动类上增加注解@EnableTurbine

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

编写配置文件application.yml

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

Turbine会在Eureka Server中找到microservice-consumer-order和

microservice-consumer-order-feign-hystrix-fallback-stream这两个微服务,并聚合两个微服务的监控数据。

源码运行流程:

1、运行07-ms-eureka-server项目

2、运行07-ms-provider-user项目

3、运行06-ms-consumer-order-ribbon-hystrix-fallback项目

4、运行07-ms-consumer-order-feign-hystrix-fallback-stream项目

5、运行07-ms-hystrix-turbine项目

6、运行07-ms-hystrix-dashboard项目

访问turbine监控地址:http://127.0.0.1:8031/turbine.stream,可以看到turbine的聚合监控数据。

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

访问dashboard地址:http://localhost:8030/hystrix,将该turbine的监控地址输入dashboard。

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

hystrix这个监控是实时的,如果在线上出现问题了,该怎么办,不可能一天到晚盯着屏幕吧,之前的公司如果出现问题,发生熔断了也就是在hystrix查看的时候Circuit opened了,针对hystrix历史运维监控这块,这次是说不完的,直接对开发来说用处也不大。在之后的文章说讲解吧。

PS:springcloud的监控体系缺失很棒,这是dubbo这些无法比拟的。大家springcloud还有很多不健全的地方,我相信后期springcloud绝对会成为主流。

『互联网架构』软件架构-Hystrix&Feign监控Dashboard与Turbine聚合(97)

>>原创文章,欢迎转载。转载请注明:转载自,谢谢!>>原文链接地址:上一篇:

已是最新文章


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Remote

Remote

Jason Fried、David Heinemeier Hansson / Crown Business / 2013-10-29 / CAD 26.95

The “work from home” phenomenon is thoroughly explored in this illuminating new book from bestselling 37signals founders Fried and Hansson, who point to the surging trend of employees working from hom......一起来看看 《Remote》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具