1. 概述
本文将介绍如何在Spring Cloud项目中集成Zipkin。Zipkin是一个开源项目,提供分布式追踪数据的收集、存储和可视化能力,帮助我们清晰掌握服务间的调用链路。
⚠️ 本文假设读者已具备分布式追踪和Spring Cloud基础知识。如需入门,可参考Spring Sleuth教程。
重要提示:Zipkin项目已弃用自定义服务器构建。当前推荐使用Docker容器运行Zipkin服务器。
- 第2节介绍已弃用的自定义服务器构建方式(仅作参考)
- 第3节详解推荐的默认服务器构建方案
2. 自定义服务器构建方式(已弃用)
2.1 项目搭建
创建Spring Boot项目,在pom.xml
中添加依赖:
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<scope>runtime</scope>
</dependency>
最新版本可在Maven Central查询:zipkin-server、zipkin-autoconfigure-ui
2.2 启用Zipkin服务器
在主类添加注解:
@SpringBootApplication
@EnableZipkinServer
public class ZipkinApplication {...}
@EnableZipkinServer
注解会启动追踪数据收集和Web UI功能。
2.3 配置文件
在src/main/resources
创建bootstrap.properties
:
spring.cloud.config.name=zipkin
spring.cloud.config.discovery.service-id=config
spring.cloud.config.discovery.enabled=true
spring.cloud.config.username=configUser
spring.cloud.config.password=configPassword
eureka.client.serviceUrl.defaultZone=
http://discUser:discPassword@localhost:8082/eureka/
在配置仓库(Windows: c:\Users\{username}\
或 Linux: /home/{username}/
)添加zipkin.properties
:
spring.application.name=zipkin
server.port=9411
eureka.client.region=default
eureka.client.registryFetchIntervalSeconds=5
logging.level.org.springframework.web=debug
记得提交配置文件变更,使配置服务生效。
2.4 运行验证
启动应用后访问 http://localhost:9411,应看到Zipkin主页:
2.5 服务端配置
以book-service
为例配置追踪服务:
2.5.1 依赖添加
在pom.xml
添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.reporter2</groupId>
<artifactId>zipkin-reporter-brave</artifactId>
</dependency>
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
</dependency>
2.5.2 追踪配置
在book-service.properties
添加:
management.tracing.sampling.probability=1
设置采样率100%(生产环境建议调整)
3. 推荐的默认服务器构建方式
3.1 Zipkin服务搭建
创建docker-compose.yml
文件:
version: "3.9"
services:
zipkin:
image: openzipkin/zipkin
ports:
- 9411:9411
更多细节参考官方文档
3.2 服务配置
与第2.5节配置方式相同。
3.3 运行验证
启动Redis、配置服务、注册中心、网关、图书服务、评分服务和Zipkin:
docker compose up -d
打开Zipkin控制台: http://localhost:9411
追踪结果解读:
- 网关服务耗时87.961ms
- 图书服务耗时18.379ms
- 清晰展示请求在微服务中的流转过程
4. 总结
✅ Zipkin集成简单粗暴,为复杂系统提供关键洞察:
- 可视化服务调用链路
- 精准定位性能瓶颈
- 优化微服务架构
随着系统复杂度增长,Zipkin能帮我们快速识别:
- 哪个服务响应缓慢?
- 调用链中哪个环节耗时最长?
- 哪些服务需要优化?
踩坑提示:生产环境务必调整采样率(
management.tracing.sampling.probability
),避免性能损耗