Zipkin简介
Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现。可以用来收集各个服务器上请求链路的跟踪数据,并通过 REST API 来辅助查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高的问题,找出系统性能瓶颈的根源。除了面向开发的 API 接口之外,它也提供了方便的 UI 组件,来帮助我们直观地搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。
使用步骤
1. 搭建 Zipkin Server
- 创建一个基础的Spring Boot应用,并在 pom.xml 中引入 Zipkin Server 的相关依赖,具体如下:
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
</dependency>
- 在应用主类中使用 @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 的依赖,具体如下所示:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
- 在微服务的 application.yml 中增加 Zipkin Server 的配置信息,具体如下所示:
spring:
zipkin:
base-url: http://localhost:9411
3. 测试与分析
- 使用微服务进行服务间的调用。
- 在Zpinkin 管理页面中,查看微服务相互调用的数据。