「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战」
1、简介
Hystrix Dashboard虽然好用,但是它有一个缺点:一个Hystrix Dashboard只能收集一个微服务的Hystrix流。也就是说对于每个微服务,我们都需要开启一个Hystrix Dashboard来监控其健康情况。可以看到如下Hystrix Dashboard只能输入一个actuator端点地址。
这能忍?反正我是忍不了。
忍不了我们就可以使用Turbine;Netfilx的Turbine项目,提供了将多个微服务的Hystrix流数据聚合到一个流中,并且通过一个Hystrix Dashboard进行展示,这样就可以很nice的同时监控多个微服务的健康状况啦!
Turbine项目的大致架构图如下所示:
没有Turbine之前,每个微服务都需要开启一个Hystrix Dashboard页面来监控当前微服务的健康情况,有了Turbine之后,多个微服务的信息先通过Turbine进行聚合,再统一在一个Hystrix Dashboard页面展示。
2、正文
2.1 快速搭建
服务列表:
我这里一共搭建了六个服务,其中eureka-server为注册中心,turbine-server为turbine服务,hystrix-dashboard-server为hystrix-dashboard服务(这些服务如果有需要你也可以在一个服务中启动),user-server、order-server、message-server三个服务是受hystrix保护的服务。
1 | xml复制代码<modules> |
服务依赖:
所有的依赖和版本均在下面,自行在指定服务中选择需要的依赖
1 | xml复制代码<parent> |
eureka-server服务搭建:
application.yml配置文件
1 | yaml复制代码server: |
服务启动类
1 | less复制代码@SpringBootApplication |
user-server、order-server、message-server服务搭建:
user-server服务application.yml配置文件(其他两个相似)
1 | yaml复制代码server: |
user-server服务启动类(其他两个相似)
1 | less复制代码@SpringBootApplication |
user-server编写受hystrix保护控制器(其他两个相似)
1 | typescript复制代码@RestController |
turbine-server服务搭建:
application.yml配置文件
1 | yaml复制代码server: |
启动类,添加@EnableTurbine启动turbine
1 | less复制代码@SpringBootApplication |
hystrix-dashboard-server服务搭建:
application.yml配置文件
1 | yaml复制代码server: |
启动类,添加@EnableHystrixDashboard启动HystrixDashboard
1 | less复制代码@SpringBootApplication |
2.2 服务启动
服务启动应先启动注册中心eureka-server再启动user-server、order-server、message-server服务,最后启动turbine-server和hystrix-dashboard-server。
启动完成之后,先查看eureka-server注册中心上服务是否注册正常
之后访问hystrix-dashboard-server服务的hystrix端点,确保看到如下hystrix dashboard界面
http://localhost:55555/hystrix
在hystrix dashboard中输入turbine-server提供的turbine.stream端点
http://localhost:11111/turbine.stream
初始进入的时候由于各个受hystrix保护的方法并未调用,因此未上报任何数据,所以需要调用各个接口触发数据上报。
之后看到如下界面,说明服务启动成功,整个监控服务整合完毕
2.3 注意事项
hystrix dashboard中展示的circuit数据,会根据方法名来创建,因此不管是不是同一个服务中,只要受hystrix保护的方法,如果方法名相同,将会被聚合到一起展示,这里指的注意哦!
此外不要理解成一个circuit会对应一个thread pools
- circuit的个数与方法名个数相同
- thread pools每一个受hystrix保护的方法所在类会创建一个
本文转载自: 掘金