简单过一些 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.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.