opentelemetry.io/content/en/docs/concepts/context-propagation.md

45 lines
1.8 KiB
Markdown

---
title: Context Propagation
weight: 10
description: Learn about the concept that enables Distributed Tracing.
---
With Context Propagation, [Signals](/docs/concepts/signals) can be correlated
with each other, regardless of where they are generated. Although not limited to
tracing, it is what allows [traces](/docs/concepts/signals/traces) to build
causal information about a system across services that are arbitrarily
distributed across process and network boundaries.
We define Context Propagation by two sub-concepts: Context and Propagation.
## Context
A **Context** is an object that contains the information for the sending and
receiving service (or
[execution unit](/docs/specs/otel/glossary/#execution-unit)) to correlate one
signal with another.
For example, if Service A calls Service B, then a span from Service A whose ID
is in context will be used as the parent span for the next span created in
Service B. The trace ID that is in context will be used for the next span
created in Service B as well, which signifies that the span is part of the same
trace as the span from Service A.
## Propagation
**Propagation** is the mechanism that moves context between services and
processes. It serializes or deserializes the context object and provides the
relevant information to be propagated from one service to another. Propagation
is usually handled by instrumentation libraries and is transparent to the user,
but in the event that you need to manually propagate context, you can use
Propagation APIs.
OpenTelemetry maintains several official propagators. The default propagator is
using the headers specified by the
[W3C TraceContext](https://www.w3.org/TR/trace-context/) specification.
## Specification
To learn more about Context Propagation, see the
[Context specification](/docs/specs/otel/context/).