微服务搭建集成Spring Cloud Turbine详解

1.概述

本文中,我将向你介绍Spring Cloud Netflix Turbine。它将多个Hystrix Metrics Streams 聚合为一个,以便显示在一个仪表板视图中。

简要介绍Hystrix 。 在微服务架构中,我们有许多小应用程序相互通信以完成请求。这些下游服务有可能无法正确响应或完全失败。为了防止发生级联故障,我们为微服务设置了Hystrix回退机制。

每个实现Hystrix的微服务都可以选择公开Hystrix Metrics Streams(通过actuator端点/hystrix.stream),以便通过Hystrix Dashboard查看。

如果您想了解更多信息,我已在Spring Cloud:Hystrix中详细介绍了这一点。

Turbine是Netflix的一个开源工具,用于将多个流聚合到一个流中。 Spring提供了一个很好的包装器,以方便在Spring生态系统中使用。

2.搭建

类似于Spring Cloud:Hystrix的设置,后端服务如下所示:

  • Eureka Server :作为服务注册运行并在端口8761上运行。
  • 推荐服务:一个简单的REST服务,只有一个端点:/recommendations,并在端口8070上运行。
  • 用户服务:一个简单的REST服务,单个端点为:/personalized/{id},并在端口8060上运行。
  • Hystrix Turbine :Hystrix dashboard服务,用于显示Hystrix流,并在端口'9090'上运行。

以下是我们在Eureka服务器上看到的服务列表:

user-service和recommendation-service都实现了Hystrix回退机制,并通过Actuator暴露了/hystrix.stream端点:

  • 用户服务的Hystrix端点:http://localhost:8060/actuator/hystrix.stream
  • 用于推荐服务的Hystrix端点:http://localhost:8070/actuator/hystrix.stream

我们可以在Hystrix dashboard中单独查看这些,方法是在框中键入URL并单击Monitor Stream即可:

你将看到如下指标(metric):

注意:如果没有看到任何流(stream),那么可能必须点击该stream的服务端点。 例如:对于user-service,我们可以点击http://localhost:8060/personalized/1来生成流。

3.安装Turbine

你可能已经意识到,查看单个流(stream)的效率不高,尤其是有许多微服务时。

Turbine可以将所有单独的hystrix.stream聚合成一个turbine.stream,以便在Hystrix Dashboard上查看。

它使用DiscoveryClient接口找出生产/hystrix.stream的相关服务。

要将Turbine添加到Hystrix dashboard,请添加以下依赖项:

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

注意:这是Turbine的starter依赖,默认情况下使用Spring Cloud Eureka作为服务发现。 如果使用的是Spring Cloud Consul,请使用以下依赖项:

<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设为new String("default"),即默认集群名称为“default”。

我们可以打开http://localhost:9090/turbine.stream?cluster=default来查看user-service和recommendation-service的聚合流:

同样,如果没有查看到任何内容,只需点击user-service和recommendation-service端点即可生成流。

我们还可以在Hystrix dashboard上使用此URL来生成一个很好的聚合视图:

有时,您可能希望将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来禁用此端点。

所以,现在我们可以将turbine.stream视为Eureka ID,例如:http://localhost:9090/turbine.stream?cluster=USER-SERVICE

如果特定服务的多个实例正在运行,Turbine将按照集群进行分拣并将其显示在结果中。

4.总结

在本文中,我们已经介绍了如何在Hystrix stream的基础上设置Turbine以获得聚合视图。我们首先看到了Turbine从所有服务中获取Hystrix stream的经典方法。

