gpt4 book ai didi

go - 使用 Jaeger 在分布式应用程序中跟踪 Kafka 总线

转载 作者:数据小太阳 更新时间:2023-10-29 03:19:02 29 4
gpt4 key购买 nike

我分发了包含多个 Go 服务的应用程序。其中一些使用 Kafka 作为数据总线。我能够使用 Jaeger 的 opentracing 追踪服务之间的调用。我在图表上绘制 Kafka 跨度时遇到问题,它们显示为间隙。

这是我能做的。初始跨度由 gRPC 中间件创建。生产方:

...    
kafkaMsg := kafka.Message{Key: []byte(key), Value: msgBytes}
headers:=make(map[string]string)
if span := opentracing.SpanFromContext(ctx); span != nil {
opentracing.GlobalTracer().Inject(
span.Context(),
opentracing.TextMap,
opentracing.TextMapCarrier(headers))
}
for headerKey, headerValue:=range headers{
msg.Headers = append(msg.Headers, kafka.Header{
Key: headerKey,
Value: []byte(headerValue),
})
}
// Write message to Kafka
...

消费者端:

...
// read headers from Kafka message
headers := make(map[string]string)
for _, header := range kafkaMessage.Headers{
headers[header.Key]=string(header.Value)
}
spanContext, _ := opentracing.GlobalTracer().Extract(opentracing.TextMap, opentracing.TextMapCarrier(headers))
span := opentracing.StartSpan(
"Consumer",
opentracing.FollowsFrom(spanContext))
defer span.Finish()
...

当消息在 Kafka 中时,我应该如何修改它以在图形上绘制跨度?

最佳答案

所以,回答我自己的问题。 Jaeger 不支持跨系统跨度。每个子系统负责整个系统中自己的跨度。作为引用,请查看此答案 https://github.com/opentracing/specification/issues/143

关于go - 使用 Jaeger 在分布式应用程序中跟踪 Kafka 总线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56847558/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com