链路跟踪框架为什么要在服务消费侧创建 Span

查看 87|回复 3
作者:choice4   
简单过一些 APM 实现(SkyWalking, Pinpoint, Elastic-apm), 发现这些组件在发生一次调用时,都会新创建一个 Span 并将当前上下文的 Span 作为其父级. 比如对于一次调用: HTTP Start-> DUBBO Consumer -> DUBBO Provider -> HTTP END,普遍在 HTTP 入口处创建使用一个 Span, 同时在 DUBBO Consumer 开始调用时(还没有跨越进程)会新创建一个 Span 并将相关 Trace 信息传入 Provider 侧,类似:
HTTP Span1 Enter -> DUBBO consumer Span2 ENTER -> Dubbo Provider Span3 ENTER -> DUBBO Provider Span3 EXIT -> DUBBO consumer Span2 EXIT -> HTTP Span1 Exit.
请问有没有人知道 Consumer 侧的这一次 Span 创建有什么作用呢?或者说是用于解决什么问题,理论上来说这里,应该只要传入当前 Trace 信息即可,不需要插入一次 Consumer 的 Span, 如果 Span 的创建始终在被调用侧会有什么问题吗?类似:
HTTP Span1 Enter -> Dubbo Provider Span2 ENTER -> DUBBO Provider Span2 EXIT -> HTTP Span1 Exit.

dubbo, span, Provider, consumer

liuxu   
为了调试时定位问题方便
choice4
OP
  
@liuxu consumer 侧不加入 span ,定位问题会出现什么困难呢?这个没有想到
liuxu   
@choice4 不加等遇到问题时就晚了,调试不是点到为止,是刨根问底
您需要登录后才可以回帖 登录 | 立即注册

返回顶部