前文是用HTTP直接收集跟踪数据的,本节来讨论如何使用消息中间件收集追踪数据。相比HTTP的方式来说,使用消息中间件有以下优点:
- 微服务与Zipkin Server解耦,微服务无需知道Zipkin Server的网络地址。
- 一些场景下,ZipkinServer与微服务网络可能不通,使用HTTP直接收集的方式无法工作,此时可借助消息中间件来实现数据收集。
改造Zipkin Server
1.复制项目microservice-trace-zipkin-server,将ArtifactId修改为microservice-trace-zipkin-server-stream。
2.将pom.xml的依赖修改为以下内容。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-sleuth-zipkin-stream</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
3.修改启动类,将注解@EnableZipkinServer修改为@EnableZipkinStreamServer。
4.修改配置文件application.yml
本文大部分内容转载自周立的《Spring Cloud与Docker微服务架构实战》