
Opentracing:ChildOf与FollowsFrom关系的差异与应用
在分布式追踪系统Opentracing中,ChildOf和FollowsFrom用于关联多个Span,但它们代表着不同的关系类型。正确理解并使用这两种关系对于构建清晰、准确的追踪数据至关重要。
ChildOf关系:因果关联
ChildOf表示明确的因果关系:父Span直接导致子Span的产生。子Span继承父Span的上下文信息(Trace ID, Span ID, 父Span ID)。即使子Span在不同的Goroutine或进程中执行,它也始终属于父Span的同一逻辑上下文。
FollowsFrom关系:时间顺序关联
FollowsFrom表示时间上的先后顺序,而非直接的因果关系。第二个Span的创建并非直接由第一个Span触发。上下文信息不会继承,追踪ID也可能不同,因为它们可能属于不同的逻辑上下文。
MALL的中文含义是购物中心,是区别于专卖店和百货公司的一个流行的商业模式,MALL里面是各个独立商家,自由自主的定价,各自管理自己的供销渠道和客户关系。电子商务的MALL模式其实就是对B2C业务模式做了多主体的扩展和延伸。目前具有代表性的电子商务MALL模式就是淘宝商城。比如淘宝电器城,他们的模式更像是做房地产的,阿里巴巴有着繁华的互联网商业物业,只是开了一个名字叫淘宝电器城的大市场而已,没有任
应用场景选择
-
ChildOf:适用于一个Span直接调用或创建另一个Span的情况,例如,一个请求处理器创建子Span处理单个请求。 -
FollowsFrom:适用于两个Span存在时间先后关系,但没有直接因果关系的情况,例如,一个Span处理另一个Span的事件处理结果。
示例解读
上图所示:
- Span A与Span C之间为
ChildOf关系,Span C是Span A的直接结果。 - Span A与Span D之间为
FollowsFrom关系,Span D发生在Span A之后,但并非由Span A直接触发。
总结
ChildOf和FollowsFrom是Opentracing中构建Span关系的关键,它们的区别在于因果关系的存在与否。正确地使用它们可以确保追踪数据的准确性和可读性,从而更有效地分析和调试复杂分布式系统。









