热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

笔记:Sleuth的底层逻辑

Sleuth是通过打入到Log中的“卧底”来串联前后日志的。你集成了Sleuth组件之后,它会向你的日志中打入三个“特殊标记”,其中一个标记你应该已经清
Sleuth 是通过打入到 Log 中的“卧底”来串联前后日志的。你集成了 Sleuth 组件之后,

它会向你的日志中打入三个“特殊标记”,其中一个标记你应该已经清楚了,那便是

Trace ID。剩下的两个标记分别是 Span ID 和 Parent Span ID,这俩用来表示调用的前后

顺序关系。

所谓 Span,它是 Sleuth 下面的一个基本工作单元,当服务请求抵达当前单元时,Sleuth

就会为这个单元分配一个独一无二的 Span ID,并标记单元的开始时间和结束时间,这样

就可以记录每个单元的处理用时了。

而 Parent Span ID 呢,顾名思义,它指向了当前单元的父级单元,也就是上游的调用者。

一个环环相扣的调用链就通过 Parent Span ID 被串了起来。



 

从上面的图中可以看出,这个服务请求调用了三个微服务,分别为服务 A、服务 B 和服务

C。

在一条调用链中,不管你调用了多少个微服务,Sleuth 为本次调用生成的全局唯一 Trace

ID 都会贯穿整个链路,所图中三个微服务所对应的日志 Trace ID 都是 A1。

由于服务 A 是调用链的起点,所以它并没有父级单元,因此它的 Parent Span ID 为空,

而起始单元的 Span ID 和 Trace ID 则是相同的,值都为 A1
 
对于服务 B 来说,它的父级调用单元是服务 A,因此它的 Parent Span ID 指向了服务 A
的 Span ID,即 A1;同理,服务 C 的 Parent Span ID 指向了服务 B 的 Span ID,即
B2。


 


推荐阅读
author-avatar
ga70752ga你
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有