Page 393 - 《软件学报》2025年第9期
P. 393

4304                                                       软件学报  2025  年第  36  卷第  9  期



                                               表 6 用于查询性能评估的查询集

                  查询类型 序号                              查询语句                             追踪   跨度 结构种类
                 追踪ID查询 Q1 Query trace by traceID: 'twMveyd0doAiUYlrTcG7Fg=='            1    9     1
                          Q2 Query span by resource fields: 'service.name'='shipping' and 'duration'>'500ms'  6 207 21 553  21
                             Query  trace  by  resource  fields:  'k8s.node.name'='k8s-node-3'  and  'telemetry.sdk.
                          Q3  language'!='nodejs'                                       14 190 88 528  21
                  字段查询
                          Q4 Query span by span fields: 'db.system'='mysql' and 'thread.name'='http-nio-8 080-exec-36'  52  52  12
                             Query  trace  by  span  fields:  'name'='GET  /check/:id'  and  'http.status_code'>='400'  and
                          Q5                                                             359  7 180  4
                             'startTimeUnixNano'>'1 701 790 447 000 000 000'
                          Q6 Query max value for span field: 'http.response_content_length'  -  -   -
                  聚合查询
                          Q7 Query value range for resource field: 'process.command'     -    -     -
                             Query  trace  based  on  context  relation:  'shipping#SELECT  City'  follows  'shipping#City
                          Q8                                                            2 838 14 166  7
                             Repository.findByCode'
                             Query trace based on context relation: 'shipping#HTTP POST' precedes 'cart#middleware-
                  结构查询    Q9                                                            2 445 34 228  2
                             query'
                          Q10 Query upstream nodes for span: 'catalogue#dns.lookup' hops 3  5  14   5
                          Q11 Query downstream nodes for span: 'user#GET' hops 4         542  1 086  2

                    表  7  显示了  NCQT  和其他工具的搜索性能对比. 由于         NCQT  在查询的过程中可能涉及解压, 因此我们分别列
                 出了所有数据无需神经网络解压            (NCQT-Warm) 以及所有数据均需神经网络解压           (NCQT-Cold) 时的时间开销. 从
                 表  7  中可以看出, 在不需要解压的情况下, NCQT         在所有类型中的查询开销均为最低值. 在              Q2  的查询中, NCQT-
                 Warm  的查询效率是    Tempo  的  3 776  倍, 是  Jaeger 的  40  倍; 而对于  Q1  单条追踪的查询, NCQT-Warm  与对比工具
                 也拉开了   10  倍和  3  倍的差距; 在结构查询上, Tempo    的时间开销平均是       NCQT-Warm  的  128  倍. 结果表明, NCQT
                 在不需要解压时查询速度快于           Tempo  和  Jaeger, 这是由于  NCQT  在冗余提取时提供了丰富的索引字典, 搜索时无
                 需对所有数据进行扫描, 而且可以快速判断追踪数据是否满足要求. 然而, 当满足条件的数据未被解压时, NCQT
                 的查询性能会有所降低, NCQT-Cold       显示了所有数据均需要解压的最坏情况下的查询时间. 相较于现有的追踪查
                 询工具, NCQT   在该情况下平均需要花费更多的时间查询数据. 然而, NCQT-Cold                在  Q3  上优于  Tempo, 这意味着
                 当满足条件的追踪数据较多时, NCQT            可以持平甚至超过       Tempo  的查询速度. 实验结果证明了冷数据问题对
                 NCQT  查询效率的影响, 因此      NCQT  在搜索时会对目标分组的相邻分组预先解压, 以最大程度缓解解压带来的时
                 间开销. 需要注意的是, 解压带来的额外成本仅在首次未命中时存在, 一旦分组解压后, 后续所有基于该分组查询
                 的效率均与    NCQT-Warm  类似. 一般情况下, NCQT      的查询效率根据需要解压的分组数量介于                NCQT-Warm  与
                 NCQT-Cold  之间, 而分组指标会影响满足查询条件的数据在分组中的分布情况, 因此我们在第                         4.4  节中进一步研
                 究了分组对查询效率的影响.


                                               表 7 不同工具的查询性能比较 (s)

                                     查询      NCQT-Warm    NCQT-Cold   Tempo     Jaeger
                                      Q1       0.007       226.730     0.071    0.020
                                      Q2       0.095       601.410    358.747   3.860
                                      Q3       4.278       604.368    820.161   7.928
                                      Q4       0.041       599.332     2.201    0.759
                                      Q5       0.334       599.752    18.939    1.379
                                      Q6       0.003        0.003      0.090     -
                                      Q7       0.001        0.001      1.605     -
                                      Q8       0.771       598.407    141.047    -
                                      Q9       1.311       488.842    122.458    -
                                     Q10       0.021       758.967     1.400     -
                                     Q11       0.161       344.563    27.520     -
   388   389   390   391   392   393   394   395   396   397   398