Spring Cloud 分散式鏈路跟蹤 Sleuth + Zipkin + Elasticsear
隨著業務越來越複雜,系統也隨之進行各種拆分,特別是隨著微服務架構的興起,看似一個簡單的應用,後臺可能很多服務在支撐;一個請求可能需要多個服務的呼叫;當請求遲緩或不可用時,無法得知是哪個微服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin 分散式跟蹤系統就能很好的解決這樣的問題。
那麼到底怎麼使用呢?接下來完成一個具體的例項來體會一把微服務鏈路追蹤:
本文使用的 Spring Cloud Finchley 版本,和其他版本會有不同
我們使用user-service,order-service 作為兩個微服務,zuul-gateway 作為服務閘道器
zuul-gateway -> order-service -> user-service, 形成服務呼叫鏈路,完成一次請求。
注意:Zipkin 不再推薦我們來自定義 Server 端,在最新版本的 Spring Cloud 依賴管理裡已經找不到 Zipkin-server 了 ,根本就不需要自己新建一個 Zipkin-server 服務,網上的各種教程都數互相抄的,請無視
一,環境安裝
本人使用 centos 7 ,java-10
安裝 Zipkin:聚合各個業務系統之間的呼叫延遲資料
安裝 RabbitMQ:系統呼叫資料傳輸
安裝 Elasticsearch:系統呼叫資料持久化
安裝Elasticsearch-head:Elasticsearch 視覺化
二,建立微服務
user-service
以下是pom依賴檔案
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>