Hystrix?Turbine聚合監(jiān)控的實(shí)現(xiàn)詳解
之前,我們針對(duì)的是一個(gè)微服務(wù)實(shí)例的Hystrix數(shù)據(jù)查詢分析,在微服務(wù)架構(gòu)下,一個(gè)微服務(wù)的實(shí)例往往是多個(gè)(集群化)。
比如自動(dòng)投遞微服務(wù)
- 實(shí)例1(hystrix) ip1:port1/actuator/hystrix.stream
- 實(shí)例2(hystrix) ip2:port2/actuator/hystrix.stream
- 實(shí)例3(hystrix) ip3:port3/actuator/hystrix.stream
按照已有的方法,我們就可以結(jié)合dashboard儀表盤每次輸入一個(gè)監(jiān)控?cái)?shù)據(jù)流url,進(jìn)去查看
手工操作能否被自動(dòng)功能替代?Hystrix Turbine聚合(聚合各個(gè)實(shí)例上的hystrix監(jiān)控?cái)?shù)據(jù))監(jiān)控
Turbine(渦輪)
思考:微服務(wù)架構(gòu)下,一個(gè)微服務(wù)往往部署多個(gè)實(shí)例,如果每次只能查看單個(gè)實(shí)例的監(jiān)控,就需要經(jīng)常切換很不方便,在這樣的場景下,我們可以使用 HystrixTurbine 進(jìn)行聚合監(jiān)控,它可以把相關(guān)微服務(wù)的監(jiān)控?cái)?shù)據(jù)聚合在一起,便于查看。

Turbine服務(wù)搭建
(1)新建項(xiàng)目lagou-cloud-hystrix-turbine-9001,引入依賴坐標(biāo)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>lagou-parent</artifactId>
<groupId>com.lagou</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>lagou-cloud-hystrix-turbine-9001</artifactId>
<dependencies>
<!--hystrix turbine聚合監(jiān)控-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-turbine</artifactId>
</dependency>
<!--
引?eureka客戶端的兩個(gè)原因
1、?師說過,微服務(wù)架構(gòu)下的服務(wù)都盡量注冊(cè)到服務(wù)中?去,便于統(tǒng)?管理
2、后續(xù)在當(dāng)前turbine項(xiàng)?中我們需要配置turbine聚合的服務(wù),?如,我們希望聚合lagou-service-autodeliver這個(gè)服務(wù)的各個(gè)實(shí)例的hystrix數(shù)據(jù)流,
那隨后我們就需要在application.yml?件中配置這個(gè)服務(wù)名,那么turbine獲取服務(wù)下具體實(shí)例的數(shù)據(jù)流的時(shí)候需要ip和端?等實(shí)例信息,
那么怎么根據(jù)服務(wù)名稱獲取到這些信息呢?
當(dāng)然可以從eureka服務(wù)注冊(cè)中?獲取
-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
</project>2)將需要進(jìn)行Hystrix監(jiān)控的多個(gè)微服務(wù)配置起來,在工程application.yml中開啟Turbine及進(jìn)行相關(guān)配置
server:
port: 9001
Spring:
application:
name: lagou-cloud-hystrix-turbine
eureka:
client:
serviceUrl: # eureka server的路徑
defaultZone: http://LagouCloudEurekaServerB:8762/eureka,http://LagouCloudEurekaServerA:8761/eureka #把 eureka 集群中的所有 url 都填寫了進(jìn)來,也可以只寫?臺(tái),因?yàn)楦鱾€(gè) eureka server 可以同步注冊(cè)表
instance:
#使?ip注冊(cè),否則會(huì)使?主機(jī)名注冊(cè)了(此處考慮到對(duì)?版本的兼容,新版本經(jīng)過實(shí)驗(yàn)都是ip)
prefer-ip-address: true
#?定義實(shí)例顯示格式,加上版本號(hào),便于多版本管理,注意是ip-address,早期版本是ipAddress
instance-id: ${spring.cloud.client.ipaddress}:${spring.application.name}:${server.port}:@project.version@
#turbine配置
turbine:
# appCofing配置需要聚合的服務(wù)名稱,?如這?聚合?動(dòng)投遞微服務(wù)的hystrix監(jiān)控?cái)?shù)據(jù)
# 如果要聚合多個(gè)微服務(wù)的監(jiān)控?cái)?shù)據(jù),那么可以使?英?逗號(hào)拼接,?如 a,b,c
appConfig: lagou-service-autodeliver
clusterNameExpression: "'default'" # 集群默認(rèn)名稱
(3)在當(dāng)前項(xiàng)目啟動(dòng)類上添加注解@EnableTurbine,開啟儀表盤以及Turbine聚合
package com.lagou.edu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.turbine.EnableTurbine;
@SpringBootApplication
@EnableDiscoveryClient
@EnableTurbine // 開啟turbine聚合功能
public class HystrixTurbineApplication9001 {
public static void main(String[] args) {
SpringApplication.run(HystrixTurbineApplication9001.class, args);
}
}(4)瀏覽器訪問Turbine項(xiàng)目,http://localhost:9001/turbine.stream,就可以看到監(jiān)控?cái)?shù)據(jù)了

我們通過dashboard的頁面查看數(shù)據(jù)更直觀,把剛才的地址輸入dashboard地址欄

監(jiān)控頁面

到此這篇關(guān)于Hystrix Turbine聚合監(jiān)控的實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Hystrix Turbine聚合監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring中@EnableScheduling注解的工作原理詳解
這篇文章主要介紹了Spring中@EnableScheduling注解的工作原理詳解,@EnableScheduling是 Spring Framework 提供的一個(gè)注解,用于啟用Spring的定時(shí)任務(wù)(Scheduling)功能,需要的朋友可以參考下2024-01-01
在windows下揪出java程序占用cpu很高的線程并完美解決
這篇文章主要介紹了在windows下揪出java程序占用cpu很高的線程并完美解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01
劍指Offer之Java算法習(xí)題精講鏈表與數(shù)組專項(xiàng)訓(xùn)練
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化2022-03-03
java怎么創(chuàng)建目錄(刪除/修改/復(fù)制目錄及文件)代碼實(shí)例
這篇文章主要介紹了java怎么創(chuàng)建目錄,還包括刪除/修改/復(fù)制目錄及文件,代碼簡單,下面直接看代碼吧2013-12-12
Spring 數(shù)據(jù)庫連接池(JDBC)詳解
本篇文章主要介紹了基于Spring的JDBC基本框架搭建;基于Spring的JDBC增刪改查;讀取配置文件中的數(shù)據(jù)等,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-05-05
Java8?lambda表達(dá)式的10個(gè)實(shí)例講解
這篇文章主要介紹了Java8?lambda表達(dá)式的10個(gè)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java 8函數(shù)式接口Function BiFunction DoubleFunction
這篇文章主要為大家介紹了Java 8函數(shù)式接口Function BiFunction DoubleFunction區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

