SpringCloud Sleuth分布式请求链路跟踪
@[toc](SpringCloud Sleuth分布式请求链路跟踪)
源码仓库地址:gitee仓库地址
1、Spring Cloud Sleuth概述
1.1 为什么会出现这个技术?
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
上面这个调用链路还能看懂,那下面这个呢?
1.2 什么是Spring Cloud Sleuth?
Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案。
在分布式系统中提供追踪解决方案并且兼容支持了zipkin。
1.3 zipkin是什么?
Zipkin是一个开源的分布式追踪系统,用于对微服务间的调用链路及逆行监控跟踪。再微服务建构下,用户的一个请求可能涉及多个后台服务间的调用。Zipkin可以追踪(trace)调用链路、收集再各个微服务上所花的时间等信息,并上报到Zipkin服务器。
Zipkin UI 还提供了一个依赖关系图,显示有多少跟踪请求通过了每个应用程序。这有助于识别聚合行为,包括错误路径或对已弃用服务的调用。
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
2.1.2 访问控制台
访问控制台:http://localhost:9411/zipkin/
2.1.3 关键术语
下图所示为一条完整的调用链路,一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来
上图看起来复杂,简单解释如下:
一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来
Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识。
span:表示调用链路来源,通俗的理解span就是一次请求信息
2.2 服务提供者配置
在cloud-provider-payment8001模块中,
引入依赖:
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
yml中配置:
业务类中添加一条测试方法
2.3 服务消费者配置(调用方)
cloud-consumer-order80模块做如下修改:
pom.xml中引入相关依赖
<!--包含了sleuth+zipkin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
application.yml
业务类添加一条测试方法
// 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;
}
这里的意思是在cloud-consumer-order80消费者模块中调用cloud-provider-payment8001服务提供者模块中的方法,发生服务调用,我们就可以去zpkin控制台中查看链路调用。
2.4 测试
依次启动eureka7001/8001/80
访问http://localhost/consumer/payment/zipkin,产生服务调用,多访问几次。
查看某一条调用链路
查看依赖关系:
到此,服务链路追踪测试就介绍完了,这里只介绍个大概的用法,高级用法碰到再说。
- 点赞
- 收藏
- 关注作者
评论(0)