平台每天产生海量Trace,只能保存少部分。团队希望尽量保留出现错误、延迟超过3秒或经过关键支付服务的完整链路,而普通成功请求只抽取少量。较适合的采样方式是()。
错误状态和最终耗时通常要等链路接近完成后才能判断。尾部采样先缓冲Span,再按完整Trace的结果和属性决定保留,更适合优先捕获异常与慢请求。
选项分析
错误。这是典型头部采样,无法根据最终错误和总耗时精准选择。
正确。尾部采样能使用整条链的状态、时长和服务属性制定保留策略。
错误。没有Trace ID就无法把跨服务Span可靠关联成完整链路。
错误。平均值不能替代单条异常链路,排障需要调用顺序和上下文。
本题为什么容易错
“尾部”不是只采集调用链最后一个服务,而是把采样决定推迟到能够看到整条Trace结果之后。
简短答案
想优先保留错误和高延迟链路,为什么要等请求结束后再决定采样,正确答案是 B(收集链路完成信息后,根据错误、延迟和服务属性做尾部采样决策)。错误状态和最终耗时通常要等链路接近完成后才能判断。尾部采样先缓冲Span,再按完整Trace的结果和属性决定保留,更适合优先捕获异常与慢请求。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 在请求刚进入时随机决定,后续不再参考结果 | 本题干扰项 | 错误。这是典型头部采样,无法根据最终错误和总耗时精准选择。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 收集链路完成信息后,根据错误、延迟和服务属性做尾部采样决策 | 本题正确答案 | 正确。尾部采样能使用整条链的状态、时长和服务属性制定保留策略。 | 看到题干核心场景时优先联想到它 |
| 关闭Trace ID,按单个日志文件大小随机删除 | 本题干扰项 | 错误。没有Trace ID就无法把跨服务Span可靠关联成完整链路。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 只保存平均延迟,永远不保留单条完整链路 | 本题干扰项 | 错误。平均值不能替代单条异常链路,排障需要调用顺序和上下文。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 在请求刚进入时随机决定,后续不再参考结果:错误。这是典型头部采样,无法根据最终错误和总耗时精准选择。
- 关闭Trace ID,按单个日志文件大小随机删除:错误。没有Trace ID就无法把跨服务Span可靠关联成完整链路。
- 只保存平均延迟,永远不保留单条完整链路:错误。平均值不能替代单条异常链路,排障需要调用顺序和上下文。
知识点详解
头部采样在Trace开始时决定是否采集或导出,简单且资源可控,但无法预知最终状态。尾部采样在收集一段时间的Span后,根据错误、持续时间、关键服务或属性决定保留,需要让同一Trace汇聚到可共同决策的位置,并配置等待时间、内存上限和过载策略。实践中也可组合使用,但前置丢弃的数据无法在尾部恢复。
备考速记
头部先抽签,不知道结局;尾部看完结果再留,信息多但成本高。
Head Sampling 在OpenTelemetry场景中的作用
若错误率只有0.1%,1%的随机头部采样可能漏掉绝大多数错误。尾部策略可以规定错误链路全部保留、超过3秒全部保留、普通成功链路再按1%抽样。
同类题怎么考
- 根据保留错误或慢请求的需求选择尾部采样。
- 识别尾部采样对Span汇聚、缓冲和决策等待的要求。
Head Sampling 在系统架构设计师软考中的考法
题目要求按最终错误、总耗时或完整调用路径筛选时,选尾部采样;只要求低成本固定比例并在入口决定时,才更像头部采样。
解题思路
题眼是“出现错误、延迟超过3秒”。请求刚进来时,这两件事都还没发生,头部随机采样只能碰运气。尾部采样等Span汇集后再看结果,可以把少见但重要的链路留下来,所以选 B。
考点定位
头部采样决策早、成本低,但不知道请求最后是否失败;尾部采样信息更完整,却增加缓冲、等待、内存和路由一致性成本。
易错提醒
- 同一Trace的Span被发送到不同采样节点,无法完整聚合。
- 决策等待时间过短,慢链路尚未结束就被丢弃。
- 规则只保留错误,不保留高延迟成功请求和关键业务链路。
备考提示
- 把采样决策点画在请求开始和请求结束两个位置。
- 比较信息完整度、资源成本、决策延迟和部署复杂度。
你可能还想了解
- 尾部采样为什么能保留错误链路?
- 尾部采样需要等待多久?
- 头部采样和尾部采样可以一起用吗?
本文小结
尾部采样在链路接近完成后,依据错误、总耗时和关键服务决定是否保留Trace,适合捕获少见异常,但需要缓冲和汇聚Span。