1、概述
①、为什么使用Sleuth
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。
对于上面这张图,较为简单,监控与否无关紧要,但是对于大型分布式系统而言呢?成百上千个服务使我们不得不对服务链路进行追踪
②、什么是Sleuth
Spring Cloud Sleuth
提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并兼容支持了zipkin
,前者负责监控,后者负责显示,也就是服务调用服务可以以图形化的界面展示出来。
2、搭建一个链路监控
①、下载zipkin
下载到本地后执行
cmd
命令启动
java -jar zipkin-server-2.12.9-exec.jar
访问
http://localhost:9411/zipkin/
②、术语
一条链路通过
Trace ld
唯一标识,Span
标识发起的请求信息,各Span
通过parent id
关联起来
翻译为服务链路关系:
- Trace:类似于树结构的
Span
集合,表示一条调用链路,存在唯一标识 - Span:表示调用链路来源,通俗的理解
Span
就是一次请求信息
③、添加POM
向服务添加
zipkin
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
④、YML添加配置
服务提供者和消费者都要加上,注意缩进
sleuth:
sampler:
#采样取值介于 0到1之间,1则表示全部收集
probability: 1
⑤、测试
启动
Eureka
(7001
)和服务提供者(8001
)消费者(8002
)
调用服务,多点几次
访问
http://localhost:9411/zipkin/
点击查找
也可以根据服务名查找
点击某一条记录能查看到调用细节
也可以查看依赖