在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

Gartner APM 魔力象限技术解读——全量存储? No! 按需存储?YES!

  • 2021-06-11
  • 本文字数:2726 字

    阅读完需:约 9 分钟

Gartner APM 魔力象限技术解读——全量存储? No! 按需存储?YES!

调用链记录了完整的请求状态及流转信息,是一座巨大的数据宝库。但是,其庞大的数据量带来的成本及性能问题是每个实际应用 Tracing 同学绕不开的难题。如何以最低的成本,按需记录最有价值的链路及其关联数据,是本文探讨的主要话题。


核心关键词是:边缘计算 + 冷热数据分离。 如果你正面临全量存储调用链成本过高,而采样后查不到数据或图表不准等问题,请耐心读完本文,相信会给你带来一些启发。


边缘计算,记录更有价值的数据

边缘计算,顾名思义就是在边缘节点进行数据计算,赶时髦的话也可以称之为“计算左移”。在网络带宽受限,传输开销与全局数据热点难以解决的背景下, 边缘计算是寻求成本与价值平衡最优解的一种有效方法。


Tracing 领域最常用的边缘计算就是在用户进程内进行数据过滤和分析。而在公有云环境,用户集群或专有网络内部的数据加工也属于边缘计算,这样可以节省大量的公网传输开销,并分散全局数据计算的压力。


此外,从数据层面看,边缘计算一方面可以筛选出更有价值的数据,另一方面可以通过加工提炼数据的深层价值,以最小的成本记录最有价值的数据。

筛选更有价值的数据

