分布式鏈路追蹤理論

基本概念

分布式調用鏈標準-openTracing

Span-節點組成跟蹤樹結構

有一些特定的變量,SpanName SpanId traceId spanParentId

Trace(追蹤):代表一個完整的請求流程(如用戶下單),由多個Span組成

Span(跨度):請求經過的單個服務或操作(如訂單服務調用支付服務)

包含:開始/結束時間、服務名、調用關系等

Context(上下文):傳遞Trace ID、Span ID等,確保鏈路連續

分布式鏈路追蹤 = Trace ID串聯全局 + Span記錄局部 + 上下文傳遞


Span節點必須包含的內容

OperationName:操作名稱

BeiginTime:開始時間

EndTime:結束時間

SpanTag:是一組鍵值對構成的Span的標簽集合(key必須是String類型,value可以是String,Boolean和數字類型),這個的目的是為Span添加更多的描述信息

SpanLog:一組Span的日志集合,是鍵值對,記錄日志信息

SpanContext:是一個上下文對象,會從上一個節點傳遞到下一個節點,里面包含了traceIdSpanIdBaggage(這是一個跨Span集合,上一個節點往Baggage加信息下一個節點可以拿到,不要放太多信息不然會導致占用空間大影響效率),我們通過上下文對象去進行跨進程傳遞


TraceSegment和TraceId原理

TraceSegment:

  1. 指的是一個進程中所有的Span的集合
  2. 如果多個線程協同產生同一個Trace(例如多個RPC調用不同的方法),它們只會共同創建一個TraceSegment
  3. 支持多入口,所以Skywalking去除了樹節點RootSpan的概念,提出了三種Span模型

TraceId:

  1. TraceId應該是全局唯一的
  2. 我們的TraceId是根據時間錯+算法生成的,所以會有時間回撥問題
  3. 我們有個變量lastTimeStamp保存上次TraceId生成的時間,然后在生成TraceId前進行比較,如果CuurentTimeMills比lastTimeStamp時間小,說明時間回撥了,我們就不生成Id,這樣來保證TraceId全局唯一

概念簡單總結

三個基本概念:Trace追蹤,Span服務,Context上下文(用來傳遞信息)

分布式鏈路追蹤 = Trace ID串聯全局 + Span記錄局部 + 上下文傳遞

Span中包含starTime,endTime,SpanContetx(上下文用來傳遞信息,包含TraceId,SpanId),

SpanTag(服務的標簽),SpanLog(服務的日志信息)

TraceSegment(追蹤段):一個進程中所有的Span的集合

TraceId:全局唯一,依賴時間戳,保存上次TraceId生成的時間,生成ID時時間戳進行對比,防止時間回撥問題


全鏈路追蹤的工作流

階段1:鏈路數據生成(埋點)

自動埋點:通過SDK或Agent自動在服務框架(如Spring Cloud、Dubbo)中注入追蹤邏輯。

手動埋點:在業務代碼中手動標記關鍵操作(如支付流程)。

示例:用戶下單時,網關生成Trace ID=ABC,創建根Span(Span ID=1)


階段2:鏈路數據采集與傳輸

采集方式:通過Agent或Sidecar(如Envoy)實時收集Span數據

傳輸協議:通過gRPC、HTTP等將數據發送到Collector(如Jaeger Collector)。

示例:訂單服務(Span ID=2)和庫存服務(Span ID=3)的Span通過Kafka發送到收集器。


階段3:鏈路數據存儲

存儲后端:使用時序數據庫(如InfluxDB)、列式存儲(如Cassandra)或Elasticsearch。

數據模型:按Trace ID聚合Span,建立索引(如服務名、耗時、錯誤碼)。

示例:Trace ID=ABC的所有Span被存儲為一條完整鏈路。


階段4:數據查詢與分析

可視化通過UI工具(如Zipkin、SkyWalking)展示火焰圖、調用拓撲。

分析能力:支持按服務名、耗時、錯誤碼過濾,自動統計P99延遲、錯誤率。

示例:發現庫存服務(Span ID=3)平均耗時500ms,觸發告警


流程簡單總結
  1. 鏈路數據生成:在進入Span服務前生成數據,一般來說再進入服務器會有自定義數據處理or服務啟動前的Agent增強讓服務有了多余的自定義邏輯
  2. 實時采集與傳輸鏈路數據:通過Http或者grpc采集和傳輸鏈路追蹤的數據
  3. 鏈路數據存儲:存儲鏈路追蹤的數據
  4. 數據查詢與分析可視化:通過可視化頁面展示詳細的鏈路追蹤流程和數據,顯示服務細節,耗時,錯誤等

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

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

