Spring Cloud 服務追蹤實戰:使用 Zipkin 構建分布式鏈路追蹤

Spring Cloud 服務追蹤實戰:使用 Zipkin 構建分布式鏈路追蹤

在分布式微服務架構中,一個用戶請求往往需要經過多個服務協作完成,如果出現性能瓶頸或異常,排查會非常困難。此時,分布式鏈路追蹤(Distributed Tracing)技術就顯得尤為重要。本文將帶你一步步搭建基于 Zipkin 的服務追蹤系統,幫助你更好地監控和分析微服務調用鏈路。

什么是 Zipkin

Zipkin 是一款開源的分布式追蹤系統,最初由 Twitter 開發,用于收集各個服務之間請求的時序數據,分析請求的延遲、瓶頸和錯誤。

通過 Zipkin,我們可以直觀地看到請求如何在微服務之間傳播,幫助開發者快速定位性能瓶頸,優化系統架構。

下載并啟動 Zipkin

首先,需要下載并啟動 Zipkin Server。可以直接通過以下鏈接下載可執行 jar 包:

https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec

下載完成后,使用命令行(CMD)執行以下命令啟動 Zipkin:

java -jar zipkin-server-<version>-exec.jar

其中,<version> 替換為實際下載的版本號。

image-20250629164505575

默認情況下,Zipkin 會啟動在 http://localhost:9411/。啟動成功后,你可以在瀏覽器中訪問該地址查看 Zipkin 的可視化界面。

image-20250629164535903

集成 Zipkin 到 Spring Boot 微服務

添加依賴

在你的微服務項目 pom.xml 中添加以下依賴:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>

如果你使用的是 Spring Cloud Alibaba,還需添加對應的版本管理依賴(spring-cloud-dependencies)。

配置 application.yml

src/main/resources/application.yml 中配置 Zipkin:

server:port: 8181
spring:zipkin:base-url: http://localhost:9411sleuth:sampler:# 設置采樣率,默認 0.1(10%),這里配置為 1.0 表示 100% 請求都會被追蹤probability: 1.0application:name: zipkin

sleuth.sampler.probability 表示請求采樣率。如果只想采集部分請求,可以將其設置為 0.1 或其他小于 1 的值。

編寫示例接口

例如,在 Controller 中新增一個接口,方便測試鏈路追蹤:

@RestController
@RequestMapping("/trace")
public class TraceController {@GetMapping("/test")public String testTrace() {return "Hello Zipkin!";}
}

啟動服務

啟動應用后,訪問地址:http://localhost:8181/trace/test

然后進入 Zipkin 控制臺:http://localhost:9411/ ,點擊 Find Traces,即可看到剛剛訪問的請求鏈路信息,點擊可以查看詳細的調用過程、耗時等信息。

鏈路追蹤界面解讀

進入 Zipkin Web UI 后,可以看到以下核心功能:

  • Service:顯示所有注冊過的服務
  • Dependencies:展示服務之間的調用依賴關系
  • Trace details:展示具體請求的時間線(調用樹狀結構),包含每個服務的耗時

通過這些信息,可以清晰了解每個請求的流轉路徑,定位哪個服務處理最慢,或者哪些調用鏈存在異常。

總結

使用 Zipkin 結合 Spring Cloud Sleuth,可以輕松實現微服務的全鏈路追蹤,極大提升系統可觀測性和問題排查效率。特別是在微服務體系下,當面對復雜調用鏈和高并發請求時,這種能力顯得尤為重要。

延伸閱讀

  • Spring Cloud Sleuth 官方文檔:https://spring.io/projects/spring-cloud-sleuth
  • Zipkin 官方文檔:https://zipkin.io/

如果這篇文章對你有幫助,歡迎收藏、點贊或關注,后續會持續分享更多 Spring Cloud 實踐與微服務架構相關內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89611.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux云計算基礎篇(6)

