Brave 是一個分散式追蹤儀器庫。 Brave 通常會攔截生產請求以收集計時資料、關聯和傳播追蹤上下文。雖然追蹤資料通常會傳送到 Zipkin 伺服器,但第三方外掛程式也可傳送到替代服務,例如 Amazon X-Ray。
此儲存庫包括無依賴 Java 庫和生產服務中使用的常用元件的工具。例如,這包括 Servlet 的追蹤過濾器和 Apache Log4J 的日誌關聯。
您可以查看我們的範例項目,以了解如何追蹤簡單的 Web 應用程式。
Brave 的無依賴追蹤器庫適用於 JRE6+。這是儀器用於計時操作並添加描述它們的標籤的底層 API。該函式庫也包含解析X-B3-TraceId
標頭的程式碼。
大多數用戶不會直接編寫追蹤程式碼。相反,他們重複使用其他人編寫的工具。在推出您自己的儀器之前,請檢查我們的儀器和 Zipkin 的清單。常見的追蹤庫(如 JDBC、Servlet 和 Spring)已經存在。此處編寫的儀器經過測試和基準測試。
如果您嘗試追蹤遺留應用程序,您可能對 Spring XML 配置感興趣。這允許您無需任何自訂程式碼即可設定追蹤。
您可能希望將追蹤 ID 放入日誌檔案中,或更改線程本地行為。查看我們的上下文庫,以與 SLF4J 等工具整合。
所有 Brave 庫都與正在追蹤或整合的最低 Java 版本相匹配,並且不添加第 3 方依賴項。目標是既不影響您的專案的選擇,也不讓您的專案受到其他人所做的依賴決策的影響。
例如,即使包含基本的報告庫 zipkin-sender-urlconnection,Brave 也不會包含 json、日誌記錄、protobuf 或 thrift 依賴項。這意味著如果您的應用程式選擇 SLF4J、Gson 或 Guava 的特定版本,則無需擔心。此外,整個依賴樹(包括 json、thrift 或 protobuf 中的基本報告)的 jar 大小不到 512KiB。
有一個最低 Java 版本 1.6,它允許較舊的 JRE 和較舊的 Android 運行時,但可能會限制某些應用程式。例如,Servlet 2.5 可與 Java 1.5 搭配使用,但由於 Brave 為 1.6,因此在您至少使用 JRE 1.6 之前,您將無法追蹤 Servlet 2.5 應用程式。
所有整合都將其關聯的庫設定為“提供的”範圍。這可確保 Brave 不會幹擾您選擇的版本。
有些庫經常更新,這會導致 api 漂移。在某些情況下,我們會測試版本範圍以減少這種影響。例如,我們針對多個庫版本測試 gRPC 和 Kafka。
所有工件都會發佈到群組 ID「io.zipkin.brave」。我們對所有元件使用通用發行版本。
快照上傳到與 Maven Central 同步的 Sonatype
提交到 master 後,快照會上傳到 Sonatype。
當使用多個勇敢的元件時,您需要將版本對齊在一處。這可以讓您更安全地升級,不用擔心衝突。
為此,您可以使用我們的 Maven 工具 BOM(物料清單):
前任。在依賴項部分中,像這樣導入 BOM:
< dependencyManagement >
< dependencies >
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-bom</ artifactId >
< version >${brave.version}</ version >
< type >pom</ type >
< scope >import</ scope >
</ dependency >
</ dependencies >
</ dependencyManagement >
現在,您可以在選擇任何受支援的儀器時忽略版本。此外,任何間接使用都會使版本對齊:
< dependency >
< groupId >io.zipkin.brave</ groupId >
< artifactId >brave-instrumentation-okhttp3</ artifactId >
</ dependency >
完成上述操作後,您可以使用屬性brave.version
連貫地覆寫依賴項版本。這最常見的是測試新功能或修復。
注意:如果您覆寫某個版本,請務必仔細檢查您的版本是否比您要更新的版本有效(等於或晚於)。這樣就可以避免階級衝突。