首頁>技術>

分散式鏈路監控與追蹤產生背景

在微服務系統中,隨著業務的發展,系統會變得越來越大,那麼各個服務之間的呼叫關係也就變得越來越複雜。一個 HTTP 請求會呼叫多個不同的微服務來處理返回最後的結果,在這個呼叫過程中,可能會因為某個服務出現網路延遲過高或傳送錯誤導致請求失敗,這個時候,對請求呼叫的監控就顯得尤為重要了。Spring Cloud Sleuth 提供了分散式服務鏈路監控的解決方案

服務與服務之間呼叫關係

鏈路指的:一串聯多個服務組成一個流程 呼叫鏈關係

Zipkin框架介紹

Zipkin 是 Twitter 的一個開源專案,它基於 Google Dapper 實現的。我們可以使用它來收集各個伺服器上請求鏈路的跟蹤資料,並通過它提供的 REST API 介面來輔助查詢跟蹤資料以實現對分散式系統的監控程式,從而及時發現系統中出現的延遲過高問題。除了面向開發的 API 介面之外,它還提供了方便的 UI 元件來幫助我們直觀地搜尋跟蹤資訊和分析請求鏈路明細,比如可以查詢某段時間內各使用者請求的處理時間等。

Zipkin 和 Config 結構類似,分為服務端 Server,客戶端 Client,客戶端就是各個微服務應用。

原理圖:

Zipkin環境搭建

在 Spring Boot 2.0 版本之後,官方已不推薦自己搭建Zipkin服務端了,而是直接提供了編譯好的 jar 包。詳情可以檢視官網:https://zipkin.io/pages/quickstart.html

注意:zipkin官網已經提供定製了,使用官方jar執行即可。

預設埠號啟動zipkin服務

java –jar zipkin.jar 預設埠號; 9411

http://192.168.18.220:9411

指定埠號啟動9411

java -jar zipkin.jar --server.port=8080

http://192.168.18.220:8080

ZipkinClient整合Maven依賴

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-zipkin</artifactId>

</dependency>

application.yml

spring:

application:

name: app-itmayiedu-member

zipkin:

base-url: http://192.168.18.220:9411/

###全部採集

sleuth:

sampler:

probability: 1.0

ZipkinClient整合rabbitMQ

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-stream-binder-rabbit</artifactId>

</dependency>

yml

spring:

application:

name: app-itmayiedu-order

zipkin:

base-url: http://192.168.18.220:9411/

### 預設可以不用寫

rabbitmq:

####連線地址

host: 127.0.0.1

####埠號

port: 5672

####賬號

username: guest

####密碼

password: guest

###全部採集

sleuth:

sampler:

probability: 1.0

request.getHeader("X-B3-TraceId");

request.getHeader("X-B3-TraceId")+",spanid:"+ request.getHeader("X-B3-SpanId")

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 2020新版APP分發程式原始碼 支援線上簽名