相關文章

err: Error: Request failed with status code 400

好的,今天學習ai的時候從前端發送請求,實在是想不通為啥會啥是一個壞請求,后來從前端方法一個一個找參數,傳遞的值都有,然后想到我這邊需要傳遞的是一個對象,那么后端使用的RequestParam就接收不到json對象…

開發小程序后端用PHP好還是Java哪個好?

在開發后端時,是選擇PHP還是Java主要取決于你的項目需求、團隊技術棧、性能要求以及維護成本等因素。下面我將從幾個關鍵方面對兩者進行簡要對比,以幫助你做出更明智的選擇。 PHP 優點: 簡單易學:PHP語法簡單,上手快&a…

麒麟V10 aarch64 qt 安裝

在麒麟V10(aarch64架構)中安裝Qt,需根據具體需求選擇合適的方法。以下是綜合多個搜索結果的安裝方案及注意事項: 一、安裝方法 1. 在線安裝默認版本 適用于對Qt版本無特殊要求的情況。通過APT包管理器安裝系統默認提供的Qt版本(如Qt 5.12.12): sudo apt-get update s…

pdf.js移動端預覽PDF文件時,支持雙指縮放

在viewer.html中添加手勢縮放代碼 <script>// alert("Hello World");let agent navigator.userAgent.toLowerCase();// if (!agent.includes("iphone")) {let pinchZoomEnabled false;function enablePinchZoom(pdfViewer) {let startX 0, start…

算法筆記.kruskal算法求最小生成樹

題目&#xff1a;&#xff08;來源&#xff1a;AcWing&#xff09; 給定一個 n 個點 m 條邊的無向圖&#xff0c;圖中可能存在重邊和自環&#xff0c;邊權可能為負數。 求最小生成樹的樹邊權重之和&#xff0c;如果最小生成樹不存在則輸出 impossible。 給定一張邊帶權的無向…

C#開發的自定義Panel滾動分頁控件 - 開源研究系列文章

前些時候因為想擁有一個自己的軟件快捷打開軟件&#xff0c;于是參考Windows 11的開始菜單&#xff0c;進行了編寫這個應用軟件&#xff0c;里面有一個功能就是對顯示的Panel里的應用對象的分頁功能&#xff0c;于是就想寫一個對Panel的自定義滾動條控件。 下面開始介紹此控件的…

【基礎篇】prometheus命令行參數詳解

文章目錄 本篇內容講解命令行參數詳解 本篇內容講解 prometheus高頻修改命令行參數詳解 命令行參數詳解 在頁面的/頁面上能看到所有的命令行參數&#xff0c;如圖所示&#xff1a; 使用shell命令查看 # ./prometheus --help usage: prometheus [<flags>]The Promethe…

深入理解CSS3:Flex/Grid布局、動畫與媒體查詢實戰指南

引言 在現代Web開發中&#xff0c;CSS3已經成為構建響應式、美觀且高性能網站的核心技術。它不僅提供了更強大的布局系統&#xff08;Flexbox和Grid&#xff09;&#xff0c;還引入了令人驚艷的動畫效果和精準的媒體查詢能力。本文將深入探討這些關鍵技術&#xff0c;幫助您提…

從線性到非線性:簡單聊聊神經網絡的常見三大激活函數

大家好&#xff0c;我是沛哥兒&#xff0c;我們今天一起來學習下神經網絡的三個常用的激活函數。 引言&#xff1a;什么是激活函數 激活函數是神經網絡中非常重要的組成部分&#xff0c;它引入了非線性因素&#xff0c;使得神經網絡能夠學習和表示復雜的函數關系。 在神經網絡…

2025上海車展 | 移遠通信重磅發布AR腳踢毫米波雷達,重新定義“無接觸交互”尾門

4月25日&#xff0c;在2025上海國際汽車工業展覽會期間&#xff0c;全球領先的物聯網和車聯網整體解決方案供應商移遠通信宣布&#xff0c;其全新AR腳踢毫米波雷達RD7702AC正式發布。 該產品專為汽車尾門“無接觸交互”設計&#xff0c;基于先進的毫米波技術&#xff0c;融合AR…

