分布式调用链追踪zipkin
一、zipkin架构
1、zipkin的基础架构一共包括4个核心组件
- collector:收集器组件,主要用于收集每个服务发送过来的信息,并将这些信息转换为zipkin内部处理的span格式,方便存储、分析、展示。
- storage:存储组件,支持内存(主要测试用)和数据库存储(mysql、elasticsearch等)
- restful API:API组件,提供了外部访问接口,方便自定义功能开发,如监控等
- Web UI:UI组件,基于API实现,方便查看跟踪信息
2、关于zipkin的几个核心概念
- Span:一个client服务从发出请求到被响应的过程称为span
- Trace:client发出请求到完成处理,中间会经历一个调用链,这个过程称为一个调用链追踪
- Transport:采集信息的传方式,最简单的http方式,高并发可以换成消息队列方式,如kafka
更多细节参考官网:https://zipkin.io/
二、golang实现
1、需要先初始化zipkin相关变量:collector、recorder、tracer
2、实现grpc客户端和服务端的拦截器UnaryServerInterceptor、UnaryClientInterceptor
3、选择储存的方式mysql、elasticsearch等