SpringCloud Sleuth+Zipkin

 

Sleuth+Zipkin用來實現分佈式系統的鏈路追蹤。html

Sleuth組件用於日誌埋點、記錄鏈路數據,Zipkin組件用於展現鏈路數據。java

 

 


 

 

Sleuth的使用

(1)建立消費者、提供者時勾選Spring Cloud Tracing -> Sleuthspring

也能夠手動添加依賴:瀏覽器

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-sleuth</artifactId>
    </dependency>

 

 

(2)在消費者、提供者處理業務的類中添加成員變量緩存

//使用的是slf4j的日誌,不要導錯了
private final Logger logger = LoggerFactory.getLogger(this.getClass());

 

在處理業務的方法中(消費者調用提供者、提供者處理業務的方法中),輸出日誌springboot

logger.info("正在執行user-service的findOrdersByUserId方法,調用服務order-service");

內容根據須要修改。服務器

 

 

Sleuth輸出的日誌每每是空的,只輸出服務名:[order-service,,,]網絡

第(2)步是爲了解決此問題,使Sleuth輸出的日誌有內容。多線程

 

[order-service,cd99e95b12d13310,b6e08d7f788441bf,false]app

  • 第一個是spring.application.name,服務名
  • 第二個是sleuth生成的Trace ID,惟一標識一條請求鏈路
  • 第三個是sleuth生成的Span ID,Span ID是鏈路的基本單元,標識一個http請求的元數據,好比一個服務調用產生的http請求。1條鏈路中包含1個Trace ID、多個Span ID。
  • 第四個表示是否會將該信息傳輸到zipkin服務中收集、展現,配置了zipkin就是true,沒配置就是false

 

 

 


 

  

 

zipkin的使用

zipkin是大規模分佈式系統的一個APM工具(Application Performance Management),基於Google Dapper實現,搭配sleuth能夠實現可視化的鏈路調用分析。

APM工具經常使用的還有EagleEye 鷹眼、CAT。

 

zipkin組成:Collector、Storage、Restful API、Web UI組成。

 

 

(1)搭建zipkin服務器

https://zipkin.io/pages/quickstart.html   提供的方式下載速度都很慢,不推薦

 

到下面的地址直接下載編譯打包好的jar,下載的是最新版的zipkin:

https://search.maven.org/remote_content?g=io.zipkin&a=zipkin-server&v=LATEST&c=exec

 

zipkin是springboot項目,運行jar須要jdk環境,若是沒有配置jdk環境的須要先配置jdk環境。

雙擊jar運行(在Linux上可使用java  -jar命令來運行),瀏覽器地址欄輸入 127.0.0.1:9411 進入zipkin頁面,ip是zipkin所在機器的ip,zipkin默認使用的端口時9411。

 

 

(2)建立消費者、生產者時勾選Spring Cloud Tracing -> Zipkin Client

也能夠手動加依賴:

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zipkin</artifactId>
    </dependency>

 

 

(3)在消費者、提供者中添加配置

spring:
  application:
    #服務名稱
    name: order-service
 zipkin: #zipkin服務器的地址,sleuth會將鏈路數據傳輸到zipkin服務器,默認是localhost:9411 base-url: 192.168.1.9:9411 sleuth: sampler: #採樣率,0-1上的小數,好比0.5是將sleuth 50%的鏈路的數據傳輸給zipkin probability: 1.0

採樣率之前我搞的時候默認是0.1,如今的默認值彷佛好像是1.0(不肯定),開發的時候能夠設置大些,上線的時候設置小些,

由於採樣太多很佔網絡帶寬,並且zipkin把採樣的鏈路數據直接存儲在內存中(定時清理),採樣率過高zipkin服務器會很佔機器內存。

 

 

啓動應用,調用服務,在zipkin頁面可看到鏈路各部分的耗時狀況,優化耗時多的部分,好比加多線程、異步、緩存。

相關文章
相關標籤/搜索