Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Membina Span daripada Trace ID dalam Konteks Bukan HTTP?

Bagaimana untuk Membina Span daripada Trace ID dalam Konteks Bukan HTTP?

Susan Sarandon
Lepaskan: 2024-10-28 03:06:31
asal
954 orang telah melayarinya

How to Construct Spans from Trace IDs in Non-HTTP Contexts?

Membina Span daripada Trace ID dalam Konteks Bukan HTTP

Apabila menyebarkan surih menggunakan pengepala dalam konteks bukan HTTP, anda perlu membina secara manual span menggunakan ID jejak dan span yang disediakan. Begini cara untuk mencapainya:

Sisi Pelanggan:

Di dalam fungsi yang mengendalikan mesej masuk dengan pengepala jejak dan rentang:

  1. Ekstrak jejak dan ID span daripada pengepala.
  2. Gunakan jejak.TraceIDFromHex() dan trace.SpanIDFromHex() berfungsi untuk menukar ID rentetan kepada jenis yang sesuai.
  3. Membina jejak.SpanContext oleh menyediakan ID surih, ID span dan bendera surih yang diekstrak.
  4. Perkaya konteks semasa dengan konteks span yang baru dibuat menggunakan konteks.Background(), diikuti oleh trace.ContextWithSpanContext().
  5. Mulakan rentang baharu menggunakan konteks yang diperkaya dengan nama yang sesuai.

Contoh:

<code class="go">func handleIncomingMessage(request NewRequest) {
    traceID, err := trace.TraceIDFromHex(request.TraceID)
    if err != nil {
        fmt.Println("error: ", err)
        return
    }

    spanID, err := trace.SpanIDFromHex(request.SpanID)
    if err != nil {
        fmt.Println("error: ", err)
        return
    }

    spanContext := trace.NewSpanContext(trace.SpanContextConfig{
        TraceID: traceID,
        SpanID:  spanID,
        TraceFlags:   01,
        Remote:  false,
    })

    ctx := context.Background()
    ctx = trace.ContextWithSpanContext(ctx, spanContext)

    _, span := otel.Tracer("requestInLoop").Start(ctx, "requestInLoopSpan")
    span.AddEvent("processing....")
}</code>
Salin selepas log masuk

Dalam contoh ini, NewRequest ialah jenis tersuai yang mengandungi ID jejak dan rentang. Fungsi handleIncomingMessage mengambil struct NewRequest sebagai input dan mencipta span dengan jejak dan ID span yang disediakan.

Nota: Pastikan span baharu tidak dibuat jika medan IsRemote span yang disediakan konteks ditetapkan kepada benar, kerana ini menunjukkan bahawa rentang telah dieksport dari jauh.

Atas ialah kandungan terperinci Bagaimana untuk Membina Span daripada Trace ID dalam Konteks Bukan HTTP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan