zipkin服务:理解配置和分布式追踪 – 三郎君的日常

面试 · 2024年6月7日 0

zipkin服务:理解配置和分布式追踪

Zipkin 服务:理解配置和分布式追踪

1. 什么是Zipkin?

Zipkin是一个分布式追踪系统,用于收集和查询来自分布式系统中的跟踪数据。它帮助开发人员分析和可视化请求在不同服务之间的传递情况,以诊断性能问题和延迟瓶颈。

2. Zipkin 的核心组件

  • Zipkin Server:核心服务器,负责收集、存储和查询追踪数据。
  • Zipkin Collector:从不同的服务收集追踪数据。
  • Zipkin Storage:存储追踪数据,支持多种存储后端(例如内存、MySQL、Elasticsearch等)。
  • Zipkin UI:用于可视化和查询追踪数据的用户界面。

3. 分布式追踪的基本概念

  • 追踪(Trace):一个请求在系统中的生命周期,从进入到完成,包含多个跨度(spans)。
  • 跨度(Span):追踪中的一个单元,表示一次操作或一次请求。跨度包含操作的开始和结束时间、元数据和标签等。
  • 上下文传播(Context Propagation):在服务之间传播追踪上下文,使每个服务都能记录并报告请求的追踪信息。

4. Zipkin 的配置

在Docker Compose文件中,Zipkin服务的配置如下:

version: "3.7"
services:
  zipkin:
    container_name: zipkin
    image: openzipkin/zipkin
    extra_hosts: [ 'host.docker.internal:host-gateway' ]
    ports:
      - "9411:9411"

配置解释

  • container_name: zipkin:容器的名称设置为zipkin。
  • image: openzipkin/zipkin:使用官方的Zipkin镜像。
  • extra_hosts: [ ‘host.docker.internal’ ]:添加额外的主机条目,用于跨容器通信。
  • ports: [“9411:9411”]:将主机的9411端口映射到容器的9411端口,以便通过http://localhost:9411访问Zipkin UI。

5. 集成Zipkin到微服务中

要在你的微服务中集成Zipkin,需要进行以下步骤:

  • 添加依赖 在Spring Boot应用程序中,可以添加spring-cloud-starter-zipkin依赖来集成Zipkin。
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
  • 配置Zipkin地址 在应用程序的配置文件(application.ymlapplication.properties)中,设置Zipkin服务器的地址。
spring:
  zipkin:
    base-url: http://zipkin:9411
  sleuth:
    sampler:
      probability: 1.0

运行应用程序 确保你的微服务与Zipkin服务在同一个网络中运行,以便它们可以将追踪数据发送到Zipkin服务器。

6. 分布式追踪的工作流程

当一个请求进入系统时:

  • 生成追踪ID:第一个服务生成一个唯一的追踪ID,并创建一个跨度(span)。
  • 传播追踪上下文:追踪ID和跨度ID在服务之间传播。每个服务接收到这些ID后,会创建新的跨度,并报告给Zipkin。
  • 收集追踪数据:所有服务的追踪数据通过Zipkin Collector收集,并存储在Zipkin Storage中。
  • 查询和可视化:开发人员可以通过Zipkin UI查询和可视化追踪数据,分析请求的路径和延迟情况。

7. 实践

  1. 运行Zipkin服务bash复制代码docker-compose up -d zipkin 通过浏览器访问http://localhost:9411,查看Zipkin UI。
  2. 集成到微服务中 将上述配置添加到你的Spring Boot微服务中,并运行微服务。
  3. 生成追踪数据 通过调用微服务的API生成一些请求,观察Zipkin UI中是否能够看到相应的追踪数据。