Sleuth

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

Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并兼容支持了zipkin。

ZipKin下载安装

  1. 到zipkin的github上下载zipkin

  2. 使用maven进行编译(里面带有的前端项目会使用到npm)

    1. # get the latest source
    2. git clone https://github.com/openzipkin/zipkin
    3. cd zipkin
    4. # Build the server and also make its dependencies
    5. ./mvnw -DskipTests --also-make -pl zipkin-server clean install
  1. 运行zipkin
    1. # Run the server
    2. java -jar ./zipkin-server/target/zipkin-server-*exec.jar
  1. 使用浏览器访问:http://localhost:9411

ZipKin一条链路通过TraceID唯一标识,Span标识发起的请求信息,各span通过parentID关联。

一条链路的请求如下图:

链路依赖如下:

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

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

环境搭建

  1. 在pom中加入依赖
    1. <dependency>
    2. <groupId>org.springframework.cloud</groupId>
    3. <artifactId>spring-cloud-starter-sleuth</artifactId>
    4. </dependency>
  1. 在配置文件中添加配置
    1. spring:
    2. sleuth:
    3. sampler:
    4. probability: 1 # 采样率介于0到1之间,配置成1则表示全部采集
    5. zipkin:
    6. base-url: http://localhost:9411 # zipkin路径
  1. 请求微服务中的controller后,可以在zipkin中查找到对应的服务调用链路详细信息