Spring Cloud 之分布式请求链路追踪Spring Cloud Sleuth

383 阅读2分钟

一、概述

  • 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请求最后的失败。 image.png
  • 官方
  • Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案
  • 在分布式系统中提供追踪解决方案并且兼容支持了zipkin image.png

1. 术语

image.png

  • 在此之前,提前说明几个术语
    • Trace:类似于树结构的Span集合,表示一条调用链路,存在唯一标识
    • span:表示调用链路来源,通俗的理解span就是一次请求信息
  • 一条链路通过Trace Id唯一标识,Span标识发起的请求信息,各span通过parent id 关联起来

二、安装

  • 可以直接下载zipkin的jar包,通过命令运行
java -jar zipkin-server-2.12.9-exec.jar
docker run -d -p 9411:9411 openzipkin/zipkin
  • 下载运行之后,可以在浏览器上直接打开监视界面。
http://192.168.233.139:9411/zipkin/

image.png

三、实验

  • 在链路上的服务调用者和被调用者,添加zipkin,即可实现监控。一切皆基于前面几节的服务注册、服务发现和服务调用。

1. 导包

  • 首先,添加一个包
<!--包含了sleuth+zipkin-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

2. 修改配置文件

spring:
  zipkin:
    base-url: http://localhost:9411
  sleuth:
    sampler:
      #采样率值介于 0 到 1 之间,1 则表示全部采集
     probability: 1

3. 测试

  • 向处于链路头节点的服务发送请求,多点几次。
  • 打开zikpin查看状态 image.png
  • 可以在上面看到各个服务所耗费的时间。
  • 也可以点击上面的依赖,看目前各个span之间的依赖关系。(但我这里打不开,不知道为什么)