当前位置: 首页 > news >正文

SpringCloud复习之Sleuth+Zipkin链路追踪实战

文章目录

    • 写作背景
    • 为什么要有链路监控
    • SpringCloud Sleuth+Zipkin能做什么
    • 上手实战
      • 启动一个Zipkin Server
      • 微服务集成Sleuth+Zipkin

写作背景

前面复习了SpringCloud Netflix的几个核心组件,包括Eureka、Ribbon、Feign、Hystrix、Zuul,并进行了Demo级别的实战,主要是通过简单的Demo跑起来,然后通过源码来验证组件的核心功能。今天要复习的是链路监控部分,SpringCloud Sleuth + Zipkin,参考官网SpringCloud Sleuth,本文的书写思路和之前不太一样,这次就是主要在之前搭的微服务基础上集成Sleuth+Zipkin来实战演示,没有源码验证部分。

为什么要有链路监控

在微服务架构下,一次请求往往会涉及多个服务,在系统发生故障的时候,想要快速定位和解决问题,就需要追踪服务请求序列。因此分布式调用链路监控组件在这样的需求下就产生了。

SpringCloud Sleuth+Zipkin能做什么

Spring Cloud Sleuth 为服务之间的调用提供链路追踪,通过 Sleuth 可以很清楚地了解到,一个服务请求经过了哪些服务,每个服务处理花费了多少时间,从而可以很方便地
1、理清各微服务间的调用关系
2、还可很方便地看到每个采样请求的耗时,从而分析出些服务调用比较耗时
3、Sleuth还可以可视化错误,然后集成到Zipkin的界面看到
4、对于调用比较频繁的服务,可以有针对性地进行优化措施

Zipkin是Twitter公司开源的分布式跟踪系统,用于收集服务的定时数据。Zipkin 主要涉及几个组件: Collector (收集 agent 数据)、 Storage (存储)和 Web UI (图形 界面)
下面实战我用之前搭的SpringCloud微服务来演示
在这里插入图片描述

上手实战

启动一个Zipkin Server

下载和启动Zipkin可以参考zipkin的github官网https://github.com/openzipkin/zipkin 的quick start模块
在这里插入图片描述
我本地通过Docker Desktop启动一个Zipkin Server
在这里插入图片描述
然后按照官网说明打开如下地址

http://your_host:9411/zipkin/

在这里插入图片描述
可以看到Zipkin的UI界面。

微服务集成Sleuth+Zipkin

1、pom.xml文件引入依赖坐标


<!-- 链路追踪sleuth+zipkin 相关 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>

2、配置文件application里配置Sleuth采集率和Zipkin的地址

spring:
  sleuth:
    sampler:
      #请求采集的速率,默认时候0.1改成1,不然感觉不到它在工作
      probability: ${zipkin.rate:1}
  zipkin:
    base-url: http://localhost:9411/

3、重启微服务,然后访问接口
在这里插入图片描述我前面复习各个组件的时候搭的服务里,Zuul网关是fc-gateway-zuul,然后fc-service-portal里定义了接口通过OpenFeign调用fc-service-screen服务。访问如下接口

http://localhost:8000/portal/getUser/2

然后去Zipkin的UI界面点击搜索框右边的RUN QUERY
在这里插入图片描述

会看到已经采集到数据了。而且服务的调用链路通过序号1,2,3看的很清楚。点击这个SHOW,可以看到具体的内容
在这里插入图片描述
还可以看到服务之间的依赖关系
在这里插入图片描述

我这个只是Demo演示,实际公司里如果要用的话,这种方案里有很多不足,比如
1、Zipkin客户端向Zipkin 服务端发送数据使用的是HTTP的方式,那么就会有个问题,如果Zipkin服务端重启,肯定有发送数据的丢失。针对这个问题,可以修改Zipkin客户端和服务端通信的方式为异步,比如用MQ。
2、目前数据存储是在内存里的,没有持久化,实际公司里使用数据量少的情况可以用Mysql来存储,数据量大的建议使用Elasticsearch来存储。
可以参考官网来实现。

相关文章:

  • 网站建设详细流程/抖音推广引流
  • 淘客类网站如何做排名/青岛seo整站优化公司
  • wordpress独立站/陕西网站推广公司
  • wordpress主题 时光/深圳互联网营销
  • 镜像网站如何做排名/windows优化软件排行
  • 网站页面设计网页说明/seo扣费系统
  • (02)Cartographer源码无死角解析-(51) 2D点云扫描匹配→ceres扫描匹配:CeresScanMatcher2D→平移旋转残差
  • Java 元注解
  • Java基础(二)
  • 第二章.线性回归以及非线性回归—特征缩放,交叉验证法,过拟合
  • SpreadJS.Release.16.0.2 Crack by Xacker
  • Spring、SpringMVC、SpringBoot、SpringCloud 框架常用注解说明
  • 【教学赛】金融数据分析赛题1:银行客户认购产品预测(0.9676)
  • Java图形化界面---JOptionPane
  • ubuntu20.04下出现protoc与gazebo版本问题
  • 通信电子、嵌入式类面试题刷题计划03
  • [ECE]模拟试题-7
  • 作为java工程师这些概念要理清(一)