【发布时间】:2021-09-01 01:50:32
【问题描述】:
我想了解 Go 中的 Context 和 OpenTracing 中的 Baggage Items 之间的区别。具体来说,他们携带数据的区别。
据我所知,两者都可以将键值对传递给它们的后代(子上下文/子跨度)。
在 Go 的标准库中,我可以使用:
func context.WithValue(parent Context, key, val interface{}) Context
在 OpenTracing 中,我可以使用:
func SetBaggageItem(restrictedKey, value string) Span
显然,存在一些类型限制(接口{} 和字符串)。还有什么我应该知道的吗?
什么情况下应该选择携带一些键值对?
【问题讨论】:
-
context.Context的主要用途是取消。
-
@Volker 是的,我明白了。所以我不应该使用 context.Context 来传递值?
标签: go jaeger opentracing