distributed tracing
zipkin
cassandra's tracing
zipkin & cassandra
Apache Cassandra
data platform de jure
microservices, base, and lambda architectures
the missing piece for many is tracing and profiling difficult to reproduce problems
an implementation of Google's Dapper paper
git clone git@github.com:openzipkin/zipkin-java.git
cd zipkin-java
# it's in the readme
STORAGE_TYPE=cassandra ./mvnw -pl zipkin-server spring-boot:run
( docker: https://github.com/openzipkin/docker-zipkin-java )
CS -->
--> SR
<-- SS
CR <--
Language | Library | Framework |
---|---|---|
Python | pyramid_zipkin | Pyramid Http (B3) |
Java | brave | Jersey, RestEASY, JAXRS2, Apache HttpClient, Mysql |
Java | Spring Cloud Sleuth | Spring, Spring Cloud (e.g. Stream, Netflix) |
Scala | finagle-zipkin | Finagle |
Ruby | zipkin-tracer | Rack |
C# | ZipkinTracerModule | OWIN, HttpHandler |
Go | go-zipkin | x/net Context |
Go | Go kit | Go kit |
Scala | akka-tracing | Akka, Spray, Play |
Java | Dropwizard Zipkin | Dropwizard |
( Brave-3.7 – https://github.com/openzipkin/brave )
CO-ORDINATOR NODE REPLICA NODE
-->
beginSession(..)
trace(..)
trace(..)
--> initialiseMessage(..)
trace(..)
trace(..)
<--
trace(..)
endSession(..)
<--
Cassandra-3.4
git clone git@github.com:thelastpickle/cassandra-zipkin-tracing
cd cassandra-zipkin-tracing
# it's in the readme
mvn install
cp target/cassandra-zipkin-tracing-*.jar $CASSANDRA_HOME/lib/
cp lib/* $CASSANDRA_HOME/lib/
JVM_OPTS= \
"-Dcassandra.custom_tracing_class=com.thelastpickle.cassandra.tracing.ZipkinTracing" \
bin/cassandra
CO-ORDINATOR NODE REPLICA NODE
-->
beginSession(..)
trace(..)
trace(..)
(zipkin headers) --> initialiseMessage(..)
trace(..)
trace(..)
<--
trace(..)
endSession(..)
<--
bin/cassandra
-Dcassandra.custom_tracing_class=..ZipkinTracing
-Dcassandra.custom_query_handler_class=..CustomPayloadMirroringQueryHandler