• Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】


    Spring Cloud Sleuth概述

    概述

    Spring Cloud Sleuth 是一个分布式跟踪系统,用于在微服务架构中追踪请求的流程和跨服务调用的链路。它是 Spring Cloud 生态系统的一部分,用于帮助开发人员监测和诊断分布式应用程序的性能和问题。

    主要功能:

    分布式追踪:Spring Cloud Sleuth 为每个请求生成唯一的跟踪标识符,并记录每个请求的起始时间和结束时间,以及请求经过的各个服务的信息。这样,开发人员可以查看整个请求的链路,了解请求从一个微服务到另一个微服务的传递情况。

    链路追踪:Spring Cloud Sleuth 将跟踪信息关联到请求的链路中,使开发人员能够跟踪请求在不同服务之间的传递,并识别可能的性能问题或故障。

    集成支持:Spring Cloud Sleuth与其他微服务框架和工具(如Spring Cloud、Zipkin、Jaeger等)集成良好,可以轻松地将其与这些工具一起使用,以实现更全面的分布式追踪和性能监控。

    日志输出:Spring Cloud Sleuth还可以将跟踪信息输出到日志中,以便开发人员查看请求的跟踪信息和性能数据。

    Sleuth中的术语和相关概念

    Trace(跟踪):Trace 是一组跨越多个服务的相关请求和操作的集合。它代表了一个完整的请求链路,从一个服务到另一个服务的传递过程。
    Span(跨度):Span 是 Trace 中的一个小的时间片段,表示在一个服务内的单个操作。每个Span都有一个唯一标识符,描述了操作的名称、开始时间和持续时间等信息。
    Trace ID(跟踪标识符):Trace ID 是用于标识整个 Trace 的唯一标识符。它被分配给 Trace 中的所有 Span,用于将它们关联在一起,以形成完整的链路。
    Span ID(跨度标识符):Span ID 是用于标识单个 Span 的唯一标识符。它用于将不同服务中的操作关联起来,以构建跟踪链路。
    Parent Span ID(父 Span 标识符):Parent Span ID 用于指示一个 Span 的父 Span。这样可以建立 Span 之间的层次关系。
    Annotation(注解):Annotation 是用于描述 Span 的重要事件的标签。它们可以包括事件的名称、时间戳和其他相关信息,用于更详细地描述 Span。
    Sampler(采样器):采样器是决定是否记录 Trace 的策略。它可以根据一定的规则确定是否对请求进行跟踪,以减少跟踪数据的产生量。
    Baggage(行李):Baggage 是一种在 Span 之间传递上下文信息的方式。它可以用于传递一些自定义的信息,以便在不同服务中使用。
    Tracer(跟踪器):Tracer 是 Spring Cloud Sleuth 中的核心组件,用于创建和管理 Trace 和 Span。通过 Tracer,您可以开始、结束和注释 Span。
    Exporter(导出器):Exporter 是用于将跟踪数据导出到外部存储或分析工具的组件。它可以将跟踪数据发送到诸如Zipkin、Jaeger等分布式追踪系统。

    官网

    https://github.com/spring-cloud/spring-cloud-sleuth

    zipkin配置

    下载运行zipkin

    下载zipkin

    zipkin-server-2.12.9-exec.jar

    运行

    java -jar zipkin-server-2.12.9-exec.jar
    
    • 1

    在这里插入图片描述

    访问http://localhost:9411/zipkin/
    在这里插入图片描述

    demo配置

    服务提供者 lf-user

    pom.xml

    增加:

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    application.yml

    增加到spring层级下:

    zipkin:
      base-url: http://localhost:9411
    sleuth:
      sampler:
        #采样率值介于 0 到 1 之间,1 则表示全部采集
        probability: 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    UserController

    @GetMapping("/zipkin")
    public String paymentZipkin() {
        return "hi ,i'am authzipkin server fall back";
    }
    
    • 1
    • 2
    • 3
    • 4

    服务调用者 lf-auth

    pom.xml

    增加:

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-zipkinartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    application.yml

    增加到spring层级下:

    zipkin:
      base-url: http://localhost:9411
    sleuth:
      sampler:
        #采样率值介于 0 到 1 之间,1 则表示全部采集
        probability: 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    AuthController

    增加:

    @GetMapping("/consumer/auth/zipkin")
    public String paymentZipkin() {
        String result = restTemplate.getForObject(USER_URL + "/user/zipkin/", String.class);
        return result;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    测试

    • 依次启动:
      cloud-eureka-server7001
      lf-user
      lf-auth

    • 访问几次http://localhost:9002/auth/consumer/auth/zipkin在这里插入图片描述

    • 打开浏览器访问:http://localhost:9411
      在这里插入图片描述

    • 查看依赖关系
      在这里插入图片描述

  • 相关阅读:
    强化学习实战——Motion Imitation环境配置+所遇问题(win10)
    机器视觉运动控制一体机应用例程|柔性电路板自动上料解决方案
    福建师范大学2022年8月课程考试《文采风流:近现代闽籍文人与作家》作业考核试题【标准答案】
    STM32单片机初学7-USART串口通信
    自动化运维ansible
    Java笔记——网络原理03
    PMO如何赋能与支撑组织级项目管理?
    基于SqlSugar的数据库访问处理的封装,在.net6框架的Web API上开发应用
    PB:自动卷滚条
    Java 多线程共享模型之管程(下)
  • 原文地址:https://blog.csdn.net/qq_33129875/article/details/133647212