在项目中使用Zipkin--链路追踪

举报
小小张自由--张有博 发表于 2021/11/22 23:34:47 2021/11/22
【摘要】 在项目中使用Zipkin--链路追踪 zipkin简介 zipkin基本概念 运行关系图 左边部分代表了客户端分别为: 右边线框内代表了Zipkin的服务端,其中各组件的功能如下: 在项目中使用Zipkin zipkin-server端 1.导入依赖 2. 编写配置文件 3.创建引导类 zipkin-client端...

在项目中使用Zipkin--链路追踪

zipkin简介

zipkin基本概念

运行关系图

左边部分代表了客户端分别为:

右边线框内代表了Zipkin的服务端,其中各组件的功能如下:

在项目中使用Zipkin

zipkin-server端

1.导入依赖

2. 编写配置文件

3.创建引导类

zipkin-client端    client需要有多个,本篇只拿一个进行举例。

1.引入依赖

2.编写配置文件

3.创建引导类

4.写一个服务之间相互调用的接口

启动工程查看效果

启动工程打开浏览器访问: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.导入依赖


  
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-web</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-test</artifactId>
  13. <scope>test</scope>
  14. </dependency>
  15. <!--zipkin服务端所需的依赖-->
  16. <dependency>
  17. <groupId>io.zipkin.java</groupId>
  18. <artifactId>zipkin-server</artifactId>
  19. <version>2.12.3</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>io.zipkin.java</groupId>
  23. <artifactId>zipkin-autoconfigure-ui</artifactId>
  24. <version>2.12.3</version>
  25. </dependency>
  26. </dependencies>

2. 编写配置文件


  
  1. server:
  2. port: 9412
  3. #zipkin启动报错无法访问的解决方法
  4. management:
  5. metrics:
  6. web:
  7. server:
  8. auto-time-requests: false

3.创建引导类


  
  1. /**
  2. * @Author: Promsing(张有博)
  3. * @Date: 2021/7/23 - 10:33
  4. * @Description: Zipkin的服务端
  5. * @version: 1.0
  6. */
  7. @SpringBootApplication
  8. @EnableZipkinServer //zipkin的注解
  9. public class ZipkinApplication {
  10. public static void main(String[] args) {
  11. SpringApplication.run(ZipkinApplication.class,args);
  12. }
  13. }

zipkin-client端 -- client需要有多个,本篇只拿一个进行举例。

1.引入依赖


  
  1. <!--Zipkin的依赖-->
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-zipkin</artifactId>
  5. <version>2.2.1.RELEASE</version>
  6. </dependency>

2.编写配置文件


  
  1. spring:
  2. cloud:
  3. application:
  4. name: video
  5. zipkin:
  6. base-url: http://localhost:9412

3.创建引导类


  
  1. @SpringBootApplication
  2. public class VideoApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(VideoApplication.class,args);
  5. }
  6. }

4.写一个服务之间相互调用的接口

使用到openFeign--只是示例,没有业务代码


  
  1. @ApiOperation(value = "feign测试")
  2. @GetMapping("/queryFeign")
  3. public Result queryFeign(){
  4. System.out.println("screen通过Feign调取project成功");
  5. return Result.build(Result.SUCCESS,"查询成功");
  6. }

其他的zipkin-client端 ,可按照以上四步去做

启动工程查看效果

启动工程打开浏览器访问:http://localhost:9412/

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

 如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。

文章来源: blog.csdn.net,作者:小小张自由—>张有博,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/promsing/article/details/119278860

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。