前文回顧:
Spring Cloud(一)Eureka Server-單體及叢集搭建
Spring Cloud(二) 配置Eureka Client
Spring Cloud(三) 熔斷器Hystrix
Spring Cloud(四) API網關Zuul
Spring Cloud(五) Zuul Filter
Spring Cloud(六) 服務網關GateWay 入門
Spring Cloud(七) GateWay 服務化和過濾器
一.簡介
Zipkin 是一個開放源代碼分布式的跟蹤系統,由Twitter公司開源,它緻力于收集服務的定時資料,以解決微服務架構中的延遲問題,包括資料的收集、存儲、查找和展現。
每個服務向zipkin報告計時資料,zipkin會根據調用關系通過Zipkin UI生成依賴關系圖,顯示了多少跟蹤請求通過每個服務,該系統讓開發者可通過一個 Web 前端輕松的收集和分析資料,例如使用者每次請求服務的處理時間等,可友善的監測系統中存在的瓶頸。
Zipkin提供了可插拔資料存儲方式:In-Memory、MySql、Cassandra以及Elasticsearch。
二.代碼示例
該項目基于之前部落格中的Spring Cloud 1-4的項目開發
1.pom中添加依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.yfy</groupId>
<artifactId>study07_zkipin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>study07_zkipin</name>
<description>Demo project for Spring Boot</description>
<properties>
<zipkin-version>2.11.8</zipkin-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-server</artifactId>
<version>${zipkin-version}</version>
</dependency>
<dependency>
<groupId>io.zipkin.java</groupId>
<artifactId>zipkin-autoconfigure-ui</artifactId>
<version>${zipkin-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-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>
</dependencies>
2.Application啟動類中添加注解
@SpringBootApplication
@EnableZipkinServer
public class Study07ZkipinApplication {
public static void main(String[] args) {
SpringApplication.run(Study07ZkipinApplication.class, args);
}
}
3.配置檔案
server:
port: 9411
spring:
application:
name: zipkin
management:
metrics:
web:
server:
#避免通路zipkin頁面報java.lang.IllegalArgumentException
auto-time-requests: false
4.微服務配置
在spring-cloud-eureka
、
spring-cloud-producer
、
spring-cloud-consumer
、
gateway-cloud-zuul中配置以下資訊:
spring.sleuth.sampler.probability=1.0
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
5.測試
- 啟動spring-cloud-zipkin
通路:http://localhost:9411/zipkin
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHLxsGVPhXRtRGawJDW1olMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLxIzNyMzNycTM5AzNwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
- 依次啟動
、spring-cloud-eureka
、spring-cloud-producer
、spring-cloud-consumer
gateway-cloud-zuul
通路對應的接口
http://localhost:9002/hello?name=yfy
http://localhost:9002/world
http://localhost:8888/spring-cloud-consumer/hello/231213?token=12321
http://localhost:8888/spring-cloud-producer/hello?name=yfy&token=11
注:若不調用相應接口對應的服務名不會顯示到選擇框
可以看到依賴關系如下: