Spring Cloud Sleuth 中id的使用


Spring Cloud Sleuth采用的是Google的開源項目Dapper的專業術語。

  • Span:基本工作單元,發送一個遠程調度任務 就會產生一個Span,Span是一個64位ID唯一標識的,Trace是用另一個64位ID唯一標識的,Span還有其他數據信息,比如摘要、時間戳事件、Span的ID、以及進度ID。
  • Trace:一系列Span組成的一個樹狀結構。請求一個微服務系統的API接口,這個API接口,需要調用多個微服務,調用每個微服務都會產生一個新的Span,所有由這個請求產生的Span組成了這個Trace。
  • Annotation:用來及時記錄一個事件的,一些核心注解用來定義一個請求的開始和結束 。這些注解包括以下: 
    • cs - Client Sent -客戶端發送一個請求,這個注解描述了這個Span的開始
    • sr - Server Received -服務端獲得請求並准備開始處理它,如果將其sr減去cs時間戳便可得到網絡傳輸的時間。
    • ss - Server Sent (服務端發送響應)–該注解表明請求處理的完成(當請求返回客戶端),如果ss的時間戳減去sr時間戳,就可以得到服務器請求的時間。
    • cr - Client Received (客戶端接收響應)-此時Span的結束,如果cr的時間戳減去cs時間戳便可以得到整個請求所消耗的時間。

簡單使用:Trace將一次請求的日志全部串起來;

在日志中配置

%X{X-B3-TraceId:-}-%X{X-B3-SpanId:-} 
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %X{X-B3-TraceId:-}-%X{X-B3-SpanId:-} %level ${LOG_SYSTEM} [%logger{100}_%M] - %msg%n</pattern>

在日志中會顯示Traceid;

在程序中獲取Traceid:

    @Autowired
    private Tracer tracer; // 默認注入的是DefaultTracer


.........

    tracer.getCurrentSpan().traceIdString()
traceId對日志查詢會有極大幫助

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM