前言:不断学习就是程序员的宿命。
一、概述
在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的服务节点调用来协同产生最后的结果,每一个前段请求都会形成一个复杂的分布式服务调用链路,链路中的任何一环出现高延迟或错误都会引起整个请求最后的失败。
SpringCloud Sleuth提供了一套完整的服务跟踪的解决方案。在分布式系统中提供了追踪解决方案并且兼容支持了zipkin
官网地址:https://spring.io/projects/spring-cloud-sleuth
完整请求链:一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各Span通过parent id关联
精简官方原理图: 一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各Span通过Parent Id关联
整个链路的依赖关系如下:
Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
span:表示调用链路来源,通俗的理解span就是一次请求信息
二、链路监控搭建
简单来说,Sleuth负责收集整理,zipkin负责展现。
1、下载安装zipkin
SpringCloud从F版已不需要自己搭建Zipkin Server了,只需调用jar包即可
下载地址:https://dl.bintray.com/openzipkin/maven/io/zipkin/java/zipkin-server/
运行zipkin:zipkin-server-2.12.9-exec.jar
2、测试
2.1、pom添加sleuth依赖
<!--包含了sleuth+zipkin--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
2.2、application.yml添加sleuth配置
spring: application: name: cloud-consumer-order # zipkin/sleuth链路跟踪 zipkin: base-url: http://localhost:9411 sleuth: sampler: # 采样值介于0到1之间,1表示全部采集 probability: 1