This content originally appeared on DEV Community and was authored by Andrzej Korcz
1. W3C Trace Context (standard propagacji śledzenia przyjęty przez W3C):
Ten standard został wprowadzony, aby zapewnić jednolity format propagacji kontekstu śledzenia między różnymi systemami, serwisami i narzędziami. Działa niezależnie od implementacji i ma na celu ujednolicenie formatu w różnych środowiskach. W3C Trace Context składa się z dwóch kluczowych nagłówków:
-
traceparent
: To główny nagłówek w W3C Trace Context. Zawiera najważniejsze informacje o kontekście śledzenia:-
Wersja: Numer wersji standardu (obecnie
00
). - Trace ID: Globalny unikalny identyfikator całego śledzenia (np. cała ścieżka od producenta do konsumenta).
- Parent ID (Span ID): Identyfikator spana reprezentującego bezpośredniego rodzica w śledzeniu.
- Flagi: Informacje na temat próbkowania (czy dany span ma być śledzony i przesyłany do systemu zbierającego).
-
Wersja: Numer wersji standardu (obecnie
Przykład nagłówka traceparent
:
traceparent: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01
Gdzie:
-
00
to wersja. -
4bf92f3577b34da6a3ce929d0e0e4736
toTrace ID
. -
00f067aa0ba902b7
toParent ID
(Span ID). -
01
to flagi (bit flagi próbkowania, gdzie01
oznacza, że span ma być śledzony).-
tracestate
: To dodatkowy nagłówek używany w W3C Trace Context. Zawiera bardziej zaawansowane informacje, które mogą być specyficzne dla dostawcy systemu śledzenia (np. dodatkowe dane potrzebne narzędziu śledzącemu). Pozwala na propagowanie dodatkowych metadanych związanych z śledzeniem, np. priorytety lub informacje specyficzne dla narzędzia (np. Jaeger, Zipkin).
-
Przykład:
tracestate: congo=t61rcWkgMzE
2. B3 Propagation (standard używany przez Zipkin):
B3 to inny, popularny standard propagacji kontekstu śledzenia, stosowany głównie w systemie Zipkin, ale obsługiwany także przez inne tracery, takie jak Jaeger. B3 działa w sposób nieco prostszy niż W3C Trace Context i składa się z kilku nagłówków:
-
x-B3-TraceId
: To globalny identyfikator śledzenia (trace). Odpowiada za identyfikację całego cyklu śledzenia, podobnie jakTrace ID
w W3C. Ten identyfikator jest unikalny dla całego śledzenia i pozwala połączyć wszystkie spany w jeden trace.
Przykład:
x-B3-TraceId: 4bf92f3577b34da6a3ce929d0e0e4736
-
x-B3-ParentSpanId
: Identyfikator rodzica aktualnego spana. Ten nagłówek zawiera ID spana, który bezpośrednio poprzedza obecny span. Jest on podobny doParent ID
w W3C Trace Context.
Przykład:
x-B3-ParentSpanId: 00f067aa0ba902b7
-
x-B3-SpanId
: To identyfikator spana w ramach śledzenia. Każdy span w trace ma swój unikalny identyfikator, który odróżnia go od innych spanów w danym trace. Jest podobny doParent ID
w W3C Trace Context, ale dotyczy konkretnego spana, a nie rodzica.
Przykład:
x-B3-SpanId: 00f067aa0ba902b7
-
x-B3-Sampled
: To flaga określająca, czy dany span (i cały trace) powinien być próbkowany i wysyłany do systemu zbierającego. Możliwe wartości to:-
1
oznacza, że span ma być śledzony. -
0
oznacza, że span nie będzie śledzony.
-
Przykład:
x-B3-Sampled: 1
Podział nagłówków:
-
W3C Trace Context:
traceparent
tracestate
-
B3 Propagation (Zipkin):
x-B3-TraceId
x-B3-ParentSpanId
x-B3-SpanId
x-B3-Sampled
Jakie są różnice między tymi standardami?
W3C Trace Context jest bardziej nowoczesnym, ujednoliconym standardem wspieranym przez organizację W3C, co oznacza, że jest neutralny w stosunku do narzędzi do śledzenia (np. Jaeger, Zipkin). Umożliwia bardziej elastyczną propagację informacji o śledzeniu, w tym dostarczanie zaawansowanych metadanych poprzez
tracestate
.B3 jest starszym standardem propagacji, który został wprowadzony przez Zipkin. Jest prostszy i używa osobnych nagłówków dla każdego elementu kontekstu śledzenia (trace ID, span ID itd.), zamiast jednej złożonej struktury, jak w W3C Trace Context.
Co to oznacza dla Twojej aplikacji?
- Twoja aplikacja aktualnie obsługuje zarówno W3C Trace Context (
traceparent
,tracestate
), jak i B3 (x-B3-*
). - W wielu przypadkach, systemy takie jak Jaeger, Zipkin, lub OpenTelemetry potrafią obsługiwać oba standardy, ale powinno się wybrać jeden spójny standard propagacji. Korzystanie z obu może wprowadzać zamieszanie i niespójności, zwłaszcza gdy różne systemy interpretują nagłówki inaczej.
- Jeśli chcesz mieć pełną kontrolę nad śledzeniem, najlepiej jest zdecydować się na jeden standard (najczęściej rekomendowany jest W3C Trace Context, ponieważ jest to standard uznawany przez W3C i ma szersze wsparcie).
Jeśli twój system korzysta z różnych narzędzi do śledzenia (np. Jaeger, Zipkin) i musisz wspierać oba standardy, konieczne może być skonfigurowanie odpowiednich integracji lub middleware, które będą konwertować nagłówki między tymi standardami.
This content originally appeared on DEV Community and was authored by Andrzej Korcz
Andrzej Korcz | Sciencx (2024-10-04T13:17:32+00:00) Dwa popularne standardy propagacji śledzenia komunikatów.. Retrieved from https://www.scien.cx/2024/10/04/dwa-popularne-standardy-propagacji-sledzenia-komunikatow/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.