我想了解 Go 中的上下文和開放跟蹤中的行李項目之間的區別。具體來說,就是它們承載數據的差異。根據我所學到的知識,兩者都可以將鍵值對攜帶到它們的后代(子上下文/子跨度)。在Go的標準庫中,我可以使用:func context.WithValue(parent Context, key, val interface{}) Context在開放跟蹤中,我可以使用:func SetBaggageItem(restrictedKey, value string) Span顯然,存在一些類型限制(接口{}和字符串)。還有什么我應該知道的嗎?在什么情況下我應該選擇攜帶哪些鍵值對?
1 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
這兩者都有不同的用例。
GoContext 用于定義上下文類型,該類型跨 API 邊界攜帶截止時間、取消信號和其他請求范圍的值。
在 Go 服務器中,每個傳入請求都在其自己的 goroutine 中處理。請求處理程序通常會啟動其他 goroutine 來訪問后端,例如數據庫和 RPC 服務。處理請求的 goroutine 集通常需要訪問特定于請求的值,例如最終用戶的身份、授權令牌和請求的截止時間
然而,開放跟蹤框架用于分布式跟蹤。我們使用分布式跟蹤來分析監視應用程序。包袱是跨服務支持請求的元數據。
SERVICE A -> SERVICE B -> SERVICE C
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消