簡介
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==,父服務實例標識,解碼后為:e1d2fbb63bba430499af895c040e32fe@192.168.1.101
- 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必讀技術書籍
