0
点赞
收藏
分享

微信扫一扫

SpringCloud Sleuth分布式请求链路跟踪


SpringCloud Sleuth分布式请求链路跟踪

  • ​​1、Spring Cloud Sleuth概述​​
  • ​​1.1 为什么会出现这个技术?​​
  • ​​1.2 什么是Spring Cloud Sleuth?​​
  • ​​1.3 zipkin是什么?​​
  • ​​2、搭建链路监控步骤​​
  • ​​2.1 zipkin​​
  • ​​2.1.1 下载jar包​​
  • ​​2.1.2 访问控制台​​
  • ​​2.1.3 关键术语​​
  • ​​2.2 服务提供者配置​​
  • ​​2.3 服务消费者配置(调用方)​​
  • ​​2.4 测试​​

源码仓库地址:​​gitee仓库地址​​

1、Spring Cloud Sleuth概述

1.1 为什么会出现这个技术?

  在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。

SpringCloud Sleuth分布式请求链路跟踪_spring boot

  上面这个调用链路还能看懂,那下面这个呢?

SpringCloud Sleuth分布式请求链路跟踪_java_02

1.2 什么是Spring Cloud Sleuth?

SpringCloud Sleuth分布式请求链路跟踪_java_03

  Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案。

  在分布式系统中提供追踪解决方案并且兼容支持了zipkin。

1.3 zipkin是什么?

  Zipkin是一个开源的分布式追踪系统,用于对微服务间的调用链路及逆行监控跟踪。再微服务建构下,用户的一个请求可能涉及多个后台服务间的调用。Zipkin可以追踪(trace)调用链路、收集再各个微服务上所花的时间等信息,并上报到Zipkin服务器。

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_04

  Zipkin UI 还提供了一个依赖关系图,显示有多少跟踪请求通过了每个应用程序。这有助于识别聚合行为,包括错误路径或对已弃用服务的调用。

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_05

2、搭建链路监控步骤

2.1 zipkin

2.1.1 下载jar包

  SpringCloud从F版起已不需要自己构建Zipkin Server了,只需调用jar包即可。

  zipkin官网地址:​​https://zipkin.io/pages/quickstart.html​​

  下载完成之后运行Jar

java -jar zipkin-server-2.23.16-exec.jar

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_06

2.1.2 访问控制台

  访问控制台:http://localhost:9411/zipkin/

SpringCloud Sleuth分布式请求链路跟踪_Sleuth_07

2.1.3 关键术语

  下图所示为一条完整的调用链路,一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_08

上图看起来复杂,简单解释如下:

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

SpringCloud Sleuth分布式请求链路跟踪_zipkin_09

SpringCloud Sleuth分布式请求链路跟踪_java_10

  Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识。

  span:表示调用链路来源,通俗的理解span就是一次请求信息

2.2 服务提供者配置

  在cloud-provider-payment8001模块中,

  引入依赖:

<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

SpringCloud Sleuth分布式请求链路跟踪_spring boot_11

  yml中配置:

SpringCloud Sleuth分布式请求链路跟踪_Sleuth_12

  业务类中添加一条测试方法

SpringCloud Sleuth分布式请求链路跟踪_Sleuth_13

2.3 服务消费者配置(调用方)

  cloud-consumer-order80模块做如下修改:

  pom.xml中引入相关依赖

<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

SpringCloud Sleuth分布式请求链路跟踪_spring boot_14

  application.yml

SpringCloud Sleuth分布式请求链路跟踪_spring boot_15

  业务类添加一条测试方法

//  public static final String PAYMENT_URL="http://CLOUD-PAYMENT-SERVICE";
// ====================> zipkin+sleuth
@GetMapping("/consumer/payment/zipkin")
public String paymentZipkin()
{
String result = restTemplate.getForObject(PAYMENT_URL+"/payment/zipkin/", String.class);
return result;
}

SpringCloud Sleuth分布式请求链路跟踪_zipkin_16

  这里的意思是在cloud-consumer-order80消费者模块中调用cloud-provider-payment8001服务提供者模块中的方法,发生服务调用,我们就可以去zpkin控制台中查看链路调用。

2.4 测试

  依次启动eureka7001/8001/80

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_17

  访问http://localhost/consumer/payment/zipkin,产生服务调用,多访问几次。

SpringCloud Sleuth分布式请求链路跟踪_spring cloud_18

  查看某一条调用链路

SpringCloud Sleuth分布式请求链路跟踪_zipkin_19

  查看依赖关系:

SpringCloud Sleuth分布式请求链路跟踪_spring boot_20

  到此,服务链路追踪测试就介绍完了,这里只介绍个大概的用法,高级用法碰到再说。


举报

相关推荐

0 条评论