一、Zipkin简介
Zipkin是 Twitter 的一个 开源项目 ,它基于 Google Dapper实现。我们可以使用它来收集各个 服务器 上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向 开发 的API接口之外,它也提供了方便的 UI 组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比如:可以查询某段时间内各用户请求的处理时间等。
Spring Cloud构建微服务架构:分布式服务跟踪(整合zipkin)
上图展示了Zipkin的基础架构,它主要有4个核心组件构成:
- Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为Zipkin内部处理的Span格式,以支持后续的存储、分析、展示等功能。
- Storage:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中,我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到 数据库 中。
- RESTful API:API组件,它主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接系统访问以实现监控等。
- Web UI:UI组件,基于API组件实现的上层应用。通过UI组件用户可以方便而有直观地查询和分析跟踪信息。
二、springcloudSleuth整合Zipkin
在 Spring Cloud Sleuth 中对Zipkin的整合进行了 自动化配置 的封装,所以我们可以很轻松的引入和使用它,下面我们来详细介绍一下 Sleuth 与Zipkin的基础整合过程。主要分为两步:
1、搭建Zipkin Server,直接下载jar包运行
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
通过http://localhost:9411/ 就可以看到zipkin页面了
2、在springcloud中集成zipkin
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
增加application.yml配置
spring:
zipkin:
base-url: http://172.31.32.14:9411
enabled: true
locator:
discovery:
enabled: true
三、调用演示
在各个服务中添加上述内容后,进行调用,可以看到zipkin采集情况
点击可以查看调用详情