1. 程式人生 > 其它 >微服務架構 | 10.1 使用 Sleuth 追蹤服務呼叫鏈

微服務架構 | 10.1 使用 Sleuth 追蹤服務呼叫鏈

目錄

前言

參考資料
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚矽谷 SpringCloud 框架開發教程 周陽》

Spring Cloud Sleuth 是一個 Spring Cloud 專案,它將關聯 ID 裝備到 HTTP 呼叫上,並將生成的跟蹤資料提供給 OpenZipkin 的鉤子。Spring Cloud Sleuth 通過新增過濾器並與其他 Spring 元件進行互動,將生成的關聯 ID 傳遞到所有系統呼叫;


1. Sleuth 基礎知識

1.1 Sleuth 原理

  • 使用 Sleuth 來追蹤服務呼叫鏈很簡單,只需要新增一個 pom.xml 依賴即可;
  • 新增依賴後會對輸出日誌追加一條資訊;
  • 利用資訊裡的追蹤 ID即可獲知本次呼叫使用到了哪些服務;

2. 在服務中使用 Sleuth 追蹤

2.1 引入 pom.xml 依賴檔案

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
  • 只需要引入該依賴檔案即可完成以下工作:
    • 檢查每次呼叫是否存在 Spring Cloud Sleuth 跟蹤資訊,存在則進行日誌記錄和處理;
    • 將 Spring Cloud Sleuth 跟蹤資訊新增到 Spring MDC(Spring Mapped Diagnostic Context,Spring 的對映診斷上下文);
    • 將 Spring Cloud跟蹤資訊注入服務發出的每個出站 HTTP 呼叫以及 Spring 訊息傳遞通道的訊息中;

2.2 檢視日誌資訊

  • 啟動服務,呼叫介面,則會在控制檯裡看到類似如下資訊:
  • Sleuth 會在每個日誌條目追加以下資訊:

    • 服務的應用程式名稱
      :預設為 spring.application.name 定義的名稱;
    • 跟蹤 ID(trace ID):跟蹤 ID是關聯 ID 的等價術語,表示整個事務的唯一編號;
    • 跨度 ID(span ID):表示整個事務中某一部分的唯一 ID(當與 Zipkin 整合來視覺化事務時,跨度 ID 尤為重要 );
    • 是否將跟蹤資料傳送到 Zipkin:對大量的日誌資料起過濾篩選作用;
  • 舉個例子:客戶端請求上游服務,而上游服務需要請求下游服務時,這兩個服務有相同的跟蹤 ID,不同的跨度 ID



最後

新人制作,如有錯誤,歡迎指出,感激不盡!
歡迎關注公眾號,會分享一些更日常的東西!
如需轉載,請標註出處!