openzipkin / zipkin

Zipkin is a distributed tracing system
https://zipkin.io/
Apache License 2.0
16.99k stars 3.09k forks source link

Track usability problems when RPC are split across span IDs #1480

Open codefromthecrypt opened 7 years ago

codefromthecrypt commented 7 years ago

Some are intentionally or accidentally splitting RPCs across different span IDs. For example, they might intentionally fork a span ID when receiving B3 headers. This could also happen when an intermediary forks a new span, but fails to report it to Zipkin. In either case, the client ends up as a parent span as opposed to the same span as the server.

The goal of this issue is to support the case where a client span is a parent of the server span in the existing model. This is a precondition of any work that assumes single-host (like #939), or at least a warning of what glitches will occur until single-host RPC spans are supported.

Here are the main feature areas to explore:

transparent proxies should be unimpacted as they just sent headers across without changing them or reporting anything to zipkin anyway.

codefromthecrypt commented 7 years ago

cc @openzipkin/instrumentation-owners @fedj @openzipkin/core @cburroughs @rogeralsing

codefromthecrypt commented 7 years ago

cc @reta

codefromthecrypt commented 7 years ago

one can model single producer multiple consumer messages with a parent-child relationship similar to single-host spans in RPC. For example, by using X-B3-SpanId as the parent id of the consumer span, many consumers will end up as different spans. So, this pattern for single-host spans also applies to SPMC

https://github.com/openzipkin/b3-propagation#why-is-parentspanid-propagated

codefromthecrypt commented 7 years ago

added https://github.com/openzipkin/zipkin/pull/1656 to fix dependency linking. Noticed this when implementing the simple json thing

codefromthecrypt commented 5 years ago

please take a look at https://github.com/openzipkin/zipkin/pull/2302 and let me know if this is still desirable! I think this is the last step cc @ivantopo