分布式链路追踪

分布式链路追踪用于解决微服务中日志散乱的问题,通过TraceId、SpanId和ParentSpanId追踪请求在分布式系统中的完整路径。追踪包括跟踪(trace)和跨度(span),其中TraceId标识整个链路,SpanId表示服务内部视图,ParentSpanId记录上游服务信息。使用时,可以在请求头或元数据中传递这些ID,通过拦截器和中间件收集信息,甚至扩展到数据库日志,以便于快速定位和解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 概述

在项目中随着项目的业务越来越复杂,以及项目的微服务化等,导致平常的项目中出现如:同一次操作日志散乱等现象,对通过查询日志的方式排查问题造成极大困扰.因此迫切需要一种可以追溯当前链路操作日志的手段。

当有效的日志信息不是很明显,我们需要追溯本次操作整个链路的关键信息时,由于日志的散乱,可能在此事上面耗费较大的精力并且结果还可能有误,分布式链路追踪就是为了解决这种情况下出现的。

2. 追踪实现

在分布式链路跟踪中有两个重要的概念:跟踪(trace)和 跨度( span)。trace 是请求在分布式系统中的整个链路视图,span 则代表整个链路中不同服务内部的视图,span 组合在一起就是整个 trace 的视图。

追踪和跨度的由三个参数实现:TraceId、SpanId、ParentSpanId

TraceId:
日志中每一次操作都有该次操作的唯一TraceId,属于当前操作的所有相关日志都记录了本次的TraceId,回溯的时候只需要通过TraceId就能获取到指定操作的全链路日志信息,这样可以保证获取的信息都是咱们想要的,节省了不少排查问题的精力。
TraceId可以解决项目微服务化下操作日志散乱的现象。

SpanId、ParentSpanId:
在分布式链路跟踪中有两个很重要的概念:跟踪(trace)和跨度(span)。trace是请求在分布式系统中的整个链路视图,Span则代表整个链路中不同服务内部的视图,Span组合在一起就是整个trace的视图。
请求到达每个服务后,服务都会为请求生成SpanId,而随请求一起从上游传过来的上游服务的spanid都会被记录成ParentSpanId,
当前服务生成的 spanid 随着请求一起再传到下游服务时,这个spanid 又会被下游服务当做 pspanid 记录。

通过在访问日志和业务日志里记录的traceid、spanid 和 pspanid 能完整的还原出整个请求的调用链路视图,对错误排查能起到很大的帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值