与往常一样,本文中使用的示例代码可以在GitHub上找到。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • spring cloud 的监控turbine-rabbitmq的示例

    前提是你已经有了注册中心,然后搭建一个基础spring cloud 服务,并配置注册服务等等前提环境搭建 接下来描述的服务提供者和服务调用者的配置都是一样的,来自<spring cloud 与 docker微服务架构实战>的读后的个人总结. pom文件中需要引入spring-cloud-starter-hystrix/spring-cloud-starter-hystrix-dashboard/spring-cloud-netflix-hystrix-stream/spring-cloud-s

  • Spring Cloud之服务监控turbine的示例

    turbine是聚合服务器发送事件流数据的一个工具,hystrix的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过turbine来监控集群下hystrix的metrics情况,通过eureka来发现hystrix服务. 新建turbine项目 TurbineApplication.java package turbine; import org.springframework.boot.SpringApplication; import org.springframework.boo

  • 详解Spring Cloud 断路器集群监控(Turbine)

    一. 简介 上一篇文章我们已经实现了对单个服务实例的监控,当然在实际应用中,单个实例的监控数据没有多大的价值,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine.Turbine能够汇集监控信息,并将聚合后的信息提供给Hystrix Dashboard来集中展示和监控. 二. 构建监控局和服务 2.1 整体结构与准备 本文的工程实现是基于上一篇文章的工程,通过引入Turbine来聚合service-ribbon服务的监控信息,并输出给Hystrix Dashboard来进行展示

  • 微服务搭建集成Spring Cloud Turbine详解

    1.概述 本文中,我将向你介绍Spring Cloud Netflix Turbine.它将多个Hystrix Metrics Streams 聚合为一个,以便显示在一个仪表板视图中. 简要介绍Hystrix . 在微服务架构中,我们有许多小应用程序相互通信以完成请求.这些下游服务有可能无法正确响应或完全失败.为了防止发生级联故障,我们为微服务设置了Hystrix回退机制. 每个实现Hystrix的微服务都可以选择公开Hystrix Metrics Streams(通过actuator端点/hy

  • Docker(黑马spring cloud笔记)详解

    目录 介绍和安装 安装 启动 镜像加速 Docker基本操作 镜像操作 容器操作 数据卷操作 Dockerfile 镜像结构 Dockerfile Docker-Compose 安装 基本命令 Docker 私 服搭建 练习 练习1:save和load 练习2:docker部署nginx 练习3:部署MySQL 练习4:基于Ubuntu构建一个新镜像,运行一个java项目 练习5:部署微服务集群 问题:微服务注册失败 介绍和安装 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从

  • Spring Cloud原理详解

    之前一直在看<Spring Cloud微服务实战>,最近又看了架构笔记的<拜托!面试请不要再问我Spring Cloud底层原理>,对Spring Cloud的主要组件的原理有了更深的理解,特地做一下总结 一.Spring Cloud核心组件:Eureka (1)Netflix Eureka 1).Eureka服务端:也称服务注册中心,同其他服务注册中心一样,支持高可用配置.如果Eureka以集群模式部署,当集群中有分片出现故障时,那么Eureka就转入自我保护模式.它允许在分片故

  • Spring Boot集成Spring Cache过程详解

    一.关于Spring Cache 缓存在现在的应用中越来越重要, Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口来统一不同的缓存技术,并支持使用JCache(JSR-107)注解简化我们开发. 通过SpringCache,可以快速嵌入自己的Cache实现,主要是@Cacheable.@CachePut.@CacheEvict.@CacheConfig.@Caching等

  • 教你在Spring Boot微服务中集成gRPC通讯的方法

    一.首先声明gRPC接口 这里引入的是最新的gRpc-core 1.37版本, 采用的grcp-spring-boot-starter封装的版本进行实现,github地址: https://github.com/yidongnan/grpc-spring-boot-starter 要实现gRpc通讯, 先定义接口以及入参出参信息 syntax = "proto3"; option java_multiple_files = true; option java_package = &qu

  • 微服务架构之服务注册与发现实践示例详解

    目录 1 服务注册中心 4种注册中心技术对比 2 Spring Cloud 框架下实现 2.1 Spring Cloud Eureka 2.1.1 创建注册中心 2.1.2 创建客户端 2.2 Spring Cloud Consul 2.2.1 Consul 的优势 2.2.2 Consul的特性 2.2.3 安装Consul注册中心 2.2.4 创建服务提供者 3 总结 微服务系列前篇 详解微服务架构及其演进史 微服务全景架构全面瓦解 微服务架构拆分策略详解 微服务架构之服务注册与发现功能详解

  • 基于spring boot 1.5.4 集成 jpa+hibernate+jdbcTemplate(详解)

    1.pom添加依赖 <!-- spring data jpa,会注入tomcat jdbc pool/hibernate等 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <

  • shiro与spring集成基础Hello案例详解

    这篇文章主要介绍了shiro与spring集成基础Hello案例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 shiro的四大基石 身份验证(登录)Authentication:身份认证 / 登录,验证用户是不是拥有相应的身份: 授权(权限)Authorization:验证某个已登录的用户是否拥有某个权限 密码学(密码加密) Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储: 会话管理 Sessio

  • Java 用Prometheus搭建实时监控系统过程详解

    上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念也会精炼出提及下.系列主要分为以下几块 Prometheus各个概念介绍和搭建,如何抓取数据(本次分享内容)

  • springboot 集成dubbo的步骤详解

    目录 第一步 搭建zookeeper环境 第二步 springboot集成dubbo 1.项目目录机构 2.代码编写 2.1 api目录 2.2 consumer目录 web访问.接口调用以及dubbo配置编写 2.3 provider目录 api接口实现以及dubbo配置 第三步 测试dubbo远程服务调用 附录: 写在前面:在阅读本文前,请前拥有dubbo基础知识,springboot知识 dubbo官网: http://dubbo.apache.orgdubbo github 源码地址:h

随机推荐