Spring Cloud Sleuth(Micrometer Tracing +Zipkin)

分布式链路追踪

分布式链路追踪技术要解决的问题,分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等

Micrometer Tracing 版本支持

目前最新版本的sleuth 已经迁移到Micrometer Tracing spring-cloud-sleuth,以及支持springboot版本,sleuth 已经不支持spring boot 3.x版本,同时Micrometer也兼容支持zipkin展现

链路追踪原理

链路通过TraceId唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来

Zipkin

Zipkin是一种分布式链路跟踪系统图形化的工具 ,Zipkin 是 Twitter 开源的分布式跟踪系统,能够收集微服务运行过程中的实时调用链路信息,并能够将这些调用链路信息展示到Web图形化界面上供开发人员分析,开发人员能够从ZipKin中分析出调用链路中的性能瓶颈,识别出存在问题的应用程序,进而定位问题和解决问题,官网zipkin

Micrometer 负责采集数据,Zipkin负责页面展示

下载zipkin

https://zipkin.io/pages/quickstart.html

运行zipkin

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

整合分布式链路追踪

引入依赖,我这里有父工程,版本号在父工程中指定,在子模块将这个依赖包引入即可

XML 复制代码
  <properties>
        <micrometer-tracing.version>1.2.0</micrometer-tracing.version>
        <micrometer-observation.version>1.12.0</micrometer-observation.version>
        <feign-micrometer.version>12.5</feign-micrometer.version>
        <zipkin-reporter-brave.version>2.17.0</zipkin-reporter-brave.version>
  </properties>

  <dependencyManagement>
   <dependencies>
     <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-tracing-bom</artifactId>
                <version>${micrometer-tracing.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--micrometer-tracing指标追踪  1-->
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-tracing</artifactId>
                <version>${micrometer-tracing.version}</version>
            </dependency>
            <!--micrometer-tracing-bridge-brave适配zipkin的桥接包 2-->
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-tracing-bridge-brave</artifactId>
                <version>${micrometer-tracing.version}</version>
            </dependency>
            <!--micrometer-observation 3-->
            <dependency>
                <groupId>io.micrometer</groupId>
                <artifactId>micrometer-observation</artifactId>
                <version>${micrometer-observation.version}</version>
            </dependency>
            <!--feign-micrometer 4-->
            <dependency>
                <groupId>io.github.openfeign</groupId>
                <artifactId>feign-micrometer</artifactId>
                <version>${feign-micrometer.version}</version>
            </dependency>
            <!--zipkin-reporter-brave 5-->
            <dependency>
                <groupId>io.zipkin.reporter2</groupId>
                <artifactId>zipkin-reporter-brave</artifactId>
                <version>${zipkin-reporter-brave.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

yaml文件配置

XML 复制代码
management:
  zipkin:
    tracing:
      endpoint: http://localhost:9411/api/v2/spans
  tracing:
    sampling:
      probability: 1.0 #采样率默认为0.1(0.1就是10次只能有一次被记录下来),值越大收集越及时。

访问测试

启动服务,确保已经向nacos注册,使用openFeign进行远程调用测试

消费者服务访问提供者服务,查看链路追踪

点击show查看调用耗时以及调用信息信息

查看依赖关系

相关推荐
qqxhb8 小时前
零基础学Java——第十一章:实战项目 - 微服务入门
java·开发语言·spring cloud·微服务
Wilson Chen9 小时前
Spring Cloud探索之旅:从零搭建微服务雏形 (Eureka, LoadBalancer 与 OpenFeign实战)
spring cloud·微服务·eureka
sg_knight10 小时前
从单体架构到微服务:架构演进之路
java·spring boot·spring·spring cloud·微服务·云原生·架构
eternal__day10 小时前
Spring Cloud:构建云原生微服务架构的最佳工具和实践
java·spring cloud·微服务·云原生·架构
lichuangcsdn1 天前
【springcloud学习(dalston.sr1)】Eureka单个服务端的搭建(含源代码)(三)
学习·spring cloud·eureka
松树戈1 天前
openfeign与dubbo调用下载excel实践
vue.js·spring cloud·elementui·dubbo
lichuangcsdn1 天前
【springcloud学习(dalston.sr1)】使用Feign实现接口调用(八)
学习·spring·spring cloud
pjx9872 天前
微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
java·spring cloud·微服务·eureka
杨不易呀2 天前
Java面试全记录:Spring Cloud+Kafka+Redis实战解析
redis·spring cloud·微服务·kafka·高并发·java面试·面试技巧