ZipKin
是一個開放源代碼的分佈式跟蹤系統,用於收集服務的定時數據,以解決微服務架構中的延遲問題。包括數據的收集、存儲、查找和展示。前端
每一個服務向 Zipkin
報告計時數據,Zipkin
會根據調用關係經過 Zipkin UI
生成依賴關係圖,顯示了多少跟蹤請求經過每一個服務。該組件可讓咱們經過一個 Web
前端輕鬆的收集和分析數據。例如用戶每次請求服務的處理時間等,可方便的監測系統中存在的瓶頸。java
微服務架構是經過業務來劃分服務的,使用 REST
調用。對外暴露的一個接口,可能須要不少個服務協同才能完成這個接口功能。web
若是鏈路上任何一個服務出現問題或者網絡超時,都會造成致使接口調用失敗。spring
隨着業務的不斷擴張,服務之間互相調用會愈來愈複雜。隨着服務的愈來愈多,對調用鏈的分析會愈來愈複雜,以下圖:瀏覽器
在 pom.xml
主要添加 zipkin
、 zipkin-server
和 zipkin-autoconfigure-ui
依賴網絡
<dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-server</artifactId> </dependency> <dependency> <groupId>io.zipkin.java</groupId> <artifactId>zipkin-autoconfigure-ui</artifactId> </dependency>
注意: 這裏的 zipkin
版本號爲 2.10.1
,須要將版本號託管到統一依賴管理項目中架構
在 application.yml
主要添加 zipkin
的相關配置app
management: metrics: web: server: auto-time-requests: false
在 Application
啓動類中經過 @EnableZipkinServer
註解開啓 Zipkin Server
功能分佈式
@SpringBootApplication @EnableEurekaClient @EnableZipkinServer public class ZipkinApplication { public static void main(String[] args) { SpringApplication.run(ZipkinApplication.class, args); } }
在統一依賴管理項目中繼承 Spring Boot 2.0.2.RELEASE
父項目,並聲明 Spring Cloud Finchley.RC1
依賴版本。ide
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.2.RELEASE</version> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RC1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
在當前項目 pom.xml
中主要添加依賴 spring-cloud-starter-zipkin
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zipkin</artifactId> </dependency>
在 application.yml
中添加 zipkin
地址便可
spring: zipkin: base-url: http://localhost:9411
啓動所有項目,打開瀏覽器訪問:http://localhost:9411 ,出現如下界面
點擊 Find a trace
,能夠看到具體服務相互調用的數據
點擊 Dependencies
,能夠發現服務的依賴關係