链路数据的价值分布是不均匀的。据不完全统计,调用链的实际查询率小于百万分之一。全量存储数据不仅会造成巨大的成本浪费,也会显著影响整条数据链路的性能及稳定性。如下列举两种常见的筛选策略。


  • 基于链路数据特征进行调用链采样上报(Tag-based Sampling)。比如错/慢调用全采,特定服务每秒前 N 次采样,特定业务场景自定义采样等。下图展示了阿里云 ARMS 自定义采样配置页面(https://help.aliyun.com/document_detail/194773.html),用户可以根据自身需要自由定制存储策略,实际存储成本通常小于原始数据的 5%。


  • 异常场景下自动保留关联数据现场。我们在诊断问题根因时,除了调用链之外,还需要结合日志、异常堆栈、本地方法耗时、内存快照等关联信息进行综合判断。如果每一次请求的关联信息全都记录下来,大概率会造成系统的崩溃。因此, 能否通过边缘计算自动保留异常场景下的快照现场是衡量 Tracing 产品优劣的重要标准之一。


  • 如下图所示,阿里云 ARMS 产品提供了慢调用线程剖析(https://help.aliyun.com/document_detail/87560.html),内存异常 HeapDump (https://help.aliyun.com/document_detail/72191.html)等能力。



无论哪种筛选策略,其核心思想都是通过边缘节点的数据计算,丢弃无用或低价值数据,保留异常现场或满足特定条件的高价值数据。这种基于数据价值的选择性上报策略性价比远高于全量数据上报,未来可能会成为 Tracing 的主流趋势。

提炼数据价值

除了数据筛选,在边缘节点进行数据加工,比如预聚合和压缩,同样可以在满足用户需求的前提下,有效节省传输和存储成本。

  • 预聚合统计:在客户端进行预聚合的最大好处, 就是在不损失数据精度的同时大幅减少数据上报量。比如,对调用链进行 1% 采样后,仍然可以提供精准的服务概览/上下游等监控告警能力。

  • 数据压缩:对重复出现的长文本(如异常堆栈,SQL 语句)进行压缩编码,也可以有效降低网络开销。结合非关键字段模糊化处理效果更佳。

冷热数据分离,低成本满足个性化的后聚合分析需求

边缘计算可以满足大部分预聚合分析场景,但是无法满足多样化的后聚合分析需求,比如某个业务需要统计耗时大于 3 秒的接口及来源分布,这种个性化的后聚合分析规则是无法穷举的。而当我们无法预先定义分析规则时,貌似就只能采用成本极高的全量原始数据存储。难道就没有优化的空间么?答案是有的,接下来我们就介绍一种低成本解决后聚合分析问题的方案——冷热数据分离。

冷热数据分离方案简述

冷热数据分离的价值基础在于用户的查询行为满足时间上的局部性原理。简单理解就是,最近的数据最常被查询,冷数据查询概率较小。例如,由于问题诊断的时效性,50% 以上的链路查询分析发生在 30 分钟内,7 天之后的链路查询通常集中在错慢调用链。理论基础成立,接下来讨论如何实现冷热数据分离。

首先,热数据存在时效性,如果只需记录最近一段时间内的热数据,对于存储空间的要求就会下降很多。另外,在公有云环境下,不同用户的数据天然具备隔离性。因此,在用户 VPC 内部的热数据计算和存储方案就具备更优的性价比。


其次,冷数据的查询具备指向性,可以通过不同的采样策略筛选出满足诊断需求的冷数据进行持久化存储。例如错慢采样,特定业务场景采样等。由于冷数据存储周期较长,对稳定性要求较高,可以考虑在 Region 内统一管理。


综上所述,热数据存储周期短,成本低,但可以满足实时全量后聚合分析需求;而冷数据经过精准采样后数据总量大幅下降,通常只有原始数据量的 1% ~10%,并可以满足大多数场景的诊断诉求。两相结合,实现了成本与体验的平衡最优解。国内外领先的 APM 产品,如 ARMS、Datadog、Lightstep 均采用了冷热数据分离的存储方案。


热数据实时全量分析

链路明细数据包含了最完整最丰富的的调用信息,APM 领域最常用的服务面板、上下游依赖、应用拓扑等视图均是基于链路明细数据统计得出。基于链路明细数据的后聚合分析可以根据用户个性化需求更有效的定位问题。但是,后聚合分析的最大挑战是要基于全量数据进行统计,否则会出现样本倾斜导致最终结论离实际相差甚远。


阿里云 ARMS 作为 2021 年 Gartner APM 魔力象限中国唯一入选云厂商,提供了 30 分钟内热数据全量分析的能力,可以实现各种条件组合下的过滤与聚合,如下图所示:


冷数据持久化采样分析

全量调用链的持久化存储成本非常高,而前文提到 30 分钟后调用链的实际查询率不足百万分之一,并且大多数的查询集中在错慢调用链,或满足特定业务特征的链路,相信经常排查链路问题的同学会有同感。因此,我们应该只保留少量满足精准采样规则的调用链,从而极大的节省冷数据持久化存储成本。


那么精准采样应该如何实现呢?业界常用的方法主要分为头部采样(Head-based Sampling)和尾部采样(Tail-based Sampling)两种。头部采样一般在客户端 Agent 等边缘节点进行,例如根据接口服务进行限流采样或固定比例采样;而尾部采样通常基于全量热数据进行过滤,如错慢全采等。


最理想的采样策略应该只存储真正需要查询的数据,APM 产品需要提供灵活的采样策略配置能力与最佳实践,用户结合自身业务场景进行自适应的调整。

结语

当越来越多的企业和应用上云,公有云集群规模爆发式增长,“成本”将是企业用云的关键衡量因素。而在云原生时代,充分利用边缘节点的计算和存储能力,结合冷热数据分离实现高性价比的数据价值探索已经逐渐成为 APM 领域的主流。全量数据上报、存储、再分析这种传统方案将面临越来越大的挑战。未来会如何,让我们拭目以待。


本文转载自:阿里巴巴中间件(ID:Aliware_2018)

原文链接:Gartner APM 魔力象限技术解读——全量存储? No! 按需存储?YES!

2021-06-11 10:001529

评论

发布
暂无评论
发现更多内容

亚马逊云科技 loT 百亿连接力量

亚马逊云科技 (Amazon Web Services)

亚马逊云

恒源云(Gpushare)_自动化训练小技巧白送给你,不要吗?

恒源云

OSS SSH hy-tmp

Android技术分享| Android 中部分内存泄漏示例及解决方案

anyRTC开发者

音视频 内存 内存泄漏 移动开发 Andriod

如何优雅的记录操作日志

flyhero

Java Spring Boot 后端 造轮子 4月月更

用uniapp写一个内外循环的全选与反选,不会的赶紧围观

CRMEB

进阶篇|有了这招,用文本编辑器搞前端代码都能保证格式统一

Jianmu

运维 前端 自动化 工作流 格式化

解析分布式系统的缓存设计

vivo互联网技术

分布式 服务器 缓存服务

企业如何搭建一个有效的知识管理系统

小炮

企业知识管理 企业知识管理工具

初创企业需要CRM系统的原因

低代码小观

初创公司 企业管理系统 CRM系统 客户关系管理系统 初创型企业

腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?

Java全栈架构师

Linux 程序员 架构 面试 操作系统

云智慧10年资深架构师带你了解:普通程序员向架构师成长必经之路

云智慧AIOps社区

程序人生 架构师 Meetup 晋升 成长计划

web前端培训nginx配置规则

@零度

nginx 前端开发

看板的作用是什么?任务看板如何跟进

阿里云云效

云计算 阿里云 持续交付 看板 项目协作

踩了个DNS解析的坑,但我还是没想通

捉虫大师

DNS 问题排查 4月月更

一张长图带你看懂物联网产业十数载“江湖风云”!

亚马逊云科技 (Amazon Web Services)

物联网

记一次CPU持续增长的问题解决

BUG侦探

Python py-spy CPU增长问题

基于Flink-CDC数据同步方案

领创集团Advance Intelligence Group

算法 java

java培训SpringBoot自动装配原理

@零度

JAVA开发 springboot

48天打造你的专属 Twilio——浅谈运营商通信中台

网易云信

通信

省掉80%配置时间,这款Mock神器免费又好用

Liam

前端 前端开发 Postman 前端教程 web前端开发

Thinkphp6实现定时任务功能详解教程

CRMEB

大数据培训Hive如何控制map个数与性能调优参数

@零度

hive map 大数据开发

Sitemap的重要性

源字节1号

软件开发 网站优化

问题来了!拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗?

Java全栈架构师

程序员 架构 面试 计算机网络 底层知识

OpenHarmony 3.1 Beta版本关键特性解析——OpenHarmony图形框架

OpenHarmony开发者

OpenHarmony 动画效果

从趋势到必选项,探讨企业数字化转型方式方法

华为云开发者联盟

数据 数字化 企业数字化转型 业务数字化

虎符即将引入稳定币USN 并开启USN专场活动

区块链前沿News

虎符交易所 稳定币

去中心化的 React Native 架构探索

Shopee技术团队

前端 去中心化 React Native

【高并发】一文秒懂Happens-Before原则

冰河

并发编程 多线程 协程 异步编程 精通高并发系列

Gartner APM 魔力象限技术解读——全量存储? No! 按需存储?YES!_文化 & 方法_阿里巴巴中间件_InfoQ精选文章