知识卡片
高基数不是异常
内容
用户ID、请求ID、租户、版本等高基数字段是定位问题的关键,不应被系统当作危险输入拒绝。可观测平台的设计目标应是让高基数可查询、可承受,而不是把它提前聚合掉。
参考来源
- 位置:《可观测性工程》第16章《高效的数据存储》开篇及"16.2.8 处理好高基数数据"一节(源文件:_epub-src/OEBPS/029.xhtml)
- 结论依据:原文明确"要在这些事件中找到有意义的模式,需要有分析高基数和高维度数据的能力。任何事件……中的任何字段都必须是可查询的",并说明面对高基数分组场景应"通过分配reduce worker来处理可能的分组中的一个均衡子集"来解决,而不是拒绝或提前聚合。
- 原始内容:要在这些事件中找到有意义的模式,需要有分析高基数和高维度数据的能力。任何事件(或任何链路追踪span)中的任何字段都必须是可查询的……如果有人试图按照高基数字段来进行结果分组,会发生什么?如何才能在不耗尽内存的情况下仍然返回准确的值?最简单的解决方案是通过分配reduce worker来处理可能的分组中的一个均衡子集。