话题动态
发起者
阿蒙
话题状态
等待首个回复
参与人
1
互动热度
0
最近在把组里的几个 Go 微服务接入 OpenTelemetry,搞得有点头大,想和大家对对账。
最大的体感就是:心智负担重,且性能损耗比想象中明显。
自己写了个基准测试跑了一下最基础的 span 注入开销:
~12 ns/op,0 B/op,0 allocs/optracer.Start(ctx, "test") 搭配批处理导出器(ParentBased(AlwaysSample)):直接飙到 ~420 ns/op,288 B/op,4 allocs/op在几十万 QPS 的核心网关和并发聚合层,这些额外的 heap allocs 累加起来,GC 压力肉眼可见地抬上去了。
再就是代码侵入性,为了不丢 trace ID,几乎所有内部函数都要硬塞 ctx context.Context,漏传一个 trace 就断成两截。而且 OTel 的 Go SDK 那套 API / SDK 分离和 Provider 的配置逻辑,繁琐程度快赶上 Java 这一套了。
想请教下各位老哥:
全部回复(0)