is to discover the underlying principles that govern systems behavior and use this knowledge to transform computing. Chetan Conikee Chief Data Officer • Founder, SeekVence • Data Scientist - Intuit • Founding Engineer - Business Signatures (Entrust), CashEdge (Fiserv), Smartpipes (Sophos) Irfan Ahmad Chief Technology Officer • VMware tech lead - DRS (Distributed Resource Scheduling) Team • Transmeta (microprocessors) Tuesday, October 1, 13
Secure Data Retention • NO data-loss guarantee • Scale out consumption process on demand • Query near-to-real-time • Query historical data on demand (replay) Tuesday, October 1, 13
Product • Launched Beta offering - license to “move fast and break things” • Techcrunch moment at VMworld 2012 • Exponential customer growth Tuesday, October 1, 13
Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
Store HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
S3-Object Store HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
AWS S3-Object Store HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
Generation-1 Object Storage AWS S3-Object Store HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL Tuesday, October 1, 13
Generation-1 Object Storage AWS S3-Object Store HTTP Play! Akka Cluster HTTP Play! Akka Cluster CloudPhysics Observer(s) HTTP Cluster (Message Router) HTTP Cluster (Message Processer) Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage In-Memory Cache with TTL 6 Tuesday, October 1, 13
3 Dispatch 6 6 Next (Repeat 1) 1 1 Enqueue HTTP Request HTTP Cluster Router Mailbox Dispatcher ThreadPool - Actor(s) 5 Complete 5 • Lightweight Objects with Universal Concurrency primitives • Message Passing Concurrency & no shared state • Supervisory Strategy to handle and recover from failures • Scale UP and Scale OUT on demand 4 Process 4 Tuesday, October 1, 13
3 Dispatch 6 6 Next (Repeat 1) 1 1 Enqueue HTTP Request HTTP Cluster Router Mailbox Dispatcher ThreadPool - Actor(s) 5 Complete 5 • Lightweight Objects with Universal Concurrency primitives • Message Passing Concurrency & no shared state • Supervisory Strategy to handle and recover from failures • Scale UP and Scale OUT on demand • You get a PERFECT FABRIC to construct a SCALE-OUT SaaS/PaaS CLOUD Service 4 Process 4 Tuesday, October 1, 13
production • Increased backlog of streamed messages into the Mailbox can overload an Actor’s memory footprint • Negatively Impact responsiveness leading to application crashes Tuesday, October 1, 13
master-worker pattern to distribute workload based on worker’s processing queue depth (deployed zookeeper for cluster co-ordination and service discovery) • Akka Cluster was early in development (http://doc.akka.io/docs/akka/snapshot/common/cluster.html#cluster) Tuesday, October 1, 13
system • Messages are grouped into topics • Producer (pushes to) Broker (pulls from) Consumer • Messages are retained for a configured interval of time • A topic can be further divided into partitions • Each partition is replicated across configurable number of brokers for fault tolerance (> 0.8x version) • Consumers are not contending with each other during message consumption Tuesday, October 1, 13
a partition on a topic on a broker either • uses round-robin fashion by default • (or) using a partition function • Send messages at or below the configured size • Choose between “fire-and-forget” delivery or request broker for acknowledgement on receiving message by setting “request.require.ack” Kafka Core Concepts - Producers Tuesday, October 1, 13
a sets of segment files on a broker (topic + partition) Kafka Core Concepts - Brokers Zero-copy transfer from files to socket - All delivery done through sendfile calls on mmap’d files - Avoid double buffering and GC overhead On-disk format of message: message-length : 4 bytes (value: 1 + 4 + n) “magic” value “ : 1 byte crc32 checksum : 4 bytes payload : n bytes Topic + Partition Replication at topic - partition level Tuesday, October 1, 13
jointly consume from a single topic • Each partition is consumed by exactly one consumer in a consumer group • Register with zookeeper, in order to track their offsets in each partition for each broker that they consume from • Consumers must correctly handle the same message multiple times • Possibility of out of order delivery and redelivery require idempotent, commutative consumers when dealing with systems of record Kafka Core Concepts - Consumers Tuesday, October 1, 13
- Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Object Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
HTTP Cluster (Producers) Object Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Generation-2 HTTP Cluster (Producers) Object Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Data Collection/Processing Pipeline Generation-2 HTTP Cluster (Producers) Object Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage Tuesday, October 1, 13
Data Collection/Processing Pipeline Generation-2 HTTP Cluster (Producers) Object Storage Kafka - Broker T1 T2 T3 HTTP Cluster (Consumers) AWS S3-Object Store HTTP Play! Akka Cluster Auto Scaling Group CloudPhysics Observer(s) HTTP Play! Akka Cluster Auto Scaling Group Event Metrics Store Configuration Store Performance Metrics Store Time Series DB Cluster Sharded JSON Store Time Series DB Cluster Storage 4 Pull HDFS Spark Cluster Compute Collective Intelligence Kafka HDFS Consumer ALPHA Storage Tuesday, October 1, 13
writes • Increases degree of parallelism for consumers • Tune memory of consumer based on (number of threads in consumer group) * (queuedchunks.max) * (fetch.size) • Increase Heap size • Reduce consumer thread count • Lower fetch size or max queue size • Overheads • More open file handles • More offsets to be check-pointed increasing load on zookeeper ensemble Increased Partition Configuration (for high volume topics) Tuesday, October 1, 13
Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Metrics Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Performance Metrics Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Configuration Store Performance Metrics Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Metrics Store Configuration Store Performance Metrics Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Tuesday, October 1, 13
Metrics Store Configuration Store Performance Metrics Store Query Engine Play/Akka based Web Application HTTP Cluster (Producers) Spray / Akka Cluster Time Series DB Cluster Sharded JSON Store ‘ENSO’ Data Analysis Pipeline Time Series DB Cluster Storage Authorization / Access Control Meta Data Time Machine Query Planner Aggregation Off-Heap Cache A L E R T S Push Notifications Tuesday, October 1, 13
Layer • An type-safe Scala API/DSL library (domain specific language) that auto-generates MongoDB and Cassandra query operators • Allows querying complex deeply nested JSON streams in near real time • Supports grouping, aggregation and filtering • Supports on-demand querying of historical data • Supports resource-management query priorities Tuesday, October 1, 13
scaling group • Compute nodes are added/deleted based on throughput characteristics - e.g. lag in consumption from Kafka brokers. • We are currently leveraging AnsibleWorks IT Orchestration Engine IT/DevOps Orchestration Tuesday, October 1, 13