一、IO重定向和管道 stdin&#xff1a;standard input 標準輸入 stdout&#xff1a;standard output 標準輸出 stderr&#xff1a; standard error 標準錯誤輸出 舉例 find /etc/ -name passwd > find.out 將正確的輸出重定向在這個find.ou…

Python將COCO格式分割標簽繪制到對應的圖片上

Python將COCO格式分割標簽繪制到對應的圖片上 前言前提條件相關介紹COCO 格式簡介&#xff08;實例分割&#xff09;&#x1f4c1; 主要目錄結構&#xff1a;&#x1f4c4; JSON 標注文件結構示例&#xff1a;? 特點&#xff1a; 實驗環境Python將COCO格式分割標簽繪制到對應的…

光纖(FC)交換機與以太網(網絡)交換機的區別

光纖通道交換機&#xff08;FC交換機&#xff09;與普通以太網交換機&#xff08;網絡交換機&#xff09;在用途、協議、性能、可靠性等方面存在顯著差異&#xff0c;主要區別如下&#xff1a; 1. 用途與網絡類型 FC交換機 主要用于存儲區域網絡&#xff08;SAN&#xff09;&a…

電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問題

電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問題 簡單學習一下有限元法的基礎理論&#xff0c;書本為電磁場有限元經典教材&#xff1a; THE FINITE ELEMENT METHOD IN ELECTROMAGNETICS, JIAN-MING JIN 目錄 電磁場有限元方法EX2.2-里茲法求解泊松方程控制的邊值問…

云端備份與恢復策略:企業如何選擇最安全的備份解決方案

更多云服務器知識&#xff0c;盡在hostol.com 想象一下&#xff0c;某個凌晨&#xff0c;你突然發現公司所有重要數據都被加密&#xff0c;系統崩潰&#xff0c;業務停擺。有人給你打來電話說&#xff1a;“一切都被勒索了&#xff0c;恢復費用可能需要幾百萬。”這時&#xf…

OSPF高級特性之FRR

一、概述 眾所周知,IGP當中鏈路狀態路由協議(OSPF、ISIS)之所以可以代替我們的矢量路由協議(RIP),就是因為鏈路狀態路由協議可以根據某些特性快速的感知到路由的變化從而改變路徑。 前面我們已經介紹過了OSPF的其中一個快速收斂的機制,SPF算法,本章節將介紹另一個快速收斂機制,…

多元化國產主板,滿足更高性能、更高安全的金融發展

在金融行業數字化轉型的浪潮中&#xff0c;對于核心硬件的性能與安全需求達到了前所未有的高度。國產主板應運而生&#xff0c;憑借其卓越的多元化特性&#xff0c;為金融領域帶來了高性能運算與高安全防護的雙重保障&#xff0c;成為推動金融行業發展的關鍵力量。以高能計算機…

數據庫分布式架構:ShardingSphere 實踐

一、數據庫分布式架構概述 1.1 分布式架構概念 在當今數字化時代&#xff0c;隨著業務的不斷拓展和數據量的爆炸式增長&#xff0c;傳統的單機數據庫架構逐漸暴露出諸多局限性。例如&#xff0c;在電商大促期間&#xff0c;海量的訂單數據和用戶訪問請求會讓單機數據庫不堪重…

【WRFDA教程第二期】運行WRFDA 3DVAR/4DVAR數據同化

目錄 一、準備階段&#xff1a;下載并解壓測試數據二、運行 3DVAR 教學實驗日志分析&#xff08;wrfda.log&#xff09;進階實驗建議&#xff1a;對比不同設置的影響輸出文件說明 三、運行 4DVAR 教學實驗步驟1&#xff1a;準備工作目錄與環境變量步驟2&#xff1a;鏈接可執行文…

redis緩存三大問題分析與解決方案

什么是緩存&#xff1f; 緩存&#xff08;Cache&#xff09;是一種將熱點數據緩存在內存中&#xff08;如 Redis&#xff09;以加快訪問速度、減輕數據庫壓力的技術。 但引入緩存后可能出現 三大核心問題&#xff1a; 緩存穿透&#xff08;Cache Penetration&#xff09;緩存…

