# 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/)
