詳解 Apache SkyWalking 跨進程傳播協議


簡介

SkyWalking 跨進程傳播協議是用於上下文的傳播,本文介紹的版本是3.0,也被稱為為sw8協議。

Header項

Header應該是上下文傳播的最低要求。

  • Header名稱:sw8.
  • Header值:由-分隔的8個字段組成。Header值的長度應該小於2KB。

Header值

Header值中具體包含以下8個字段:

  1. 采樣(Sample),0 或 1,0 表示上下文存在, 但是可以(也很可能)被忽略;1 表示這個追蹤需要采樣並發送到后端。
  2. 追蹤ID(Trace Id),是 BASE64 編碼的字符串,其內容是由 . 分割的三個 long 類型值, 表示此追蹤的唯一標識。
  3. 父追蹤片段ID(Parent trace segment Id),是 BASE64 編碼的字符串,其內容是字符串且全局唯一。
  4. 父跨度ID(Parent span Id),是一個從 0 開始的整數,這個跨度ID指向父追蹤片段(segment)中的父跨度(span)。
  5. 父服務名稱(Parent service),是 BASE64 編碼的字符串,其內容是一個長度小於或等於50個UTF-8編碼的字符串。
  6. 父服務實例標識(Parent service instance),是 BASE64 編碼的字符串,其內容是一個長度小於或等於50個UTF-8編碼的字符串。
  7. 父服務的端點(Parent endpoint),是 BASE64 編碼的字符串,其內容是父追蹤片段(segment)中第一個入口跨度(span)的操作名,由長度小於或等於50個UTF-8編碼的字符組成。
  8. 本請求的目標地址(Peer),是 BASE64 編碼的字符串,其內容是客戶端用於訪問目標服務的網絡地址(不一定是 IP + 端口)。

Header值示例

上面的說明太干了,我們來舉一個具體的例子,可以更好的理解。

有兩個服務,分別叫onemore-aonemore-b,用戶通過HTTP調用onemore-a/onemore-a/get,然后onemore-a/onemore-a/get又通過HTTP調用onemore-b/onemore-b/get,流程圖就是這樣的:

那么,我們在onemore-b/onemore-b/get的Header中就可以發現一個叫做sw8的key,其值為:

1-YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=-YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=-2-b25lbW9yZS1h-ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==-L29uZW1vcmUtYS9nZXQ=-MTkyLjE2OC4xLjEwMjo4MA==

文章持續更新,微信搜索「萬貓學社」第一時間閱讀,關注后回復「電子書」,免費獲取12本Java必讀技術書籍。

-字符進行分割,可以得到:

  1. 1,采樣,表示這個追蹤需要采樣並發送到后端。
  2. YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=,追蹤ID,解碼后為:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
  3. YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=,父追蹤片段ID,解碼后為:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
  4. 2,父跨度ID。
  5. b25lbW9yZS1h,父服務名稱,解碼后為:onemore-a
  6. ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==,父服務實例標識,解碼后為:e1d2fbb63bba430499af895c040e32fe@192.168.1.101
  7. L29uZW1vcmUtYS9nZXQ=,父服務的端點,解碼后為:/onemore-a/get
  8. MTkyLjE2OC4xLjEwMjo4MA==,本請求的目標地址,解碼后為:192.168.1.102:80

擴展Header項

擴展Header項是為高級特性設計的,它提供了部署在上游和下游服務中的探針之間的交互功能。

  • Header名稱:sw8-x
  • Header值:由-分割,字段可擴展。

文章持續更新,微信搜索「萬貓學社」第一時間閱讀,關注后回復「電子書」,免費獲取12本Java必讀技術書籍。

擴展Header值

當前值包括的字段:

  1. 追蹤模式(Tracing Mode),空、0或1,默認為空或0。表示在這個上下文中生成的所有跨度(span)應該跳過分析。在默認情況下,這個應該在上下文中傳播到服務端,除非它在跟蹤過程中被更改。

微信公眾號:萬貓學社

微信掃描二維碼

關注后回復「電子書」

獲取12本Java必讀技術書籍


免責聲明!

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



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