李宏毅機器學習筆記——梯度下降法

深度學習介紹 基于仿生學的一種自成體系的機器學習算法&#xff0c;包括但不限于圖像識別、語音、文本領域。 梯度下降法 作為深度學習算法種常用的優化算法 梯度下降法&#xff0c;是一種基于搜索的最優化方法&#xff0c;最用是最小化一個損失函數。梯度下降是迭代法的一…

day50/60

浙大疏錦行 DAY 50 預訓練模型CBAM模塊 知識點回顧&#xff1a; resnet結構解析CBAM放置位置的思考針對預訓練模型的訓練策略 差異化學習率三階段微調 ps&#xff1a;今日的代碼訓練時長較長&#xff0c;3080ti大概需要40min的訓練時長 作業&#xff1a; 好好理解下resnet18的…

Vue3 之vite.config.js配置

一、示例 import { defineConfig } from vite import vue from vitejs/plugin-vue import path from path // https://vitejs.dev/config/ export default defineConfig({plugins: [vue()],base: ./,build: {assetsDir: static, //指定靜態資源目錄rollupOptions: {input: {mai…

利用Gpu訓練

方法一&#xff1a; 分別對網絡模型&#xff0c;數據&#xff08;輸入&#xff0c;標注&#xff09;&#xff0c;損失函數調用.cuda() 網絡模型&#xff1a; if torch.cuda.is_available():netnet.cuda() 數據&#xff08;訓練和測試&#xff09;&#xff1a; if torch.cud…

使用excel中的MATCH函數進行匹配數據

一、背景 在平日處理數據時&#xff0c;經常需要將給定數據按照制定的數據進行排序&#xff0c;數量比較大時&#xff0c;逐個處理有點費事費力且容易出錯&#xff0c;這時可借助excel表格中match函數進行精確匹配。 二、使用match函數–精確排序操作步驟 主要工作步驟&#xf…

SpringCloud系列(41)--SpringCloud Config分布式配置中心簡介

前言&#xff1a;微服務意味著要將單體應用中的業務拆分成一個個子服務&#xff0c;每個服務的粒度相對較小&#xff0c;因此系統中會出現大量的服務&#xff0c;但由于每個服務都需要必要的配置信息才能運行&#xff0c;所以—套集中式的、動態的配置管理設施是必不可少的&…

wireshark介紹和使用

Wireshark 介紹 Wireshark 是一款開源的 網絡協議分析工具&#xff08;Packet Sniffer&#xff09;&#xff0c;用于捕獲和分析網絡數據包。它支持多種協議解析&#xff0c;適用于網絡調試、安全分析、網絡教學等場景。 官網&#xff1a;https://www.wireshark.org/ 特點&#…

【甲方安全建設】敏感數據檢測工具 Earlybird 安裝使用詳細教程

文章目錄 背景工具介紹安裝方法一、Linux 與 macOS 安裝流程二、Windows 系統安裝流程(一)三、Windows 系統安裝流程(二)四、錯誤處理使用說明模塊與規則機制集成與運維建議結語背景 隨著源代碼泄露、配置誤提交、密碼硬編碼等風險頻發,企業源代碼庫中潛在的敏感信息泄漏…

異步Websocket構建聊天室

目錄 Websocket技術背景 Websockec簡介 實現websocket通信程序 實驗環境&#xff1a; 服務端&#xff08;阿里云ESC,VPC網絡&#xff09;&#xff1a; 客戶端1&#xff08;本機&#xff09;&#xff1a; 通信模型&#xff1a; 實現功能邏輯&#xff1a; 源代碼&#xff1a; 服務…

OpenCV CUDA模塊設備層-----反向二值化閾值處理函數thresh_binary_inv_func()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 OpenCV CUDA 模塊&#xff08;cudev&#xff09; 中的一個仿函數&#xff08;functor&#xff09;生成器&#xff0c;用于創建一個反向二值化閾值…