分布式追踪基础
在分布式系统中,追踪技术对于理解系统的运行状况、排查问题以及优化性能至关重要。本文将深入探讨分布式追踪的基础原理、常见的追踪模型、时钟偏差调整以及追踪分析等方面的内容。
1. 追踪模型概述
在分布式追踪中,通常会有一个“收集/规范化”组件,其作用是接收来自应用程序追踪点的追踪数据,并将其转换为规范化的追踪模型,然后存储在追踪存储中。规范化的过程非常重要,因为在生产环境中,往往会使用多种版本的检测库,这些库捕获的追踪数据在格式和模型上可能存在很大差异。规范化层就像一个均衡器,将各种不同的追踪数据转换为单一的逻辑追踪模型,以便后续的可视化和分析工具能够统一处理。
常见的概念追踪模型主要有两种:事件模型和跨度(Span)模型。
2. 事件模型
事件模型中,追踪检测以追踪点的形式存在,当请求执行经过这些追踪点时,会记录事件。每个事件代表端到端执行过程中的一个时间点。如果记录了这些事件之间的先后关系,那么追踪就可以直观地表示为一个有向无环图,其中节点代表事件,边代表因果关系。
例如,一些追踪系统(如X - Trace)使用事件模型将追踪结果呈现给用户。在客户端 - 服务器应用程序执行RPC请求/响应的过程中,事件图会包含从应用层事件(如“客户端发送”和“服务器接收”)到TCP/IP栈事件等不同层收集的事件。
然而,事件模型存在一些缺点。它过于底层,会掩盖一些有用的高层原语,导致许多开发者难以使用。例如,客户端应用程序的开发者通常会将RPC请求视为一个具有开始(客户端发送)和结束(客户端接收)事件的单一操作,但在事件图中,这两个节点可能相距甚远。
下面是一个更极端的例子,一