文章目录
什么是全链路日志追踪
谷歌的一篇论文,论述了相关的概念。论文讲述了谷歌的大规模分布式系统全链路日志追踪基础设施Dapper。
全链路日志追踪主要应用于大规模的、复杂的分布式系统之中。其中,有几个主要的概念:
-
trace_id:分布式全局唯一id标识,由系统第一个被调起的模块生成,并在各个span间传递;
-
span_id:区分模块用id,通过span_id和trace_id可以定位到具体的模块的一次请求;
-
parent_span_id:调用当前模块的父级模块span_id;
-
Cs CLIENT_SEND:客户端发起请求;
-
Cr CLIENT_RECIEVE:客户端收到响应;
-
Sr SERVER_RECIEVE:服务端收到请求;
-
Ss SERVER_SEND:服务端发送结果;
另外,有些实现,会产生rpc_id去记录下一次完整rpc调用的链路;
根据采集到的数据,可以还原一次调用链路的树状图,可以通过该树状图明确的看出各个服务间调用的情况,响应时间等数据,如下图所示:
通过论文的阅读可以知道,Dapper的实现思路是:
- 产生日志;
- 采集日志;
- 写表;
调用链的基本要求:
- 低开销;
- 应用层透明;
- 可扩展;
- 收集及时。