SpringBoot實戰電商項目mall(20k+star)地址:github.com/macrozheng/…java
Spring Cloud Sleuth 是分佈式系統中跟蹤服務間調用的工具,它能夠直觀地展現出一次請求的調用過程,本文將對其用法進行詳細介紹。git
隨着咱們的系統愈來愈龐大,各個服務間的調用關係也變得愈來愈複雜。當客戶端發起一個請求時,這個請求通過多個服務後,最終返回告終果,通過的每個服務都有可能發生延遲或錯誤,從而致使請求失敗。這時候咱們就須要請求鏈路跟蹤工具來幫助咱們,理清請求調用的服務鏈路,解決問題。github
咱們將經過user-service和ribbon-service之間的服務調用來演示該功能,這裏咱們調用ribbon-service的接口時,ribbon-service會經過RestTemplate來調用user-service提供的接口。spring
首先給user-service和ribbon-service添加請求鏈路跟蹤功能的支持;bash
在user-service和ribbon-service中添加相關依賴:app
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
複製代碼
spring:
zipkin:
base-url: http://localhost:9411
sleuth:
sampler:
probability: 0.1 #設置Sleuth的抽樣收集機率
複製代碼
Zipkin是Twitter的一個開源項目,能夠用來獲取和分析Spring Cloud Sleuth 中產生的請求鏈路跟蹤日誌,它提供了Web界面來幫助咱們直觀地查看請求鏈路跟蹤信息。elasticsearch
SpringBoot 2.0以上版本已經不須要自行搭建zipkin-server,咱們能夠從該地址下載zipkin-server:repo1.maven.org/maven2/io/z…maven
下載完成後使用如下命令運行zipkin-server:分佈式
java -jar zipkin-server-2.12.9-exec.jar
複製代碼
若是咱們把zipkin-server重啓一下就會發現剛剛的存儲的跟蹤信息所有丟失了,可見其是存儲在內存中的,有時候咱們須要將全部信息存儲下來,這裏以存儲到Elasticsearch爲例,來演示下該功能。工具
# STORAGE_TYPE:表示存儲類型 ES_HOSTS:表示ES的訪問地址
java -jar zipkin-server-2.12.9-exec.jar --STORAGE_TYPE=elasticsearch --ES_HOSTS=localhost:9200
複製代碼
以後須要從新啓動user-service和ribbon-service才能生效,重啓後屢次調用ribbon-service的接口http://localhost:8301/user/1;
若是安裝了Elasticsearch的可視化工具Kibana的話,能夠看到裏面已經存儲了跟蹤信息:
springcloud-learning
├── eureka-server -- eureka註冊中心
├── user-service -- 提供User對象CRUD接口的服務
└── ribbon-service -- ribbon服務調用測試服務
複製代碼
mall項目全套學習教程連載中,關注公衆號第一時間獲取。