go 链路追踪_Go-Zero 是如何追踪你的请求链路?

本文介绍了Go-Zero框架如何实现链路追踪,通过在HTTP和RPC中集成中间件,利用spanContext和span记录请求的上下文和操作信息。每个span包含了开始时间、服务名和操作名等,通过spanID追踪调用链路。在请求传递过程中,通过复制含有span信息的context,确保链路信息的传递。Go-Zero提供了基础结构,开发者可以进一步封装并接入Jaeger、Zipkin等链路追踪系统。
摘要由CSDN通过智能技术生成

“ go-zero 是一个集成了各种工程实践的 web 和 rpc 框架。通过弹性设计保障了大并发服务端的稳定性,经受了充分的实战检验。”

序言

微服务架构中,调用链可能很漫长,从 http 到 rpc ,又从 rpc 到 http 。而开发者想了解每个环节的调用情况及性能,最佳方案就是 全链路跟踪。

追踪的方法就是在一个请求开始时生成一个自己的 spanID ,随着整个请求链路传下去。我们则通过这个 spanID 查看整个链路的情况和性能问题。

下面来看看 go-zero 的链路实现。

代码结构

spancontext:保存链路的上下文信息「traceid,spanid,或者是其他想要传递的内容」

span:链路中的一个操作,存储时间和某些信息

propagator: trace 传播下游的操作「抽取,注入」

noop:实现了空的 tracer 实现

概念

SpanContext

在介绍 span 之前,先引入 context 。SpanContext 保存了分布式追踪的上下文信息,包括 Trace id,Span id 以及其它需要传递到下游的内容。OpenTracing 的实现需要将 SpanContext 通过某种协议 进行传递,以将不同进程中的 Span 关联到同一个 Trace 上。对于 HTTP 请求来说,SpanContext 一般是采用 HTTP header 进行传递的。

下面是 go-zero 默认实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值