CS-Notes 学习笔记
Java 后端 · 分布式与消息队列

分布式链路追踪是怎样实现的?traceId 和 spanId 分别是什么?

先自己想一想,再看参考要点

参考要点

  • 链路追踪为每个请求分配一个 traceId,调用下游时通过 HTTP 首部传递,各个服务打印日志、上报耗时时都带上它,出错时能知道是哪一步出了错、每一步耗时多少
  • W3C Trace Context 规定的 traceparent 首部四段依次是版本、traceId、调用方这次请求的 spanId 和采样标记
  • 每个服务处理请求时生成自己的 spanId 并记下父 spanId,这些 span 上报到 Zipkin、SkyWalking 等系统后,按 traceId 还原出完整的调用树和每一段的耗时
  • 用 traceId 在日志系统中搜索,能找到这个请求在所有服务中的日志
在学习站中自测这道题

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。