Spring Cloud : Turbine

Spring Cloud : Turbine

點擊左上角,關注:「鍋外的大佬」spring

專一分享國外最新技術內容
幫助每位開發者更優秀地成長後端

1.概述

本文中,我將向你介紹Spring Cloud Netflix Turbine。它將多個Hystrix Metrics Streams 聚合爲一個,以便顯示在一個儀表板視圖中。 簡要介紹Hystrix 。 在微服務架構中,咱們有許多小應用程序相互通訊以完成請求。這些下游服務有可能沒法正確響應或徹底失敗。爲了防止發生級聯故障,咱們爲微服務設置了 Hystrix回退機制。服務器

每一個實現 Hystrix的微服務均可以選擇公開Hystrix Metrics Streams(經過 actuator端點 /hystrix.stream),以便經過 HystrixDashboard查看。架構

若是您想了解更多信息,我已在Spring Cloud:Hystrix中詳細介紹了這一點。app

Turbine是 Netflix的一個開源工具,用於將多個流聚合到一個流中。 Spring提供了一個很好的包裝器,以方便在 Spring生態系統中使用。ide

2.搭建

相似於 SpringCloud:Hystrix的設置,後端服務以下所示:微服務

  • Eureka Server :做爲服務註冊運行並在端口8761上運行。
  • 推薦服務:一個簡單的REST服務,只有一個端點: /recommendations,並在端口8070上運行。
  • 用戶服務:一個簡單的REST服務,單個端點爲: /personalized/{id},並在端口8060上運行。
  • Hystrix Turbine : Hystrixdashboard服務,用於顯示Hystrix流,並在端口'9090'上運行。
    如下是咱們在Eureka服務器上看到的服務列表:

Spring Cloud : Turbine
user-service和 recommendation-service都實現了 Hystrix回退機制,並經過Actuator暴露了 /hystrix.stream端點:工具

你將看到以下指標(metric):
Spring Cloud : Turbine測試

注意:若是沒有看到任何流(stream),那麼可能必須點擊該stream的服務端點。 例如:對於 user-service,咱們能夠點擊 http://localhost:8060/personalized/1來生成流3d

3.安裝Turbine

你可能已經意識到,查看單個流(stream)的效率不高,尤爲是有許多微服務時。

Turbine能夠將全部單獨的 hystrix.stream聚合成一個 turbine.stream,以便在 HystrixDashboard上查看。

它使用 DiscoveryClient接口找出生產 /hystrix.stream的相關服務。

要將 Turbine添加到 Hystrixdashboard,請添加如下依賴項:

<dependency>

<groupId>
org.springframework.cloud
</groupId>

<artifactId>
spring-cloud-starter-netflix-turbine
</artifactId>
</dependency>

注意:這是 Turbine的 starter依賴,默認狀況下使用 SpringCloudEureka做爲服務發現。 若是使用的是 SpringCloudConsul,請使用如下依賴項:

<dependency>

<groupId>
org.springframework.cloud
</groupId>

<artifactId>
spring-cloud-netflix-turbine
</artifactId>
</dependency>

<dependency>

<groupId>
org.springframework.cloud
</groupId>

<artifactId>
spring-cloud-starter-consul-discovery
</artifactId>
</dependency>

在本文中,咱們將使用starter依賴,即 spring-cloud-starter-netflix-turbine。

要啓用 Turbine,只需使用 @EnableTurbine註解主類:

@SpringBootApplication
@EnableTurbine
@EnableDiscoveryClient
@EnableHystrixDashboard
public

class

HystrixTurbineApplication

{

public

static

void
 main
(
String
[]
 args
)

{

SpringApplication
.
run
(
HystrixTurbineApplication
.
class
,
 args
);

}
}

爲了使 Turbine按預期工做,咱們必須在 application.properties中添加一些細節:

server
.
port
=

9090

spring
.
application
.
name
=
 hystirx
-
turbine  
eureka
.
client
.
serviceUrl
.
defaultZone
=
 http
:
//localhost:8761/eureka/  
turbine
.
appConfig
=
 user
-
service
,
recommendation
-
service  
turbine
.
clusterNameExpression
=

new

String
(
"default"
)

在這裏,咱們告訴 Turbine Eureka服務器的位置,以及它須要獲取 /hystrix.stream的應用程序。並將 turbine.clusterNameExpression設爲 newString("default"),即默認集羣名稱爲「default」。

咱們能夠打開 http://localhost:9090/turbine.stream?cluster=default來查看 user-service和 recommendation-service的聚合流:

Spring Cloud : Turbine
一樣,若是沒有查看到任何內容,只需點擊 user-service和 recommendation-service端點便可生成流。

咱們還能夠在 Hystrixdashboard上使用此URL來生成一個很好的聚合視圖:Spring Cloud : Turbine

有時,您可能但願將 Eureka的 serviceId用做 dashboard的集羣名稱。這能夠經過設置 turbine.aggregator.clusterConfig來完成:

server
.
port 
=

9090
spring
.
application
.
name 
=
 hystirx
-
turbine
eureka
.
client
.
serviceUrl
.
defaultZone 
=
 http
:
// localhost:8761 / eureka /
turbine
.
aggregator
.
clusterConfig 
=
 USER
-
SERVICE
,
RECOMMENDATION
-
SERVICE
turbine
.
appConfig 
=用戶服務,推薦服務

您還能夠經過點擊 /clusters端點來檢查 Turbine應用程序中當前已配置的集羣。

能夠經過將 turbine.endpoints.clusters.enabled設置爲 false來禁用此端點。
Spring Cloud : Turbine

因此,如今咱們能夠將 turbine.stream視爲 EurekaID,例如: http://localhost:9090/turbine.stream?cluster=USER-SERVICE

Spring Cloud : Turbine
若是特定服務的多個實例正在運行, Turbine將按照集羣進行分揀並將其顯示在結果中。

4.總結

在本文中,咱們已經介紹瞭如何在 Hystrixstream的基礎上設置 Turbine以得到聚合視圖。咱們首先看到了 Turbine從全部服務中獲取 Hystrixstream的經典方法。

與往常同樣,本文中使用的示例代碼能夠在GitHub上找到。

原文連接:https://stackabuse.com/spring-cloud-turbine/

做者: Dhananjay Singh

譯者: Leesen

推薦閱讀:Spring Cloud Kubernetes指南
上篇好文:測試時設置Spring Boot日誌級別

點擊在看,和我一塊兒幫助更多開發者!Spring Cloud : Turbine

相關文章
相關標籤/搜索