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-serverzipkin-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主页:

zipkinhomepage 1

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 运行验证

  1. 启动Redis、配置服务、注册中心、网关、图书服务、评分服务和Zipkin:

    docker compose up -d
    
  2. 访问接口: http://localhost:8080/book-service/books

  3. 打开Zipkin控制台: http://localhost:9411

  4. 选择book-service点击"Find Traces": zipkintrace 1

追踪结果解读

  • 网关服务耗时87.961ms
  • 图书服务耗时18.379ms
  • 清晰展示请求在微服务中的流转过程

4. 总结

✅ Zipkin集成简单粗暴,为复杂系统提供关键洞察:

  • 可视化服务调用链路
  • 精准定位性能瓶颈
  • 优化微服务架构

随着系统复杂度增长,Zipkin能帮我们快速识别:

  • 哪个服务响应缓慢?
  • 调用链中哪个环节耗时最长?
  • 哪些服务需要优化?

踩坑提示:生产环境务必调整采样率(management.tracing.sampling.probability),避免性能损耗


原始标题:Spring Cloud - Tracing Services with Zipkin | Baeldung