分布式追踪:采样技术与应用价值
在分布式系统中,追踪技术对于理解系统的运行状态和性能至关重要。本文将介绍分布式追踪中的采样技术,以及如何利用追踪数据为工程师的日常工作提供帮助。
采样技术
采样是追踪系统用于减少被追踪应用的性能开销,并控制需要存储在追踪后端的数据量的重要手段。主要有两种采样技术:基于头部的一致采样和基于尾部的采样。
- 基于头部的一致采样 :在请求执行开始时做出采样决策,大多数现有追踪系统采用这种方式,对应用施加的开销最小。可以使用各种采样算法来调整采样行为和对追踪后端的影响。例如,Jaeger实现了自适应采样,减轻了追踪团队的操作负担,并能更公平地处理流量差异巨大的端点。
- 基于尾部的采样 :在请求执行结束后做出采样决策。在做出采样决策之前,需要确保追踪已完成,即收集器收到了该追踪生成的所有跨度。由于跨度可能来自架构中的不同主机,甚至来自数据中心之外的移动应用,且延迟不可预测,这是一个比看起来更难的问题。最直接的实现方式是等待一段时间,在此期间没有收到该追踪的更多跨度,然后宣布追踪完成并准备进行采样。高效实现基于尾部的采样,以应对现代互联网公司每天数万亿次的请求,是一个具有挑战性的问题。
此外,还有部分采样技术。在一些追踪系统中,采样决策并不保证一致收集追踪的所有跨度,而是只对调用图的一部分进行采样。具体来说,可以在检测到追踪中的异常(如异常延迟或错误代码)后做出采样决策。追踪库会稍作修改,将当前活动追踪的所有跨度保存在内存中,直到入口跨度完成。一旦做出采样决策,就将所有这些跨度发送到追踪后端。虽然会错过该服务已进行的任何
超级会员免费看
订阅专栏 解锁全文
6万+

被折叠的 条评论
为什么被折叠?



