首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Go上下文值和OpenTracing行李项之间有什么区别?

Go上下文值和OpenTracing行李项之间有什么区别?
EN

Stack Overflow用户
提问于 2021-09-01 01:50:32
回答 1查看 248关注 0票数 0

我想了解Go中的上下文和OpenTracing中的行李项之间的区别。具体而言,它们携带数据的差异。

据我所知,两者都可以携带键值对给他们的后代(子上下文/子跨度)。

在Go的标准库中,我可以使用:

代码语言:javascript
复制
func context.WithValue(parent Context, key, val interface{}) Context

在OpenTracing中,我可以使用:

代码语言:javascript
复制
func SetBaggageItem(restrictedKey, value string) Span

显然,存在一些类型限制(接口{}和字符串)。还有什么我应该知道的吗?

在什么情况下,我应该选择携带一些键值对?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-01 05:54:24

这两者都有不同的用例。

request-scoped用于定义上下文类型,其中包含跨API边界的截止日期、取消信号和其他GoContext值。

在Go服务器中,每个传入请求都由自己的

处理。请求处理程序通常启动额外的goroutines来访问后端,如数据库和RPC服务。处理请求的goroutines集合通常需要访问特定于请求的值,例如最终用户的标识、授权令牌和请求的截止日期。

然而,OpenTracing框架用于分布式跟踪。我们使用分布式跟踪来监视应用程序。行李是元数据小猪,它支持跨服务的请求。

代码语言:javascript
复制
SERVICE A -> SERVICE B -> SERVICE C
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69006951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档