← 返回首页
SpringCloud基础教程(八)
发表时间:2021-06-04 16:02:13
使用sleuth+zipkin实现链路追踪

Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案,并且兼容支持了 zipkin,你只需要在pom文件中引入相应的依赖即可。

微服务架构上通过业务来划分服务的,通过REST调用,对外暴露的一个接口,可能需要很多个服务协同才能完成这个接口功能,如果链路上任何一个服务出现问题或者网络超时,都会形成导致接口调用失败。随着业务的不断扩张,服务之间互相调用会越来越复杂。

本案例在上小节案例基础上讲述如何使用sleuth和zipkin来构建微服务的链路追踪。

1.下载zipkin server并启动

java -jar zipkin.jar

访问zipkin的ui 界面,地址为localhost:9411

2.改造工程 在三个工程provider\consumer\gateway的pom文件加上以下的依赖:

        <!--sleuth+zipkin实现链路追踪-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-sleuth</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-sleuth-zipkin</artifactId>
        </dependency>

三个工程的配置文件application.yml加上以下的配置:

spring:
  zipkin:
    sender:
      type: web
    base-url: http://localhost:9411/
    service:
      #对应的consumer与gateway分别写:consumer与gateway
      name: provider    
  sleuth:
    sampler:
      probability: 1

zipkin server支持mq方式收集链路信息,同时支持多种数据存储方式,比如es\mysql等,更多收集数据和存储方式见:https://github.com/openzipkin/zipkin/tree/master/zipkin-server

启动三个工程,在浏览器上访问:http://localhost:5000/consumer/items/catalog

访问zipkin server的api ,可以看到服务依赖,如下:

可以看到请求的具体耗时: