Zipkin
Zipkin
是一个分布式跟踪系统,用于收集、管理和查找跟踪数据。它可以把分布式链路调用的顺序串起来,并计算链路中每个 RPC
调用的耗时,可以很直观的看出在整个调用链路中延迟问题。 Zipkin
的设计基于 GoogleDapper
论文实现的。
ZipkinServer
提供了 UI
操作,可以非常方便地查看和搜索跟踪数据,直观的查看到链调用依赖关系。
该项目包括一个无依赖库和一个 spring-boot
服务器。存储支持包括内存, JDBC(mysql)
, Cassandra
和 Elasticsearch
。
在没有使用外部存储时,则默认使用内存存储数据,内存数据是有限且不可持久化的,所以建议使用外部存储,因日志数据通常很大,为了搜索日志的效率,所以建议使用 Elasticsearch
。
Zipkin 的基础架构由 4 个核心组件构成:
Collector
:收集器组件,处理从外部系统发过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式,以支持后续的存储、分析、展示等功能。Stroage
:存储组件,主要处理收集器收到的跟踪信息,默认存储在内存中,也可通过 ES 或 JDBC 来存储。Restful API
:API 组件,提供外部访问接口。Web UI
:UI组件,基于 API 组件实现的 Web 控制台,用户可以很方便直观地查询、搜索和分析跟踪信息。
部署测试服务
使用 docker
部署本地 zipkin
的 server
端
docker run -d -p 9411:9411 \
--name zipkin \
docker.io/openzipkin/zipkin