詳解 Apache SkyWalking 跨進程傳播協議
- 2021 年 9 月 1 日
- 筆記
簡介
SkyWalking 跨進程傳播協議是用於上下文的傳播,本文介紹的版本是3.0,也被稱為為sw8
協議。
Header項
Header應該是上下文傳播的最低要求。
- Header名稱:
sw8
. - Header值:由
-
分隔的8個欄位組成。Header值的長度應該小於2KB。
Header值
Header值中具體包含以下8個欄位:
- 取樣(Sample),0 或 1,0 表示上下文存在, 但是可以(也很可能)被忽略;1 表示這個追蹤需要取樣並發送到後端。
- 追蹤ID(Trace Id),是 BASE64 編碼的字元串,其內容是由
.
分割的三個 long 類型值, 表示此追蹤的唯一標識。 - 父追蹤片段ID(Parent trace segment Id),是 BASE64 編碼的字元串,其內容是字元串且全局唯一。
- 父跨度ID(Parent span Id),是一個從 0 開始的整數,這個跨度ID指向父追蹤片段(segment)中的父跨度(span)。
- 父服務名稱(Parent service),是 BASE64 編碼的字元串,其內容是一個長度小於或等於50個UTF-8編碼的字元串。
- 父服務實例標識(Parent service instance),是 BASE64 編碼的字元串,其內容是一個長度小於或等於50個UTF-8編碼的字元串。
- 父服務的端點(Parent endpoint),是 BASE64 編碼的字元串,其內容是父追蹤片段(segment)中第一個入口跨度(span)的操作名,由長度小於或等於50個UTF-8編碼的字元組成。
- 本請求的目標地址(Peer),是 BASE64 編碼的字元串,其內容是客戶端用於訪問目標服務的網路地址(不一定是 IP + 埠)。
Header值示例
上面的說明太幹了,我們來舉一個具體的例子,可以更好的理解。
有兩個服務,分別叫onemore-a和 onemore-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,取樣,表示這個追蹤需要取樣並發送到後端。
- YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDk=,追蹤ID,解碼後為:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
- YTRlYzZmYzhjY2FiNGJiNGI2ODIwNjQ2OThjYzk3ZTYuNzQuMTYyMTgzODExMDQ1NTAwMDg=,父追蹤片段ID,解碼後為:a4ec6fc8ccab4bb4b682064698cc97e6.74.16218381104550009
- 2,父跨度ID。
- b25lbW9yZS1h,父服務名稱,解碼後為:onemore-a
- ZTFkMmZiYjYzYmJhNDMwNDk5YWY4OTVjMDQwZTMyZmVAMTkyLjE2OC4xLjEwMQ==,父服務實例標識,解碼後為:[email protected]
- L29uZW1vcmUtYS9nZXQ=,父服務的端點,解碼後為:/onemore-a/get
- MTkyLjE2OC4xLjEwMjo4MA==,本請求的目標地址,解碼後為:192.168.1.102:80
擴展Header項
擴展Header項是為高級特性設計的,它提供了部署在上游和下游服務中的探針之間的交互功能。
- Header名稱:
sw8-x
- Header值:由
-
分割,欄位可擴展。
文章持續更新,微信搜索「萬貓學社」第一時間閱讀,關注後回復「電子書」,免費獲取12本Java必讀技術書籍。
擴展Header值
當前值包括的欄位:
- 追蹤模式(Tracing Mode),空、0或1,默認為空或0。表示在這個上下文中生成的所有跨度(span)應該跳過分析。在默認情況下,這個應該在上下文中傳播到服務端,除非它在跟蹤過程中被更改。
微信公眾號:萬貓學社
微信掃描二維碼
關注後回復「電子書」
獲取12本Java必讀技術書籍
