
161
第 16 章
高效的数据存储
本章将探讨必须解决的挑战,以便在你最需要的时候有效地存储和检索你的可观测性数
据。速度是数据存储和检索的共同关注点,但其他功能限制也带来了关键挑战,必须在
数据层加以解决。在规模上,可观测性所固有的挑战变得尤为突出。我们将列出实现可
观测性工作流所需的功能要求。然后,我们将以
Honeycomb
的专利
Retriever
数据存储
的实现为灵感,来研究现实生活中的权衡和可能的解决方案。
你将了解存储和检索层所需的各种考虑因素,以确保可观测性数据的速度、可扩展性和
持久性。你将了解到列式数据存储,以及为什么它特别适合于可观测性数据,必须如何
处理查询工作负载,以及使数据存储持久化和高性能的考虑因素。本章介绍的解决方案
并不是你可能遇到的各种权衡之后的唯一解决方案。然而,当构建一个可观测性解决方
案时,它们是作为实现必要结果的真实例子来呈现的。
16.1 可观测性的功能要求
当你在生产中遇到故障时,每一秒都很重要。对你的可观测性数据的查询必须尽可能
快地返回结果。如果你提交了一个查询,并且可以在等待结果返回时喝杯咖啡,那么
你就是在用一个不适合生产的工具进行一场失败的战斗(参见本书
8.2
节)。在几秒钟
内得到结果使可观测性成为有用的调查实践,它可以让你快速迭代,直至找到有意义
的结果。
正如第二部分所述,事件是可观测性的构建块,而链路追踪(
trace
)是相互关联的事
件(或链路追踪
span
)的集合。要在这些事件中找到有意义的模式,需要有分析高基数
和高维度数据的能力。任何事件(或任何链路追踪 ...