Page 379 - 《软件学报》2025年第9期
P. 379
4290 软件学报 2025 年第 36 卷第 9 期
3 基于神经网络的追踪压缩和查询方法
为了高效存储和查询分布式追踪数据, 本文提出了一种基于神经网络的追踪压缩方法 NCQT. 方法利用神经
网络强大的上下文学习能力进一步提高追踪的压缩比, 并通过预处理和分组解决神经网络压缩和解压效率低下的
问题. 图 3 显示了 NCQT 压缩和搜索架构的整体流程图, 主要可以分为 3 个阶段: 追踪数据冗余抽取、基于神经
网络的编码器获取和数据压缩, 以及追踪数据搜索和解压. 其中, 追踪数据冗余抽取是在线的, 而编码器获取和数
据压缩可以在归档时离线进行.
追踪数据 调用图构建 调用图嵌入 调用图聚类
冗余抽取 追踪 结构
图 向量
...
...
结构集群
Span 解析 预处理 中间 分组
追踪数据 Span 键值模式 表示 ...
service.name Order 字段
kind client 组合提取
http.method GET ...
单调值 索引
字典
Span
向量
追踪数据
搜索和解压 搜索 解压 压缩/解压 获取编码器
重构器 分组
追踪数据 算术编码器 概率
索引 估计
字典
定位器 DNN 模型
查询语句 压缩文件
查询语句
编码器获取和数据压缩
图 3 NCQT 流程图
● 追踪数据冗余抽取. 这一阶段主要利用追踪数据的特征进行初步的冗余约减, 并将数据组织为易于查询的
中间表示. 在处理来自分布式系统的追踪数据时, NCQT 首先将其解析为由跨度组成的数据表示以及由调用关系
组成的结构表示. 对于跨度数据, NCQT 将解析后的数据交由对应的跨度容器进行预处理. 对于结构数据, NCQT
通过识别不同结构之间的相似性将其划分为不同的集群. 预处理后的追踪数据会按照结构集群分组, 作为压缩和
解压的最小单元.
● 编码器获取和数据压缩. 这一阶段利用神经网络将数据压缩为更短的二进制表示. NCQT 首先对分组数据
进行采样, 利用少量的数据训练神经网络模型, 进而获取一个学习了数据特征和表示方式的编码器. 在压缩追踪数
据时, NCQT 利用训练过的编码器并行处理每个分组的数据, 获取上下文向量的概率估计, 并结合算术编码生成更
短的二进制表示, 最终为每个分组生成一份压缩文件.
● 追踪数据搜索和解压. NCQT 允许用户使用指定的查询语句对追踪数据进行查询. 在搜索阶段, NCQT 解析
用户输入的查询语句, 并判断压缩数据中是否存在满足要求的数据. 然后, NCQT 查找所有包含了目标追踪数据的
分组, 并将其交由神经网络解压. 最后, NCQT 筛选出分组中满足条件的追踪数据, 还原数据的文本表示并返回最
终的结果.
3.1 追踪数据冗余抽取
在获取编码器并压缩数据之前, NCQT 首先利用追踪数据的特征消除数据中的模式冗余和结构冗余, 并将其
重新组织为易于查询和压缩的数据格式. 追踪数据由服务调用过程中生成的跨度数据组成, 每条跨度数据记录了

