我想了解Go中的上下文和OpenTracing中的行李项之间的区别。具体而言,它们携带数据的差异。
据我所知,两者都可以携带键值对给他们的后代(子上下文/子跨度)。
在Go的标准库中,我可以使用:
func context.WithValue(parent Context, key, val interface{}) Context在OpenTracing中,我可以使用:
func SetBaggageItem(restrictedKey, value string) Span显然,存在一些类型限制(接口{}和字符串)。还有什么我应该知道的吗?
在什么情况下,我应该选择携带一些键值对?
发布于 2021-09-01 05:54:24
这两者都有不同的用例。
request-scoped用于定义上下文类型,其中包含跨API边界的截止日期、取消信号和其他GoContext值。
在Go服务器中,每个传入请求都由自己的
处理。请求处理程序通常启动额外的goroutines来访问后端,如数据库和RPC服务。处理请求的goroutines集合通常需要访问特定于请求的值,例如最终用户的标识、授权令牌和请求的截止日期。
然而,OpenTracing框架用于分布式跟踪。我们使用分布式跟踪来监视应用程序。行李是元数据小猪,它支持跨服务的请求。
SERVICE A -> SERVICE B -> SERVICE Chttps://stackoverflow.com/questions/69006951
复制相似问题