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··]