登录
首页 >  Golang >  Go问答

Go 上下文值与 OpenTracing Baggage Items 的差别在哪里?

来源:stackoverflow

时间:2024-02-19 13:36:23 452浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《Go 上下文值与 OpenTracing Baggage Items 的差别在哪里?》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我想了解 go 中的 context 和 opentracing 中的 baggage items 之间的区别。具体来说,它们在携带数据方面的差异。

据我所知,两者都可以将键值对传递给其后代(子上下文/子跨度)。

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

func context.withvalue(parent context, key, val interface{}) context

在 opentracing 中,我可以使用:

func SetBaggageItem(restrictedKey, value string) Span

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

什么情况下应该选择哪个来携带一些键值对?


正确答案


这两者都有不同的用例。

gocontext 用于定义上下文类型,该类型携带跨 api 边界的截止日期、取消信号和其他请求范围值。

在 go 服务器中,每个传入请求都在其自己的 goroutine 中处理。 请求处理程序通常会启动额外的 goroutine 来访问后端 例如数据库和rpc服务。一组 goroutine 工作在 请求通常需要访问特定于请求的值,例如 最终用户的身份、授权令牌和请求的 截止日期

而 opentracing 框架用于分布式跟踪。我们使用分布式跟踪来分析监控应用程序。行李是元数据支持跨服务的请求

SERVICE A -> SERVICE B -> SERVICE C

好了,本文到此结束,带大家了解了《Go 上下文值与 OpenTracing Baggage Items 的差别在哪里?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>