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;
}

测试

相关推荐
indexsunny20 小时前
互联网大厂Java面试实战:从Spring Boot到微服务的技术问答解析
java·spring boot·redis·微服务·消息队列·电商
_李小白1 天前
【OSG学习笔记】Day 22: StateSet 与 StateAttribute (渲染状态)
笔记·学习
zzh0811 天前
Mysql数据库备份与恢复笔记
数据库·笔记·mysql
丝斯20111 天前
AI学习笔记整理(79)——Python学习8
人工智能·笔记·学习
Arthas2171 天前
Java大厂面试:从Spring到微服务的全面技术考察
java·jvm·spring·微服务·面试·并发
Z.风止1 天前
Large Model-learning(2)
开发语言·笔记·python·leetcode
烛之武1 天前
SpringCloud基础(上)
笔记·spring·spring cloud
南境十里·墨染春水1 天前
C++ 笔记 深赋值 浅赋值(面向对象)
开发语言·jvm·c++·笔记
今儿敲了吗1 天前
算法复盘——差分
数据结构·c++·笔记·学习·算法
_李小白1 天前
【OSG学习笔记】Day 23: ClipNode(动态裁剪)
android·笔记·学习