深度學習:遷移學習

遷移學習 標題1.什么是遷移學習 遷移學習(Transfer Learning)是一種機器學習方法&#xff0c;就是把為任務 A 開發 的模型作為初始點&#xff0c;重新使用在為任務 B 開發模型的過程中。遷移學習是通過 從已學習的相關任務中轉移知識來改進學習的新任務&#xff0c;雖然大多數…

Rabbitmq下載和安裝(Windows系統,百度網盤)

一.下載安裝Erlang 1.百度云下載 鏈接&#xff1a;https://pan.baidu.com/s/1k_U25KKngEf1iXWD1ANOeg 提取碼&#xff1a;8ilc 2.安裝 傻瓜式安裝 直接下一步 選擇自己要安裝的路徑 3.配置環境變量 增加變量名為&#xff1a;ERLANG_HOME 變量值填寫自己的安裝路徑&#x…

(一)Linux的歷史與環境搭建

【知識預告】 Linux背景介紹Linux操作系統特性Linux的應用場景Linux的發行版本搭建Linux環境 1 Linux背景介紹 1.1 什么是Linux&#xff1f; Linux是一種自由、開源的操作系統。嚴格來說&#xff0c;它是基于類Unix設計思想&#xff0c;旨在為用戶提供穩定、安全、高效的計…

光流法:從傳統方法到深度學習方法

1 光流法簡介 光流&#xff08;Optical Flow&#xff09;是指圖像中像素灰度值隨時間的變化而產生的運動場。 簡單來說&#xff0c;它描述了圖像中每個像素點的運動速度和方向。 光流法是一種通過分析圖像序列中像素灰度值來計算光流的方法。對于圖像數據計算出來的光流是一個二…

解決ssh拉取服務器數據,要多次輸入密碼的問題

問題在于&#xff0c;每次循環調用 rsync 都是新開一個連接&#xff0c;所以每次都需要輸入一次密碼。為了只輸入一次密碼&#xff0c;有以下幾種方式可以解決&#xff1a; ? 推薦方案&#xff1a;設置 SSH 免密登錄 最穩最安全的方式是&#xff1a;配置 SSH 免密登錄&#x…

web技術與Nginx網站服務

目錄 一. web基礎 1. 域名概念 2. Hosts 文件 3. DNS 4. 域名注冊 5. 網頁與 HTML 二. 網頁概述 1. HTML 概述 2. HTML 基本標簽 3. 網站和主頁 三. 靜態網頁與動態網頁 1. 靜態網頁 2. 動態網頁 3. 動態網頁語言 四. HTTP 協議 1. HTTP 協議概述 2. HTTP …

信創系統資產清單采集腳本:主機名+IP+MAC 一鍵生成 CSV

原文鏈接&#xff1a;信創系統資產清單采集腳本&#xff1a;主機名IPMAC 一鍵生成 CSV Hello&#xff0c;大家好啊&#xff01;今天給大家帶來一篇在信創終端操作系統上自動批量采集主機名、IP 和 MAC 并導出為 CSV 表格的實戰文章&#xff01;本方案使用 sshpass 和 Bash 腳本…

【dify+docker安裝教程】

目錄 一、dify安裝包下載 二、運行環境配置 1、下載docker 2、安裝 2.1 新建文件夾 2.2 安裝 2.3 命令安裝 3.下載完成后需要重啟電腦&#xff0c;注意保存文檔&#xff01;&#xff01;注意保存&#xff01;&#xff01;注意&#xff01;&#xff01;&#xff08;血的教…

HTML 地理定位(Geolocation)教程

HTML 地理定位(Geolocation)教程 簡介 HTML5 的 Geolocation API 允許網頁應用獲取用戶的地理位置信息。這個功能可用于提供基于位置的服務&#xff0c;如導航、本地搜索、天氣預報等。本教程將詳細介紹如何在網頁中實現地理定位功能。 工作原理 瀏覽器可以通過多種方式確定…

協作開發攻略:Git全面使用指南 — 引言

協作開發攻略&#xff1a;Git全面使用指南 — 引言 Git 是一種分布式版本控制系統&#xff0c;用于跟蹤文件和目錄的變更。它能幫助開發者有效管理代碼版本&#xff0c;支持多人協作開發&#xff0c;方便代碼合并與沖突解決&#xff0c;廣泛應用于軟件開發領域。 文中內容僅限技…