在项目中使用Zipkin--链路追踪
在项目中使用Zipkin--链路追踪
右边线框内代表了Zipkin的服务端,其中各组件的功能如下:
zipkin-client端 client需要有多个,本篇只拿一个进行举例。
启动工程打开浏览器访问:http://localhost:9412/
zipkin简介
随着业务越来越复杂,系统也随之进行各种拆分,特别是随着微服务架构和容器技术的兴起,看似简单的应用,后台可能有几十个甚至几百个服务在支撑;一个前端的请求可能需要多次的服务调用最后才能完成;当请求变慢或者不可用时,我们无法得知是哪个后台服务引起的,这时就需要解决如何快速定位服务故障点,Zipkin分布式跟踪系统就能很好的解决这样的问题。
zipkin基本概念
1.Span:每个服务的处理跟踪是一个Span,可以理解为一个基本的工作单元。
2.Trace:一组Span的集合,表示一条调用链路。举个例子:当前存在服务A调用服务B然后调用服务C,这个A->B->C的链路就是一条Trace,而每个服务例如B就是一个Span,如果在服务B中另起2个线程分别调用了D、E,那么D、E就是B的子Span。Trace结构表示对一次请求的跟踪,一次请求可能由后台的若干服务负责处理,每个服务的处理是一个Span,Span之间有依赖关系,Trace就是树结构的Span集合;
3.Transport:收集的Spans必须从被追踪的服务运输到Zipkin collector,有三个主要的传输方式:HTTP, Kafka和Scribe;
4.Components:有4个组件组成Zipkin:collector,storage,search,web UI
运行关系图

左边部分代表了客户端分别为:
1.InstrumentedClient:使用了Zipkin客户端工具的服务调用方
2.InstrumentedServer:使用了Zipkin客户端工具的服务提供方
3.Non-InstrumentedServer:未使用Trace工具的服务提供方,当然还可能存在未使用工具的调用方
总结:一个调用链路是贯穿InstrumentedClient->InstrumentedServer的,每经过一个服务都会以Span的形式通过Transport把经过自身的请求上报的Zipkin服务端中
右边线框内代表了Zipkin的服务端,其中各组件的功能如下:
1.UI:提供web页面,用来展示Zipkin中的调用链和系统依赖关系等
2.Collector:对各个客户端暴露,负责接受调用数据,支持HTTP、MQ等
3.Storage:负责与各个存储适配后存储数据,支持内存,MySQL,ES等
4.API:为web界面提供查询存储中的数据的接口
在项目中使用Zipkin
zipkin-server端
1.导入依赖
  
   - 
    
     
    
    
      <dependencies>
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>org.springframework.boot</groupId>
     
    
- 
    
     
    
    
                 <artifactId>spring-boot-starter</artifactId>
     
    
- 
    
     
    
    
             </dependency>
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>org.springframework.boot</groupId>
     
    
- 
    
     
    
    
                 <artifactId>spring-boot-starter-web</artifactId>
     
    
- 
    
     
    
    
             </dependency>
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>org.springframework.boot</groupId>
     
    
- 
    
     
    
    
                 <artifactId>spring-boot-starter-test</artifactId>
     
    
- 
    
     
    
    
                 <scope>test</scope>
     
    
- 
    
     
    
    
             </dependency>
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
             <!--zipkin服务端所需的依赖-->
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>io.zipkin.java</groupId>
     
    
- 
    
     
    
    
                 <artifactId>zipkin-server</artifactId>
     
    
- 
    
     
    
    
                 <version>2.12.3</version>
     
    
- 
    
     
    
    
             </dependency>
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>io.zipkin.java</groupId>
     
    
- 
    
     
    
    
                 <artifactId>zipkin-autoconfigure-ui</artifactId>
     
    
- 
    
     
    
    
                 <version>2.12.3</version>
     
    
- 
    
     
    
    
             </dependency>
     
    
- 
    
     
    
    
         </dependencies>
     
    
 2. 编写配置文件
  
   - 
    
     
    
    
     
      server:
     
    
- 
    
     
    
    
     
        port: 9412
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      #zipkin启动报错无法访问的解决方法
     
    
- 
    
     
    
    
     
      management:
     
    
- 
    
     
    
    
     
        metrics:
     
    
- 
    
     
    
    
     
          web:
     
    
- 
    
     
    
    
     
            server:
     
    
- 
    
     
    
    
     
              auto-time-requests: false
     
    
 3.创建引导类
  
   - 
    
     
    
    
     
      /**
     
    
- 
    
     
    
    
     
       * @Author: Promsing(张有博)
     
    
- 
    
     
    
    
     
       * @Date: 2021/7/23 - 10:33
     
    
- 
    
     
    
    
     
       * @Description: Zipkin的服务端
     
    
- 
    
     
    
    
     
       * @version: 1.0
     
    
- 
    
     
    
    
     
       */
     
    
- 
    
     
    
    
     
      @SpringBootApplication
     
    
- 
    
     
    
    
     
      @EnableZipkinServer //zipkin的注解
     
    
- 
    
     
    
    
     
      public class ZipkinApplication {
     
    
- 
    
     
    
    
         public static void main(String[] args) {
     
    
- 
    
     
    
    
     
              SpringApplication.run(ZipkinApplication.class,args);
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
      }
     
    
 zipkin-client端 -- client需要有多个,本篇只拿一个进行举例。
1.引入依赖
  
   - 
    
     
    
    
      <!--Zipkin的依赖-->
     
    
- 
    
     
    
    
             <dependency>
     
    
- 
    
     
    
    
                 <groupId>org.springframework.cloud</groupId>
     
    
- 
    
     
    
    
                 <artifactId>spring-cloud-starter-zipkin</artifactId>
     
    
- 
    
     
    
    
                 <version>2.2.1.RELEASE</version>
     
    
- 
    
     
    
    
             </dependency>
     
    
 2.编写配置文件
  
   - 
    
     
    
    
     
      spring:
     
    
- 
    
     
    
    
     
        cloud:
     
    
- 
    
     
    
    
     
        application:
     
    
- 
    
     
    
    
     
          name: video
     
    
- 
    
     
    
    
     
        zipkin:
     
    
- 
    
     
    
    
     
          base-url: http://localhost:9412
     
    
 3.创建引导类
  
   - 
    
     
    
    
     
      @SpringBootApplication
     
    
- 
    
     
    
    
     
      public class VideoApplication {
     
    
- 
    
     
    
    
         public static void main(String[] args) {
     
    
- 
    
     
    
    
     
              SpringApplication.run(VideoApplication.class,args);
     
    
- 
    
     
    
    
     
          }
     
    
- 
    
     
    
    
     
      }
     
    
 4.写一个服务之间相互调用的接口
使用到openFeign--只是示例,没有业务代码
  
   - 
    
     
    
    
     
      @ApiOperation(value = "feign测试")
     
    
- 
    
     
    
    
     
      @GetMapping("/queryFeign")
     
    
- 
    
     
    
    
     
      public Result queryFeign(){
     
    
- 
    
     
    
    
     
           System.out.println("screen通过Feign调取project成功");
     
    
- 
    
     
    
    
          return  Result.build(Result.SUCCESS,"查询成功");
     
    
- 
    
     
    
    
     
      }
     
    
 其他的zipkin-client端 ,可按照以上四步去做
启动工程查看效果
启动工程打开浏览器访问:http://localhost:9412/

当有服务之间的调用时可以看到详情

如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
文章来源: blog.csdn.net,作者:小小张自由—>张有博,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/promsing/article/details/119278860
- 点赞
- 收藏
- 关注作者
 
             
           
评论(0)