在 Zipkin 的 Brave 客户端库中,Tracer
和 Span
是两个核心概念和组件:
Tracer(追踪器)
Brave 中的 Tracer
类:
- 作为分布式追踪的核心工具,
Tracer
主要负责创建、启动、停止以及关联 Span。 Tracer
负责生成具有唯一标识符(如 Trace ID 和 Span ID)的 Span,并确保它们在整个请求链路中能够被正确地传播和关联。Tracer
还会与 Sampler 配合使用来决定是否需要采样某个 Span,以控制上报到 Zipkin Server 的数据量。- 在多线程环境中,Tracer 通常配合
CurrentTraceContext
使用,以便跨线程传递上下文信息。
Span(跨度)
Span 在 Brave 中的角色:
Span
是追踪系统中的基本工作单元,它代表了服务调用链路上的一个具体步骤或操作。- 每个 Span 都有一个唯一的标识(Span ID),并且归属于一个更大的 Trace(由 Trace ID 标识)。
- Span 包含以下关键信息:
- Name: 表示 Span 所执行的操作名称。
- Timestamps: 开始和结束时间戳,用于计算操作持续时间。
- Tags: 关键字/值对,用来记录附加信息,比如 HTTP 请求方法、状态码、路由信息等。
- Annotations: 时间点标记,用于记录事件发生的时间点,例如请求开始、请求结束、RPC 调用的开始和结束等。
- References: 指向其他相关 Span 的引用,表示调用关系(通常是父 Span 对子 Span 的引用)。
在 Brave 中,通过 Tracer 创建 Span 后,开发者可以利用 Span 对象添加注解、标签和其他相关信息,这些信息会在 Span 结束时通过 Reporter 上报到 Zipkin 服务器进行存储和分析。