会计服务

这个服务计算销售产品的总金额。这只是模拟的,接收到的订单会被打印出来。

会计服务

追踪

初始化追踪

OpenTelemetry SDK 是通过 initTracerProvider 函数从 main 函数进行初始化的。

func initTracerProvider() (*sdktrace.TracerProvider, error) { ctx := context.Background() exporter, err := otlptracegrpc.New(ctx) if err != nil { return nil, err } tp := sdktrace.NewTracerProvider( sdktrace.WithBatcher(exporter), sdktrace.WithResource(initResource()), ) otel.SetTracerProvider(tp) otel.SetTextMapPropagator(propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{})) return tp, nil }

当服务关闭时,应该调用 TracerProvider.Shutdown() 方法,确保所有 span 都被导出。这个服务在 main 函数中使用延迟函数来调用这个方法。

tp, err := initTracerProvider() if err != nil { log.Fatal(err) } defer func() { if err := tp.Shutdown(context.Background()); err != nil { log.Printf("关闭追踪提供程序时出错: %v", err) } }()

添加 Kafka ( Sarama ) 自动追踪

这个服务将通过 Kafka 主题接收 Checkout 服务的处理结果。为了对 Kafka 客户端进行追踪,开发者实现的 ConsumerHandler 需要被包装起来。

handler := groupHandler{} // 实现了 sarama.ConsumerGroupHandler wrappedHandler := otelsarama.WrapConsumerGroupHandler(&handler)
最后修改 December 10, 2023: translate (a4350d6e)