zipkin 学习笔记
概述
- 参考
Span—->追踪的基本单元
- trace_id—->一个完整的rpc调用链拥有同一个trace_id
- /name/id/—->一次rpc调用就产生一个span_id
- parent_id/—->rpc的父级
- Annotation/BinaryAnnotation/—->记录rpc服务本身以及业务的信息
- timestamp/duration—->一次rpc耗用时间
Brave—->zipkin的传输基础
- 拥有ServerTracer/ClientTracer/ServerRequestInterceptor/ServerResponseInterceptor/ClientRequestInterceptor/ClientResponseInterceptor等
- ServerTracer—->用于服务端接收请求(setServerReceived)/确认请求(setServerSend)—->sr/ss
- ClientTracer—->用于客户端发送请求(setClientSent)/接收响应(setClientReceived)—->cs/cr
- ServerRequestInterceptor/ServerResponseInterceptor—->用于服务端,拦截请求/响应,记录请求信息等
- ClientRequestInterceptor/ClientResponseInterceptor—->用于客户端,拦截请求/响应,记录信息等
SpanCollector—->span收集器,用于异步将拦截到的追踪信息,提交给zipkin服务器
- HttpSpanCollector—->AbstractSpanCollector—->FlushingSpanCollector—->SpanCollector
- SpanCollector—->提供收集span功能
- FlushingSpanCollector—->提供异步刷新与队列存储支持
- com.github.kristofa.brave.FlushingSpanCollector.Flusher#run
- flush
- AbstractSpanCollector—->提供编解码支持,将span按照编解码转换为字节码
- reportSpans
- HttpSpanCollector—->以POST方法application/json形式提交转换的span字节码信息
- sendSpans
BraveServletFilter—->服务端过滤器,过滤请求与响应,发送sr (server received) and ss (server sent)
- 委托给ServerRequestInterceptor.handle进行请求的处理,构建新的TraceData信息
- 委托给ServerResponseInterceptor#handle进行响应的处理,再进行ServerTracer#setServerSend时候,添加span到spanCollector
BraveOkHttpRequestResponseInterceptor—->客户端拦截器,拦截请求/响应,cs/cr
- 委托给ClientRequestInterceptor.handle进行请求的拦截,向request中添加Sampled/TraceId/SpanId/ParentSpanId信息头
- 委托给ClientResponseInterceptor#handle进行响应的拦截,再进行clientTracer.setClientReceived时候,添加span到spanCollector