25. We Ended Up With This
Ingestion API
Ingestion
Transform
Query API
Metadata + Cache
Rollup Scheduler
State Management
Java Ingestion
Library
Java Rollup
Library
Database
(Cassandra)
Java Query
Library
26. We Ended Up With This
Ingestion API
Ingestion
Transform
Query API
Metadata + Cache
Rollup Scheduler
State Management
Java Ingestion
Library
Java Rollup
Library
Database
(Cassandra)
Java Query
Library
62. Rollup Schedule Service
Gives us a way of consistently
addressing and bucketing time ranges
As time increases, so does the slot it
hashes to (until it wraps to zero)
63. Rollup Schedule Service
When do we roll up?
Whenever an active slot
a) has not been updated in N seconds
b) is M seconds old
66. Ingestion
Processors
Every metric is not built the same way
They come from different places
Processors allow you to make them consistent
Can be synchronous or asynchronous
73. How Does It Scale?
Ingestion scales linearly
Add ingestion nodes until
Cassandra is the bottleneck
74. How Does It Scale?
Two ingestors per DC
Only one per DC is active
Double ingest
75. How Does It Scale?
Rollups scale [almost] linearly by
spreading out shard ownership
Shards are currently pegged at
128
Ok to have multiple nodes own a
shard
Zookeeper is a soft-dependency
77. Future Stuff
Richer metadata API
Example: tag metrics and then use
those tags as a query facet
Will require an index
Experimenting with ElasticSearch
Home-rolled bitmap indexes
79. Future Stuff
Deep statsd and graphite
integration (active work)
Statsd is hard because counts get
reset after a flush
80. Future Stuff
Graphite is just involved
(new rollup types)
Whisper DB interface
Then hack carbon to support it
Already pluggable, just needs
integration