
Opentracing:ChildOf与FollowsFrom的差异详解
在Opentracing分布式追踪系统中,ChildOf和FollowsFrom用于定义跨度(Span)间的关联关系。虽然两者都表示关联,但其含义存在细微却重要的区别。
ChildOf:父子关系
ChildOf表示严格的父子关系。一个跨度作为另一个跨度的子跨度创建,则它们之间存在ChildOf关系。这暗示着父跨度启动了子跨度,且子跨度会在父跨度结束前完成。
FollowsFrom:因果关系
FollowsFrom表示因果关系,但并非父子关系。一个跨度在另一个跨度之后执行,但并非直接由其启动,则它们之间存在FollowsFrom关系。这表明存在时间上的先后顺序,但并非直接的包含关系。
如何选择ChildOf或FollowsFrom?
选择哪种关系取决于跨度间的实际关联:
-
直接父子关系: 使用
ChildOf。例如,一个函数调用另一个函数,后者是前者的子跨度。 -
时间先后,非直接父子关系: 使用
FollowsFrom。例如,一个任务完成后,另一个独立的任务才开始执行。
正确理解并运用ChildOf和FollowsFrom,可以构建清晰的分布式追踪图,有效分析系统性能和排查问题。









