spring cloud 2.0 入門系列一 (10)分散式鏈路追蹤-Zipkin
阿新 • • 發佈:2018-12-24
服務說明
Zipkin是什麼
Zipkin分散式跟蹤系統;它可以幫助收集時間資料,解決在microservice架構下的延遲問題;它管理這些資料的收集和查詢;Zipkin的設計是基於谷歌的Google Dapper論文。
每個應用程式向Zipkin報告定時資料,Zipkin UI呈現了一個依賴圖表來展示多少跟蹤請求經過了每個應用程式;如果想解決延遲問題,可以過濾或者排序所有的跟蹤請求,並且可以檢視每個跟蹤請求佔總跟蹤時間的百分比。
為什麼使用Zipkin
隨著業務越來越複雜,系統也隨之進行各種拆分,特別是隨著微服務架構和容器技術的興起,看似簡單的一個應用,後臺可能有幾十個甚至幾百個服務在支撐;一個前端的請求可能需要多次的服務呼叫最後才能完成;當請求變慢或者不可用時,我們無法得知是哪個後臺服務引起的,這時就需要解決如何快速定位服務故障點,Zipkin分散式跟蹤系統就能很好的解決這樣的問題。
服務搭建
服務端
從SpringCloud2.0 以後,官方已經不支援自定義服務,官方只提供編譯好的jar包供使用者使用。
這裡我們採用docker方式部署zipkin服務,並採用elasticsearch作為zipkin的資料儲存器。
下載映象
docker pull openzipkin/zipkin
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.0
編寫啟動檔案
新建資料夾,目錄如下
dockerfile |- elasticsearch | |- data |- docker-compose.yml
編寫啟動檔案docker-compose.yml
version: "3" services: elasticsearch: image: elasticsearch:latest container_name: elasticsearch restart: always networks: - elk ports: - "9200:9200" - "9300:9300" volumes: - ../elasticsearch/data:/usr/share/elasticsearch/data zipkin: image: zipkin:latest container_name: zipkin restart: always networks: - elk ports: - "9411:9411" environment: - STORAGE_TYPE=elasticsearch - ES_HOSTS=elasticsearch networks: elk:
關於docker-compose.yml 檔案格式及相關內容請自行百度瞭解。
啟動服務
命令模式進入dockerfile目錄,執行啟動命令
docker-compose up -d
客戶端搭建
修改pom檔案
增加zipkin依賴
<!-- 分散式鏈路追蹤 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
修改配置檔案
增加zipkin相關配置
spring:
zipkin:
base-url: http://localhost:9411/
sleuth:
sampler:
probability: 1 #樣本採集量,預設為0.1,為了測試這裡修改為1,正式環境一般使用預設值。
為了驗證效果,必須有兩個客戶端,一個提供介面,一個呼叫介面,這裡就不寫第二個客戶端搭建了,如果有不懂的可以參考之前的博文。
程式碼樣例
客戶端: