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

访问http://localhost:9411/zipkin/

demo配置

服务提供者 lf-user

pom.xml

增加:

xml 复制代码
<!--包含了sleuth+zipkin-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

application.yml

增加到spring层级下:

yml 复制代码
zipkin:
  base-url: http://localhost:9411
sleuth:
  sampler:
    #采样率值介于 0 到 1 之间,1 则表示全部采集
    probability: 1

UserController

java 复制代码
@GetMapping("/zipkin")
public String paymentZipkin() {
    return "hi ,i'am authzipkin server fall back";
}

服务调用者 lf-auth

pom.xml

增加:

xml 复制代码
<!--包含了sleuth+zipkin-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

application.yml

增加到spring层级下:

yml 复制代码
zipkin:
  base-url: http://localhost:9411
sleuth:
  sampler:
    #采样率值介于 0 到 1 之间,1 则表示全部采集
    probability: 1

AuthController

增加:

java 复制代码
@GetMapping("/consumer/auth/zipkin")
public String paymentZipkin() {
    String result = restTemplate.getForObject(USER_URL + "/user/zipkin/", String.class);
    return result;
}

测试

相关推荐
silvamux_3 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
蒸蒸yyyyzwd4 小时前
kafka、redis、mysql不熟悉问题总结
笔记·八股
hgy89694 小时前
深度学习(小白笔记)——迁徙
人工智能·笔记·深度学习
摇滚侠4 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 11
java·笔记·python
每天一道题5 小时前
CAP、Raft 与多数派:分布式系统如何达成一致?
分布式·后端·微服务
前进的李工7 小时前
Agent 学习笔记 02:Harness 与工作流怎么理解
笔记·学习·agent·工作流·harness
海鸥-w9 小时前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
滴啦嘟啦哒9 小时前
【具身笔记】【原理探究】一、对PI05源码的实践笔记
笔记·python·vla·具身
览讯冷却11 小时前
冷却塔噪声的健康危害与法规要求的技术梳理
经验分享·笔记·科技·其他·百度·制造·业界资讯
Dory_Youth11 小时前
电脑的搜索功能不能用,一搜就黑屏闪退
运维·笔记