# 分布式链路追踪

在这里插入图片描述

# 为什么需要分布式链路追踪

在微服务和分布式架构中,一个用户请求可能会跨越多个服务、数据库或消息队列。为了看清请求的完整流转路径并快速定位性能瓶颈,分布式链路追踪组件成为了不可或缺的工具

常用的分布式链路追踪组件如下

组件名称 开发语言 接入方式 业务代码损耗 适用生态 / 场景
SkyWalking Java 探针(无侵入) 中等 Java为主的多语言微服务、需要一站式APM
Jaeger Go SDK / 自动插桩 极低 Go/云原生、K8s、Service Mesh (Envoy)
Zipkin Java 拦截器 / SDK 传统的 Spring Cloud 老微服务系统
Pinpoint Java 探针(无侵入) 较高 线下性能调优、对代码级耗时要求极高的Java系统

# Apache SkyWalking

在这里插入图片描述 有多种上报方式,目前最主流的是Agent的方式。针对不同的框架,传输链路的方式也有所不同

dubbo:使用 Filter 和 RpcContext 来传输

spring cloud:使用 HTTP Header 来传输

# Zipkin

在这里插入图片描述 Spring Cloud Sleuth,专为 Spring Boot / Spring Cloud 微服务设计的链路追踪组件,最主流、开箱即用,我们一般只需要引入依赖+简单配置即可。但是这种方式仅支持Spring 技术栈

在Spring Cloud Sleuth中使用Zipkin时,是通过HTTP Header来传输链路的