qtrace-node 中的 Trace(调用链)通过归属于此调用链的 Span 来隐性的定义。 特别说明,一条 Trace(调用链)可以被认为是一个由多个 Span 组成的,整个Trace可以理解为一颗节点树,下图是span和span的关系表述 例如:下面的示例 Trace 就是由8个 Span 组成:
单个 Trace 中,span 间的节点树关系
[Span A] 1 ←←←(the root span)
|
+------+------+
| |
[Span B]1.1 [Span C]1.2 ←←←(Span C 是 Span A 的子节点)
| |
[Span D]1.1.1 +---+-------+
| |
[Span E] [Span F] >>> [Span G] >>> [Span H]
1.2.1 1.2.2 ↑
↑
↑
(Span G 在 Span F 后被调用, FollowsFrom)
使用下面这种,基于时间轴的时序图可以更好的展现 Trace(调用链):
单个 Trace 中,span 间的时间关系
––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|–> time
[Span A···················································]
[Span B··············································]
[Span D··········································]
[Span C········································]
[Span E·······] [Span F··] [Span G··] [Span H··]