每日一博 | Go-Zero 是如何追踪你的请求链路?
“ 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 通过某种协议 进...