Add comparison with Zipkin
This commit is contained in:
parent
3dbe0b8dd9
commit
e3e1bdcfb5
1 changed files with 29 additions and 0 deletions
|
@ -123,3 +123,32 @@ out there.
|
||||||
|
|
||||||
Jaeger is a battle tested distributing system that takes advantage of OpenTracing and advances the state
|
Jaeger is a battle tested distributing system that takes advantage of OpenTracing and advances the state
|
||||||
of open source distributed tracing.
|
of open source distributed tracing.
|
||||||
|
|
||||||
|
*Comparison with Zipkin*
|
||||||
|
|
||||||
|
Zipkin is another popular open source distributed tracing system originally
|
||||||
|
[released by Twitter in 2012](https://blog.twitter.com/engineering/en_us/a/2012/distributed-systems-tracing-with-zipkin.html).
|
||||||
|
Jaeger and Zipkin provide roughly similar functionality today; in fact the earlier versions of Jaeger relied on some of Zipkin
|
||||||
|
components as explained in the [Uber Eng blog post] (https://eng.uber.com/distributed-tracing/). Listed below are some differences
|
||||||
|
between Jaeger and Zipkin, along with how they can interoperate:
|
||||||
|
|
||||||
|
* *OpenTracing Instrumentation Libraries*. All Jaeger instrumentation libraries are built to support the OpenTracing standard.
|
||||||
|
Zipkin ecosystem has a couple of OpenTracing compatible libraries, but most of them do not support it, instead requiring the
|
||||||
|
applications to use bespoke APIs and Zipkin-only semantic annotations.
|
||||||
|
* *OpenTracing Compatible Backend and UI*. Jaeger is built with OpenTracing standard in mind from the ground up, including the
|
||||||
|
backend, the data models, and the UI. Zipkin backend does not support all of the features of OpenTracing, specifically
|
||||||
|
structured k-v span logs and multi-parent spans / DAGs (which are possible in OpenTracing via span references).
|
||||||
|
* *Instrumentation Libraries Maintenance*. Jaeger instrumentation libraries are officially part of the project and undergo
|
||||||
|
continuous integration testing against each other and against the backend. Zipkin instrumentation libraries are not officially
|
||||||
|
part of the project, often not even located in the openzipkin Github org, and rarely integration-tested against each other.
|
||||||
|
On the other hand, Zipkin libraries exist in more languages. Today Jaeger supports Go, Java, Python, and Javascript,
|
||||||
|
with Ruby and C++ implementation on the way.
|
||||||
|
* *Distributed Context Propagation*. General purpose context propagation is extremely useful in microservices based systems.
|
||||||
|
In addition to tracing it can support many other applications, including resource attribution / chargebacks, capacity planning,
|
||||||
|
chaos engineering, security. All Jaeger libraries support context propagation via OpenTracing feature called “baggage”.
|
||||||
|
Most Zipkin libraries do not support propagation of custom context metadata.
|
||||||
|
* *Storage Backends*. Zipkin supports more storage backends since it has been around a lot longer. Jaeger currently supports
|
||||||
|
Cassandra and Elasticsearch as production quality storage backends.
|
||||||
|
* *Interoperability*. Jaeger backend can be used as a replacement for Zipkin backend in organizations that already invested
|
||||||
|
in Zipkin instrumentation. Jaeger instrumentation libraries can also be configured to interoperate with Zipkin libraries
|
||||||
|
via Zipkin wire format (B3 headers), that allows new services to be instrumented with OpenTracing.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue