springcloud應用之zipkin+sleuth

springcloud應用之zipkin+sleuth

zipkin+sleuth

Sleuth
spring Cloud Sleuth爲 spring Cloud提供了分佈式跟蹤的解決方案,它大量借用了Google Dapper、 Twitter
Zipkin和 Apache HTrace的設計,先來了解一下 Sleuth的術語, Sleuth借用了 Dapper的術語。

span(跨度):基本工作單元。 span用一個64位的id唯一標識。除ID外,span還包含其他數據,例如描述、時間
戳事件、鍵值對的註解(標籤), spanID、span父 ID等。 span被啓動和停止時,記錄了時間信息。初始化 span
被稱爲"rootspan",該 span的 id和 trace的 ID相等。

trace(跟蹤):一組共享"rootspan"的 span組成的樹狀結構稱爲 traceo trac也用一個64位的 ID唯一標識, trace
中的所有 span都共享該 trace的 ID

annotation(標註): annotation用來記錄事件的存在,其中,核心annotation用來定義請求的開始和結束。

CS( Client sent客戶端發送):客戶端發起一個請求,該 annotation描述了span的開 始。
SR( server Received服務器端接收):服務器端獲得請求並準備處理它。如果用 SR減去 CS時間戳,就能得到網
絡延遲。c)
SS( server sent服務器端發送):該 annotation表明完成請求處理(當響應發回客戶端時)。如果用 SS減去 SR
時間戳,就能得到服務器端處理請求所需的時間。
CR( Client Received客戶端接收): span結束的標識。客戶端成功接收到服務器端的響應。如果 CR減去 CS時間
戳,就能得到從客戶端發送請求到服務器響應的所需的時間

Spring Cloud Sleuth可以追蹤10種類型的組件:async、Hystrix,messaging,websocket,rxjava,
scheduling,web(Spring MVC Controller,Servlet),webclient(Spring RestTemplate)、Feign、Zuul

spring官方圖如下:
在這裏插入圖片描述
Zipkin
Zipkin是 Twitter開源的分佈式跟蹤系統,基於 Dapper的論文設計而來。它的主要功能是收集系統的時序數據,從
而追蹤微服務架構的系統延時等問題。 Zipkin還提供了一個非常友好的界面,來幫助分析追蹤數據。
爲什麼要Zipkin
因爲sleuth對於分佈式鏈路的跟蹤僅僅是一些數據的記錄, 這些數據我們人爲來讀取和處理難免會太麻煩了,所以
我們一般吧這種數據上交給Zipkin Server 來統一處理.

搭建zipkin-server

zipkin官方推薦使用他的jar搭建,不要自定義
zipkin-server jar下載

用命令啓動zipkin-server:
java -jar zipkin-server-2.12.2-exec.jar
訪問http://127.0.0.1:9411出現下圖
在這裏插入圖片描述

sleuth整合zipkin

微服務添加如下依賴

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

yml添加

spring:
  zipkin:
    base-url: http://127.0.0.1:9411
  sleuth:
    sampler:
      percentage: 1.0 #數據收集率,1.0代表收集100%數據

哪些微服務需要添加上面信息
例如,有user,order1,order2微服務,user負載均衡調用order,order1,那麼這三個微服務你全部加上上面信息即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章