追踪分布式服务的链路
1 Sleuth介绍
1.1 出现原理
- 在微服务框架中,一个客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败
- 所以随着服务节点的越来越多,有必要对一个服务请求,到底经过多少节点进行跟踪
1.2 Sleuth简介
- Spring Cloud Sleuth 提供了一套完整的服务跟踪的解决方案
- 在分布式系统中提供追踪解决方案并且兼容支持了zipkin
2 链路监控搭建
2.1 zipkin下载与运行
- zipkin官方为我们配置好了服务,我们直接下载jar包运行即可,不用我们配置服务器来查看
- 下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/ (选择exec结尾的版本)
- 运行
java -jar jar包名称
即可,服务器就成功启动
- 访问:http://localhost:9411/zipkin/ ,可以进入其web界面
2.2 完整链路结构
- 链路结构类似链表结构,一个SpanId表示当前节点的id,一个TracetId表示前一个节点的id
2.3 搭建
- 我们以之前的项目
cloud-provider-payment8001
和cloud-consumer-order80
来进行搭建链路跟踪
- (1)引入依赖(两个项目都要)
1
2
3
4
5<!-- zipkin & sleuth -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- (2)修改yaml
1
2
3
4
5
6spring:
zipkin:
base-url: http://localhost:9411 #监控数据打印的位置
sleuth:
sampler:
probability: 1 # 采用率值介于0-1,1表示全部采集
- (3)测试:启动项目,访问80消费者端接口,回到zipkin的web监控界面刷新