# Zipkin + Sleuth
> ## 前言
随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药。于是就有了分布式系统调用跟踪的诞生。现今业界分布式服务跟踪的理论基础主要来自于 ```Google``` 的一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,使用最为广泛的开源实现是 ```Twitter ```的 ```Zipkin```。
```Zipkin```是一个开放源代码分布式的跟踪系统,它提供了在分布式环境下发送、接收、存储和可视化跟踪的机制。这使我们能够对服务之间的活动进行关联,并更清楚地了解我们服务中发生的情况。```Zipkin```由```Twitter```公司开源,致力于收集服务的定时数据,以解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。每个服务向```zipkin```报告计时数据,```zipkin```会根据调用关系通过```Zipkin UI```生成依赖关系图,显示了多少跟踪请求通过每个服务,该系统让开发者可通过一个 Web 前端轻松的收集和分析数据,例如用户每次请求服务的处理时间等,可方便的监测系统中存在的瓶颈。Zipkin提供了可插拔数据存储方式:```In-Memory```、```MySql```、```Cassandra```以及```Elasticsearch```。
> ## 集成
Zipkin官网:[https://zipkin.io/](https://zipkin.io/)
Zipkin Server下载链接:[latest release](https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec)
下载完成后使用```java -jar zipkin-server-2.23.2-exec.jar```运行,默认端口```9411```
项目根目录```pom.xml```中引入依赖:
```
<!-- zipkin客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
```
在服务共享配置application-dev.yml中添加如下配置,使每个服务都使用该配置:
```yml
spring:
# zipkin
zipkin:
# server地址
base-url: http://127.0.0.1:9411/
# 让nacos当成一个url解析
discoverClientEnabled: false
seluth:
sampler:
# 采样百分比
probability: 1.0
```
> ## 管理界面
浏览器访问 [http://localhost:9411/](http://localhost:9411/)
![](https://img.kancloud.cn/18/34/1834947d433322272bdfadc5d6c82f5a_1917x979.png)