使用 Sleuth 和 Zipkin 进行分布式服务跟踪

Zipkin简介

Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现。可以用来收集各个服务器上请求链路的跟踪数据,并通过 REST API 来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高的问题,找出系统性能瓶颈的根源。除了面向开发的 API 接口之外,它也提供了方便的 UI 组件,来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。

使用步骤

1. 搭建 Zipkin Server

  • 创建一个基础的Spring Boot应用,并在 pom.xml 中引入 Zipkin Server 的相关依赖,具体如下:

    io.zipkin.java
    zipkin-server


    io.zipkin.java
    zipkin-autoconfigure-ui

  • 在应用主类中使用 @EnableZipkinServer 注解来启动Zipkin Server,具体如下:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import zipkin.server.EnableZipkinServer;

@EnableZipkinServer
@SpringBootApplication
public class TracingApplication {
    public static void main(String[] args) {
        SpringApplication.run(TracingApplication.class, args);
    }
}
  • 在 application.yml 中做一些简单配置,比如:设置服务端口号为9411(客户端整合时候,自动化配置会连接9411端口,所以在服务端设置了端口为9411的话,客户端可以省去这个配置)。
server:
    port: 9411

spring:
    application:
        name: tracing
  • 创建完上述工程之后,我们将其启动起来,并访问 http://localhost:9411/,我们可以看到 Zipkin 管理页面。

2. 在微服务中引入和配置 Zipkin

  • 在微服务的 pom.xml 中引入对 Spring Cloud Sleuth 和 Zipkin 的依赖,具体如下所示:

    org.springframework.cloud
    spring-cloud-starter-zipkin

  • 在微服务的 application.yml 中增加 Zipkin Server 的配置信息,具体如下所示:
spring:
    zipkin:
        base-url: http://localhost:9411

3. 测试与分析

  • 使用微服务进行服务间的调用。
  • 在Zpinkin 管理页面中,查看微服务相互调用的数据。

你可能感兴趣的:(使用 Sleuth 和 Zipkin 进行分布式服务跟踪)