Google Dapper

video locked
Enroll to watch

12 mins

Chapters
About
Discussion0
Notes
Be the first to start a conversation!

Dapper is the request tracing system at Google: it records the path one request takes from the client to the server and every data store, and how much time it took.

A tracing system that slows production is not adopted. Dapper has to be low latency and used by all services, so it is added to the generic client that makes every remote procedure call.

  1. A span. Each remote procedure call is a span with an ID, a parent ID and an array of events.
  2. A trace. All the spans of one request carry the same trace ID.
  3. Collection. Clients write log files to local storage. A background process buffers them. Collectors pull them, convert them into spans and store them in Bigtable, which has an index on the trace ID. Most requests reach Bigtable within 15 seconds.
  4. Sampling. IO calls are the bulk of the latency, so production samples one request in a thousand and twenty four.
  5. Adaptive sampling. A service with little volume asks for at least 10 samples per second.