首页
/ Apache SkyWalking 新特性:STANDARD_VALUE 指标类型的设计与实现

Apache SkyWalking 新特性:STANDARD_VALUE 指标类型的设计与实现

2025-05-08 12:35:12作者:苗圣禹Peter

背景与需求分析

在现代分布式系统的可观测性领域,多维指标数据的处理能力至关重要。Apache SkyWalking 作为一款优秀的 APM 系统,其指标处理机制需要不断演进以满足更复杂的监控场景。当前版本在处理带标签的指标数据时存在明显局限性——仅支持单一标签键值对的存储和查询,这在实际生产环境中会遇到诸多挑战。

以 OpenTelemetry 指标集成场景为例,当我们需要同时记录错误码(error_code)和节点标识(instance)两个维度的指标时,现有架构只能将多个标签拼接成一个字符串存储。这种设计不仅破坏了数据的结构化特性,更导致后续无法进行灵活的维度聚合分析。

架构设计演进

现有方案的问题剖析

当前 LABELED_VALUE 类型指标的核心限制体现在:

  1. 单维度标签存储:每个数据点只能携带一个标签键值对
  2. 查询能力受限:无法按需进行多维度聚合计算
  3. 可视化局限:UI 层只能展示单一标签值

STANDARD_VALUE 新特性设计

新提出的 STANDARD_VALUE 指标类型采用更先进的数据模型:

  1. 多维标签支持:每个数据点可携带完整的键值对集合
  2. 存储层优化:基于 StorageDataComplexObject 实现结构化存储
  3. 查询接口隔离:仅通过 MQE(Metrics Query Engine)系统提供查询能力
// 伪代码示例:新数据结构示意
class StandardValue {
    String entity;       // 实体标识
    Map<String, String> labels; // 多维度标签
    double value;        // 指标值
}

关键技术实现

存储引擎改造

  1. 放弃现有 DataTable 实现,采用专门优化的二进制编码格式
  2. 支持动态标签字段的高效序列化/反序列化
  3. 保持与时间序列数据库的兼容性

查询处理优化

  1. MQE 语法扩展:支持基于标签维度的聚合函数
  2. 查询下推能力:将标签过滤条件推送到存储层执行
  3. 结果集处理:动态合并多维度标签展示

可视化适配方案

前端展示层需要智能处理多种场景:

  1. 单标签场景:保持现有显示格式(metric.labels[0].value)
  2. 多标签场景:自动拼接为"key1=value1 key2=value2"格式
  3. 支持标签维度选择器:允许用户交互式选择展示维度

应用场景展望

这一改进将显著提升以下场景的监控能力:

  1. OpenTelemetry 指标深度集成:完美支持原生多维度指标模型
  2. 错误分析场景:可同时按错误类型和服务节点进行聚合统计
  3. 资源监控:支持主机+进程+线程的多级维度监控

总结

STANDARD_VALUE 指标类型的引入标志着 SkyWalking 指标处理能力的重要升级。通过支持真正的多维度指标模型,系统现在可以更好地处理现代云原生环境下的复杂监控需求。这一改进不仅解决了当前 OpenTelemetry 集成中的痛点,更为未来的可观测性场景提供了更强大的基础能力。

对于使用者而言,需要注意新指标类型将完全依赖 MQE 查询系统,这意味着需要相应升级查询方式和可视化配置。这一改变虽然带来一定的迁移成本,但换来的将是更强大、更灵活的指标分析能力。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
167
2.05 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
90
593
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
60
17
apintoapinto
基于golang开发的网关。具有各种插件,可以自行扩展,即插即用。此外,它可以快速帮助企业管理API服务,提高API服务的稳定性和安全性。
Go
22
0
cjoycjoy
一个高性能、可扩展、轻量、省心的仓颉应用开发框架。IoC,Rest,宏路由,Json,中间件,参数绑定与校验,文件上传下载,OAuth2,MCP......
Cangjie
94
15
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
199
279
giteagitea
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
17
0
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
954
564