SpringCloud Alibaba 核心组件解析:服务链路追踪

SpringCloud Alibaba 核心组件解析:服务链路追踪

技术栈 :Spring Boot 3.2.0 + Spring Cloud Alibaba 2023.0.0.0-RC1 + Micrometer Tracing + Zipkin


5.1 是什么 --- Alibaba 侧的链路追踪

Spring Cloud Alibaba 没有自己独立的链路追踪组件 ,而是直接复用 Spring Cloud 官方的 Micrometer Tracing + Zipkin 方案。

Sentinel 的 Dashboard 提供流量监控 ,但不提供链路追踪(看不到 TraceId 维度的跨服务调用链)。


5.2 为什么 --- 与官方方案的关系

Spring Cloud 官方 Spring Cloud Alibaba
追踪框架 Micrometer Tracing Micrometer Tracing(相同)
传输协议 Zipkin Brave Zipkin Brave(相同)
注册中心 Consul Nacos
流量控制 Resilience4J Sentinel

📌 链路追踪是注册中心无关的:无论 Nacos 还是 Consul,TraceId 都通过 HTTP Header 传播,互不影响。


5.3 怎么做 --- 快速配置

5.3.1 依赖(6 个,由父 POM 统一管理)

xml 复制代码
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-observation</artifactId>
</dependency>
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-micrometer</artifactId>
</dependency>
<dependency>
    <groupId>io.zipkin.reporter2</groupId>
    <artifactId>zipkin-reporter-brave</artifactId>
</dependency>

5.3.2 配置

yaml 复制代码
management:
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans  # Zipkin Server
  tracing:
    sampling:
      probability: 1.0   # 开发=1.0,生产=0.1

5.3.3 启动 Zipkin

bash 复制代码
docker run -d -p 9411:9411 openzipkin/zipkin
# 访问 http://localhost:9411

5.4 Nacos + Sentinel + Micrometer 三角关系

复制代码
Nacos(注册发现)
  ├→ 服务启动时注册 IP:Port
  └→ Consumer 通过服务名发现 Provider 地址

Sentinel(流量控制)
  ├→ 根据 QPS/异常 限流和熔断
  └→ 不关心 TraceId,只管流量

Micrometer(链路追踪)
  ├→ 每次请求生成 TraceId → Span
  ├→ 通过 HTTP Header(traceparent)传播
  └→ 异步上报到 Zipkin Server

三者各司其职,互不干扰。Feign 调用时:从 Nacos 获取地址 → Sentinel 判断是否限流 → Micrometer 记录 Span → 发送 HTTP 请求。


5.5 Sleuth → Micrometer 迁移要点

Old (Sleuth) New (Micrometer)
Spring Boot 版本 2.x 3.x
配置前缀 spring.sleuth.* management.tracing.*
日志 MDC 自动注入 需手动配置
Feign 集成 spring-cloud-sleuth feign-micrometer

5.6 面试题

Q:Sleuth 和 Micrometer Tracing 的核心区别?

:Sleuth 用于 Spring Boot 2.x,已停止维护;Micrometer Tracing 是官方继任者,基于 Observation API 统一了 metrics/tracing/logging 三方面。配置前缀从 spring.sleuth.* 变为 management.tracing.*


5.7 踩坑指南

说明
🔴 生产全量采样 probability: 1.0 会产生海量 Span 数据,Zipkin 内存爆炸
🔴 Feign 不传播 TraceId 缺少 feign-micrometer 依赖
🔴 找不到 Zipkin Server 确认 Docker 容器运行中,9411 端口未被占用

5.8 章节总结

  • Alibaba 体系无独立链路追踪组件,直接使用 Micrometer Tracing + Zipkin
  • 完整依赖列表和配置见 Spring Cloud 官方第 5 章
  • Sentinel Dashboard 是流量监控,不是链路追踪,两者互补
相关推荐
倒流时光三十年5 分钟前
第一阶段 05 · Java 客户端查询类详解(Query / SearchCriteria / Response 与复杂拼接)
java·开发语言·python
rannn_1115 分钟前
【力扣hot100】哈希表专题——从两数之和到最长连续序列
java·算法·leetcode·哈希
观远数据6 分钟前
云原生BI的战略价值:不是技术选择,而是业务弹性的决定因素
java·人工智能·云原生
Larcher7 分钟前
别再搞混了!一文讲透 AI Workflow 和 Agent 的本质区别
javascript·人工智能·后端
Full Stack Developme8 分钟前
Tomcat 设计原理
java·tomcat
瀛川11 分钟前
microVM 技术解析:面向多租户 Serverless 与 AI Agent 的微虚拟机架构
后端·云原生
gongzhxu16 分钟前
JetBrains IDEA开发环境搭建
java·ide·intellij-idea
Conan在掘金19 分钟前
鸿蒙报错速查:装对象字量禁 as Object 编译炸,根因 + 真解法
后端
程序员三明治24 分钟前
【AI】RAG 生成阶段的最后一公里:Prompt 设计、幻觉抑制与引用对齐
java·人工智能·ai·大模型·llm·prompt·rag
Bug收容所27 分钟前
12305项目学习day5
java·spring boot·redis·mysql·spring·rocketmq