Spring Cloud Sleuth
介绍
Spring Cloud Sleuth是Spring Cloud 的一个组件,主要功能是在分布式系统中提供服务链路追踪的解决方案。
微服务架构是一个分布式架构,微服务系统按业务划分服务单元,一个微服务系统往往有多个服务单元,一个请求往往需要调用多个服务才能完成,如果在服务调用的过程中出现了错误,定位问题就变的异常艰难,因为每一个服务都有很多请求,即使在当前服务中找到了异常的内容,但是前置信息却没那没容易找到,这时候就需要链路追踪了。
链路追踪的必要性:假设在没有链路追踪的情况下,A服务依次调用了B、C、D服务,其中调用D服务的时候出问题了,A服务返回异常,能够掌握的信息往往就只有发起请求时的数据,需要一步一步的将调用其他服务时的参数整理出来,如果这些数据之间存在依赖关系,那这项排错的成本会非常高
基本术语
- Span:基本工作单元,发送一个远程调度任务就会产生一个Span,Span是用一个64位ID唯一标识的。Span中包含其他信息:摘要、时间戳事件、Span的ID以及进程ID
- Trace:由一系列Span组成,呈树状结构。标识微服务系统的一次请求,请求中每次调用其他的服务都会生成一个Span,所以的Span组成Trace。
- Annotation:记录一个事件,包含一些核心注解,这些注解用于定义一个请求的开始和结束。
- cs-Client-Sent:标记客户端发送
- sr-Server Received:标记服务端接收客户端发送请求的事件。sr减去cs便是网络传输的时间
- ss-Server Sent:标识服务端发送响应时间。表示服务端已经处理完请求。ss减去sr表示服务请求处理的时长
- cr-Client Received:标识客户端接收响应时间。cr减去cs便是整个请求消耗的时间
通过HTTP记录链路数据
流程:通过gateway-service代理请求user-service,链路数据存储到zipkin-server,再持久化到mysql数据库
gateway-service
引入jar包依赖
添加注解和配置
user-service
引入jar包依赖
添加接口和配置
zipkin-server
引入jar包依赖
添加注解和配置
设置mysqlstorage 的bean
结果描述
访问网关接口,然后网关转发信息调用user-service的api,过程中所有数据信息发送zipkin-server,并持久化到mysql
接口访问
zipkin-server界面展示,请求地址:http://localhost:9411;
链路的详细信息:
数据库中也有相应的记录
数据库中trace_id为String转换为Long后的值
内容来自《深入理解Spring Cloud与微服务构建》