SpringCloud 商城系統搭建之Sleuth
阿新 • • 發佈:2020-12-19
技術標籤:springBoot學習筆記微服務springboot
前提
本文是基於SpringCloud 商城系統搭建之eureka
SpringCloud Sleuth 簡介
Spring Cloud Sleuth為Spring Cloud實現了分散式跟蹤解決方案。
Spring Cloud Sleuth借鑑了Dapper的術語。
Span:基本的工作單元。Span包括一個64位的唯一ID,一個64位trace碼,描述資訊,時間戳事件,key-value 註解(tags),span處理者的ID(通常為IP)。
Trace:一組Span形成的樹形結構。
Annotation:用於及時記錄存在的事件。常用的Annotation如下:
- cs:客戶端傳送(client send) 客戶端發起一個請求,表示span開始
- sr:伺服器接收(server received) 伺服器接收到客戶端的請求並開始處理,sr - cs 的時間為網路延遲
- ss:伺服器傳送(server send) 伺服器處理完請求準備返回資料給客戶端。ss - sr 的時間表示伺服器端處理請求花費的時間
- cr:客戶端接收(client received) 客戶端接收到處理結果,表示span結束。 cr - cs 的時間表示客戶端接收服務端資料的時間
Sleuth 整合
按照下面步驟改造之前的專案supermarker-provider
1、在pom.xml 檔案中,新增Spring Cloud Sleuth 的jar 包依賴
<!--sleuth -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
2、application.properties 新增日誌檔案輸出,方便查詢資訊追蹤
# 日誌記錄輸出 logging.level.root=Info logging.level.org.springframework.web.servlet.DispatcherServlet=DEBUG
3、分散式鏈路資訊追蹤:分別啟動:supermarker-eureka、supermarker-provider、supermarker-consume,瀏覽器訪問:http://localhost:8083/user?id=2
重點檢視supermarker-provider 生成的請求鏈路資訊:
2020-12-18 02:12:41.048 DEBUG [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.s.web.servlet.DispatcherServlet : GET "/user?id=1", parameters={masked}
---------------provider埠被呼叫--------------8082
2020-12-18 02:12:41.357 INFO [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.h.h.i.QueryTranslatorFactoryInitiator : HHH000397: Using ASTQueryTranslatorFactory
Hibernate: select user0_.use_id as use_id1_0_, user0_.create_time as create_t2_0_, user0_.modify_time as modify_t3_0_, user0_.use_age as use_age4_0_, user0_.use_email as use_emai5_0_, user0_.use_id_no as use_id_n6_0_, user0_.use_name as use_name7_0_, user0_.use_phone_num as use_phon8_0_, user0_.use_sex as use_sex9_0_, user0_.use_state as use_sta10_0_ from user user0_ where user0_.use_id=1
2020-12-18 02:12:41.836 DEBUG [provider,140c59722f545377,140c59722f545377,false] 7264 --- [nio-8082-exec-4] o.s.web.servlet.DispatcherServlet : Completed 200 OK
2020-12-18 02:12:43.799 INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_PROVIDER/provider1 - Re-registering apps/PROVIDER
2020-12-18 02:12:43.799 INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_PROVIDER/provider1: registering service...
2020-12-18 02:12:43.813 INFO [provider,,,] 7264 --- [tbeatExecutor-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_PROVIDER/provider1 - registration status: 204
2020-12-18 02:12:48.385 DEBUG [provider,ff83f1addcfe58f1,ff83f1addcfe58f1,false] 7264 --- [nio-8082-exec-7] o.s.web.servlet.DispatcherServlet : GET "/user?id=1", parameters={masked}
其中:140c59722f545377 是traceID, 140c59722f545377 是spanID .
如果想仔細檢視鏈路生成具體資訊,可以將日誌輸出調整如下:
logging.level.root=Info
logging.level.org.springframework.cloud.sleuth=DEBUG