Page 386 - 《软件学报》2025年第9期
P. 386
王尚 等: 基于神经网络的分布式追踪数据压缩和查询方法 4297
区间 (L n , H n ). 最后, 算术编码在该区间内选取一个具有最短的二进制表示的数字, 作为所有输入的最终表示.
为了更好地预测被压缩分组的数据, NCQT 在压缩过程动态更新模型. 为了控制额外的时间开销, 我们设置了
更新时间步 T. 模型每迭代 T 次会将前 T 个窗口拼接并计算整体预测的损失, 然后通过反向传播更新模型的参数,
并在下个时间步内使用该模型进行预测. 这个优化实际上是压缩比和压缩时间之间的平衡, 我们将在第 4 节研究
这种优化对压缩的影响.
除此之外, 模型预测和算术编码被设计为并行运行以提高方法压缩效率. 我们注意到, 算术编码器需要模型提
供概率, 然而模型的下一轮预测无需算术编码的结果. 因此, NCQT 在压缩时启动了模型预测和算术编码两个子进
程. 模型在完成预测后将结果加入任务队列中, 而算术编码进程则不断从队列中取出结果并生成下一区间的数字
表示. 当所有字符预测完成时, 模型预测进程向任务队列中加入结束符号, 算术编码进程在接收到结束符号后输出
最终的结果.
3.3 追踪数据搜索和解压
在冗余抽取阶段中, NCQT 在预处理时记录了追踪结构字典以及每种跨度的字段索引字典和组合字典, 并在
分组时记录了分组数据的索引字典. 这些索引表所占空间较小, 且对提高查询速度有显著作用. 因此, 索引表并不
会随跨度数据一同交由神经网络压缩, 而是使用轻量压缩工具 gzip 简单打包. 在搜索阶段, NCQT 首先将压缩的
索引表解压, 然后判断压缩数据中是否存在满足用户查询条件的跨度数据, 并定位到数据所在的分组, 最后解压涉
及的分组并还原其中符合要求的追踪数据.
为了方便用户搜索, NCQT 参考 Grafana Tempo 的 TraceQL 查询语句 [21] , 设计和实现了用于查找追踪数据的
查询语句, 支持用户对压缩数据执行各种复杂查询. 目前, NCQT 支持根据追踪 ID、跨度或资源的字段、时间和
结构等搜索满足条件的追踪, 表 1 给出了不同查询条件下查询语句的语法规则. 与现有工具类似, 追踪 ID 查询允
许用户根据全局唯一的追踪 ID 查询追踪. 在字段查询中, 用户可以根据资源或跨度的属性字段筛选追踪. NCQT
支持通过比较运算符 (包括>、<、>=、<=、!=等) 限定字段的取值范围, 并允许用户使用多组查询条件. 为了方便
用户了解追踪数据的取值特征, NCQT 提供了压缩数据上的聚合查询. 用户可以选择资源或跨度的某个字段, 查询
该字段在压缩数据中取值的范围、最大值和最小值等信息. 考虑到追踪数据包含了系统请求的调用过程, NCQT
还提供了结构查询的功能. 用户可以指定追踪的跨度关系, 并可以查询某一跨度在调用链上下游中几跳内的相邻
跨度.
表 1 查询语句的语法规则
查询条件 查询语句正则表达式
追踪标识符查询 Query trace by traceID: '([^']*)'
属性字段查询 Query (span|trace) by (span|resource) fields: (.+)
字段取值范围查询 Query value range for (span|resource) field: '([^']*)'
字段最值查询 Query (max|min) value for (span|resource) field: '([^']*)'
上下游关系查询 Query trace based on context relation: '([^']*)' (follows|precedes) '([^']*)'
上下游节点查询 Query (upstream|downstream) nodes for span: '([^']*)' hops (\d+)
3.3.1 搜 索
给定一个字段查询语句, NCQT 将其解析并转换为需要满足的条件组, 然后交由定位器找到满足条件的分组.
算法 3 和图 8 给出了一个单字段搜索的示例, 定位器首先查询每个跨度容器的索引字典, 以确认目标字段是否存
在于该跨度中. 如果存在, 定位器记录字段对应的参数字典中满足条件的参数值的索引. 其次, 定位器在组合字典
中寻找包含目标字段的组合, 并记录目标字段在该组合中的位置. 接着, 定位器在结构容器中找出所有包含目标跨
度的结构. 由于预处理后的追踪数据按照结构的前序遍历顺序依次存储跨度, 因此可以根据结构额外记录目标跨
度在所在结构的追踪中的存储位置. 然后, 定位器在每个分组的索引中检查该分组是否包含目标结构, 将满足条件
且尚未解压的分组加入解压列表. 最后, 定位器在解压后的分组中找到目标追踪条目, 并根据之前记录的信息快速

