Zipkin客户端链路追踪源码解析
我们知道,Zipkin这个工具可以帮助我们收集分布式系统中各个系统之间的调用连关系,而且除了Servlet之外还能收集:MQ、线程池、WebSocket、Feign、Hystrix、RxJava、WebFlux等等组件之间的调用关系。本篇文章就来分析一下Zipkin是如何完成这些功能的 我们先以最常用的Servlet接受请求为例来分析 在spring-cloud-sleuth的spring.factories文件中注入的很多类中包含了一个类: TraceWebServletAutoConfiguration ,一看就知道,这是为Servlet环境量身定制的一个自动装配类 在这个类中,创建了一个Filter,这个Filter就是拦截web请求,完成Servlet请求链路的收集的利器 @Bean @ConditionalOnMissingBean public TracingFilter tracingFilter(HttpTracing tracing) { return (TracingFilter) TracingFilter.create(tracing); } 我们直接来看这个拦截器都是做了一些什么东西吧 public void doFilter(ServletRequest request, ServletResponse response, FilterChain