Zipkin 基本概念
- Span:基本工作单元,一次链路调用就会创建一个 Span
- Trace:一组 Span 的集合,表示一条调用链路。举个例子:当前存在服务 A 调用服务 B 然后调用服务 C,这个 A ->B->C 的链路就是一条 Trace,而每个服务例如 B 就是一个 Span,如果在服务 B 中另起 2 个线程分别调用了 D、E,那么 D、E 就是 B 的子 Span
Zipkin 架构
先看一下架构图
其中左边部分代表了客户端分别为:
- InstrumentedClient:使用了 Zipkin 客户端工具的服务调用方
- InstrumentedServer:使用了 Zipkin 客户端工具的服务提供方
- Non-InstrumentedServer:未使用 Trace 工具的服务提供方,当然还可能存在未使用工具的调用方
- 总结:一个调用链路是贯穿 InstrumentedClient->InstrumentedServer 的,每经过一个服务都会以 Span 的形式通过 Transport 把经过自身的请求上报的 Zipkin 服务端中
右边线框内代表了 Zipkin 的服务端,其中各组件的功能如下:
- UI:提供 web 页面,用来展示 Zipkin 中的调用链和系统依赖关系等
- Collector:对各个客户端暴露,负责接受调用数据,支持 HTTP、MQ 等
- Storage:负责与各个存储适配后存储数据,支持内存,MySQL,ES 等
- API:为 web 界面提供查询存储中的数据的接口