SlideShare uma empresa Scribd logo
1 de 103
Mantis: Netflix's Event 
Stream Processing System 
Justin Becker Danny Yuan 
10/26/2014
Watch the video with slide 
synchronization on InfoQ.com! 
http://www.infoq.com/presentations 
/mantis 
InfoQ.com: News & Community Site 
• 750,000 unique visitors/month 
• Published in 4 languages (English, Chinese, Japanese and Brazilian 
Portuguese) 
• Post content from our QCon conferences 
• News 15-20 / week 
• Articles 3-4 / week 
• Presentations (videos) 12-15 / week 
• Interviews 2-3 / week 
• Books 1 / month
Presented at QCon San Francisco 
www.qconsf.com 
Purpose of QCon 
- to empower software development by facilitating the spread of 
knowledge and innovation 
Strategy 
- practitioner-driven conference designed for YOU: influencers of 
change and innovation in your teams 
- speakers and topics driving the evolution and innovation 
- connecting and catalyzing the influencers and innovators 
Highlights 
- attended by more than 12,000 delegates since 2007 
- held in 9 cities worldwide
Motivation
Traditional TV just works
Netflix wants Internet TV to work just as well
Especially when things aren’t working
Tracking “big signals” is not 
enough
Need to track all kinds of permutations
Detect quickly, to resolve ASAP
Cheaper than product services
Here comes the problem
12 ~ 20 million metrics updates per 
second
750 billion metrics updates per day
4 ~ 18 Million App Events Per Second 
> 300 Billion Events Per Day
They Solve Specific Problems
They Require Lots of Domain Knowledge
A System to Rule Them All
Mantis: A Stream Processing System
3
1. Versatile User Demands
Asynchronous Computation Everywhere
3. Same Source, Multiple Consumers
We want Internet TV to just work
One problem we need to solve, 
detect movies that are failing?
Do it fast → limit impact, fix early 
Do it at scale → for all permutations 
Do it cheap → cost detect <<< serve
Work through the details for how 
to solve this problem in Mantis
Goal is to highlight unique and 
interesting design features
… begin with batch approach, 
the non-Mantis approach 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
First problem, each run requires 
reads + writes to data store per run 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
For Mantis don’t want to pay that 
cost: for latency or storage 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
Next problem, “pull” model great for 
batch processing, bit awkward for 
stream processing 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
By definition, batch processing 
requires batches. How do I chunk 
my data? Or, how often do I run? 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
For Mantis, prefer “push” model, 
natural approach to data-in-motion 
processing 
Batch algorithm, runs every N minutes 
for(play in playAttempts()){ 
Stats movieStats = getStats(play.movieId); 
updateStats(movieStats, play); 
if (movieStats.failRatio > THRESHOLD){ 
alert(movieId, failRatio, timestamp); 
} 
}
For our “push” API we decided 
to use Reactive Extensions (Rx)
Two reasons for choosing Rx: 
theoretical, practical 
1. Observable is a natural abstraction for 
stream processing, Observable = stream 
2. Rx already leveraged throughout the 
company
So, what is an Observable? 
A sequence of events, aka a stream 
Observable<String> o = 
Observable.just(“hello”, 
“qcon”, “SF”); 
o.subscribe(x->{println x;})
What can I do with an Observable? 
Apply operators → New observable 
Subscribe → Observer of data 
Operators, familiar lambda functions 
map(), flatMap(), scan(), ...
What is the connection with Mantis? 
In Mantis, a job (code-to-run) is the 
collection of operators applied to a 
sourced observable where the 
output is sinked to observers
Think of a “source” observable as 
the input to a job. 
Think of a “sink” observer as the 
output of the job.
Let’s refactor previous problem 
using Mantis API terminology 
Source: Play attempts 
Operators: Detection logic 
Sink: Alerting service
Sounds OK, but how will this scale? 
For pull model luxury of requesting 
data at specified rates/time 
Analogous to drinking 
from a straw
In contrast, push is the firehose 
No explicit control to limit the 
flow of data
In Mantis, we solve this problem 
by scaling horizontally
Horizontal scale is accomplished 
by arranging operators into 
logical “stages”, explicitly by job 
writer or implicitly with fancy 
tooling (future work)
A stage is a boundary between 
computations. The boundary 
may be a network boundary, 
process boundary, etc.
So, to scale, Mantis job is really, 
Source → input observable 
Stage(s) → operators 
Sink → output observer
Let’s refactor previous problem to 
follow the Mantis job API structure 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // detection logic }) 
.sink(Alerting.email())
We need to provide a computation 
boundary to scale horizontally 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // detection logic }) 
.sink(Alerting.email())
For our problem, scale is a function 
of the number of movies tracking 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // detection logic }) 
.sink(Alerting.email())
Lets create two stages, one producing 
groups of movies, other to run detection 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // groupBy movieId }) 
.stage({ // detection logic }) 
.sink(Alerting.email())
OK, computation logic is split, how is the 
code scheduled to resources for execution? 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // groupBy movieId }) 
.stage({ // detection logic }) 
.sink(Alerting.email())
One, you tell the Mantis Scheduler explicitly 
at submit time: number of instances, CPU 
cores, memory, disk, network, per instance
Two, Mantis Scheduler learns how to 
schedule job (work in progress) 
Looks at previous run history 
Looks at history for source input 
Over/under provision, auto adjust
A scheduled job creates a topology 
Stage 1 Stage 2 Stage 3 
Worker 
Worker Worker 
Worker 
Worker 
Worker 
Worker 
Application 1 
Mantis cluster 
Application 
clusters 
Application 2 
Application 3 
cluster boundary
Computation is split, code is scheduled, 
how is data transmitted over stage 
boundary? 
Worker Worker ?
Depends on the service level agreement 
(SLA) for the Job, transport is pluggable 
Worker Worker ?
Decision is usually a trade-off 
between latency and fault tolerance 
Worker Worker ?
A “weak” SLA job might trade-off fault 
tolerance for speed, using TCP as the 
transport 
Worker Worker ?
A “strong” SLA job might trade-off speed 
for fault tolerance, using a queue/broker as 
a transport 
Worker Worker ?
Forks and joins require data partitioning, 
collecting over boundaries 
Worker 
Worker 
Worker 
Fork Worker 
Worker 
Worker 
Join 
Need to partition data Need to collect data
Mantis has native support for partitioning, 
collecting over scalars (T) and groups (K,V) 
Worker 
Worker 
Worker 
Fork Worker 
Worker 
Worker 
Join 
Need to partition data Need to collect data
Let’s refactor job to include SLA, for the 
detection use case we prefer low latency 
MantisJob 
.source(Netflix.PlayAttempts()) 
.stage({ // groupBy movieId }) 
.stage({ // detection logic }) 
.sink(Alerting.email()) 
.config(SLA.weak())
The job is scheduled and running what 
happens when the input-data’s volume 
changes? 
Previous scheduling decision may not hold 
Prefer not to over provision, goal is for cost 
insights <<< product
Good news, Mantis Scheduler has the 
ability to grow and shrink (autoscale) the 
cluster and jobs
The cluster can scale up/down for two 
reasons: more/less job (demand) or jobs 
themselves are growing/shrinking 
For cluster we can use submit pending 
queue depth as a proxy for demand 
For jobs we use backpressure as a proxy to 
grow shrink the job
Backpressure is “build up” in a system 
Imagine we have a two stage Mantis job, 
Second stage is performing a complex 
calculation, causing data to queue up in the 
previous stage 
We can use this signal to increase nodes at 
second stage
Having touched on key points in Mantis 
architecture, want to show a complete job 
definition
Source 
Stage 1 
Stage 2 
Sink
Play Attempts 
Grouping by 
movie Id 
Detection 
algorithm 
Email alert
Sourcing play attempts 
Static set of 
sources
Grouping by movie Id 
GroupBy operator 
returns key 
selector function
Simple detection algorithms 
Windows for 10 minutes 
or 1000 play events 
Reduce the window to 
an experiment, update 
counts 
Filter out if less than 
threshold
Sink alerts
Watch the video with slide synchronization on 
InfoQ.com! 
http://www.infoq.com/presentations/mantis

Mais conteúdo relacionado

Mais procurados

Real-time driving score service using Flink
Real-time driving score service using FlinkReal-time driving score service using Flink
Real-time driving score service using FlinkDongwon Kim
 
Real Time Data Streaming using Kafka & Storm
Real Time Data Streaming using Kafka & StormReal Time Data Streaming using Kafka & Storm
Real Time Data Streaming using Kafka & StormRan Silberman
 
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Dan Halperin
 
Kenneth Knowles - Apache Beam - A Unified Model for Batch and Streaming Data...
Kenneth Knowles -  Apache Beam - A Unified Model for Batch and Streaming Data...Kenneth Knowles -  Apache Beam - A Unified Model for Batch and Streaming Data...
Kenneth Knowles - Apache Beam - A Unified Model for Batch and Streaming Data...Flink Forward
 
Real-Time Analytics with Kafka, Cassandra and Storm
Real-Time Analytics with Kafka, Cassandra and StormReal-Time Analytics with Kafka, Cassandra and Storm
Real-Time Analytics with Kafka, Cassandra and StormJohn Georgiadis
 
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeChris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeFlink Forward
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.DECK36
 
GoodFit: Multi-Resource Packing of Tasks with Dependencies
GoodFit: Multi-Resource Packing of Tasks with DependenciesGoodFit: Multi-Resource Packing of Tasks with Dependencies
GoodFit: Multi-Resource Packing of Tasks with DependenciesDataWorks Summit/Hadoop Summit
 
Slide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormSlide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormMd. Shamsur Rahim
 
Apache Storm Concepts
Apache Storm ConceptsApache Storm Concepts
Apache Storm ConceptsAndré Dias
 
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...Alexey Kharlamov
 
Experience with Kafka & Storm
Experience with Kafka & StormExperience with Kafka & Storm
Experience with Kafka & StormOtto Mok
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Spark Summit
 
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...Folio3 Software
 
Greg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
Greg Hogan – To Petascale and Beyond- Apache Flink in the CloudsGreg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
Greg Hogan – To Petascale and Beyond- Apache Flink in the CloudsFlink Forward
 
Sourabh Bajaj - Big data processing with Apache Beam
Sourabh Bajaj - Big data processing with Apache BeamSourabh Bajaj - Big data processing with Apache Beam
Sourabh Bajaj - Big data processing with Apache BeamPyData
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward
 

Mais procurados (20)

Real-time driving score service using Flink
Real-time driving score service using FlinkReal-time driving score service using Flink
Real-time driving score service using Flink
 
Real Time Data Streaming using Kafka & Storm
Real Time Data Streaming using Kafka & StormReal Time Data Streaming using Kafka & Storm
Real Time Data Streaming using Kafka & Storm
 
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
Introduction to Apache Beam & No Shard Left Behind: APIs for Massive Parallel...
 
Kenneth Knowles - Apache Beam - A Unified Model for Batch and Streaming Data...
Kenneth Knowles -  Apache Beam - A Unified Model for Batch and Streaming Data...Kenneth Knowles -  Apache Beam - A Unified Model for Batch and Streaming Data...
Kenneth Knowles - Apache Beam - A Unified Model for Batch and Streaming Data...
 
Real-Time Analytics with Kafka, Cassandra and Storm
Real-Time Analytics with Kafka, Cassandra and StormReal-Time Analytics with Kafka, Cassandra and Storm
Real-Time Analytics with Kafka, Cassandra and Storm
 
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeChris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.
 
GoodFit: Multi-Resource Packing of Tasks with Dependencies
GoodFit: Multi-Resource Packing of Tasks with DependenciesGoodFit: Multi-Resource Packing of Tasks with Dependencies
GoodFit: Multi-Resource Packing of Tasks with Dependencies
 
Slide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache StormSlide #1:Introduction to Apache Storm
Slide #1:Introduction to Apache Storm
 
Apache Storm Concepts
Apache Storm ConceptsApache Storm Concepts
Apache Storm Concepts
 
Resource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache StormResource Aware Scheduling in Apache Storm
Resource Aware Scheduling in Apache Storm
 
Spark streaming: Best Practices
Spark streaming: Best PracticesSpark streaming: Best Practices
Spark streaming: Best Practices
 
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...
Building large-scale analytics platform with Storm, Kafka and Cassandra - NYC...
 
Experience with Kafka & Storm
Experience with Kafka & StormExperience with Kafka & Storm
Experience with Kafka & Storm
 
Yahoo compares Storm and Spark
Yahoo compares Storm and SparkYahoo compares Storm and Spark
Yahoo compares Storm and Spark
 
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
Towards Benchmaking Modern Distruibuted Systems-(Grace Huang, Intel)
 
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
 
Greg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
Greg Hogan – To Petascale and Beyond- Apache Flink in the CloudsGreg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
Greg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
 
Sourabh Bajaj - Big data processing with Apache Beam
Sourabh Bajaj - Big data processing with Apache BeamSourabh Bajaj - Big data processing with Apache Beam
Sourabh Bajaj - Big data processing with Apache Beam
 
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
Flink Forward Berlin 2017: Robert Metzger - Keep it going - How to reliably a...
 

Destaque

Monitoring and evaluation of innovation platforms
Monitoring and evaluation of innovation platformsMonitoring and evaluation of innovation platforms
Monitoring and evaluation of innovation platformsafrica-rising
 
Monitoring microservices platform
Monitoring microservices platformMonitoring microservices platform
Monitoring microservices platformBoyan Dimitrov
 
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big DataLegacy Typesafe (now Lightbend)
 
ZMON: Monitoring Zalando's Engineering Platform
ZMON: Monitoring Zalando's Engineering PlatformZMON: Monitoring Zalando's Engineering Platform
ZMON: Monitoring Zalando's Engineering PlatformZalando Technology
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016Monal Daxini
 
Demystifying Internet of Things with Azure IoT Suite
Demystifying Internet of Things with Azure IoT SuiteDemystifying Internet of Things with Azure IoT Suite
Demystifying Internet of Things with Azure IoT SuiteWinWire Technologies Inc
 
Airflow - a data flow engine
Airflow - a data flow engineAirflow - a data flow engine
Airflow - a data flow engineWalter Liu
 
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEM
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEMSEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEM
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEMBint
 
Presentación Alberto Vega - eRetail Day México 2014
Presentación Alberto Vega - eRetail Day México 2014 Presentación Alberto Vega - eRetail Day México 2014
Presentación Alberto Vega - eRetail Day México 2014 eCommerce Institute
 
Mould catalogue of sinomould
Mould catalogue of sinomouldMould catalogue of sinomould
Mould catalogue of sinomouldSinomould
 
TvGlitch Ep1 Guión literario
TvGlitch Ep1 Guión literarioTvGlitch Ep1 Guión literario
TvGlitch Ep1 Guión literarioBheTorres11
 
Diez cosas que aprendí sobre Comunicación y Fluidos
Diez cosas que aprendí sobre Comunicación y FluidosDiez cosas que aprendí sobre Comunicación y Fluidos
Diez cosas que aprendí sobre Comunicación y FluidosPancho Tristán
 
Real Estate Executive Coverstory
Real Estate Executive CoverstoryReal Estate Executive Coverstory
Real Estate Executive Coverstoryalolli
 
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!Veronica Cher
 
Love Therapy 4
Love Therapy 4Love Therapy 4
Love Therapy 4Asra Ahmed
 
Arquitectura siglo XXI Europa Ana Lucia
Arquitectura siglo XXI Europa Ana LuciaArquitectura siglo XXI Europa Ana Lucia
Arquitectura siglo XXI Europa Ana LuciaLili Ramos
 
Imagine Dragons.
Imagine Dragons.Imagine Dragons.
Imagine Dragons.EruestanRC
 
9. el verdadero perdedor
9. el verdadero perdedor9. el verdadero perdedor
9. el verdadero perdedorWinsi Quinsi
 

Destaque (20)

Monitoring and evaluation of innovation platforms
Monitoring and evaluation of innovation platformsMonitoring and evaluation of innovation platforms
Monitoring and evaluation of innovation platforms
 
Monitoring microservices platform
Monitoring microservices platformMonitoring microservices platform
Monitoring microservices platform
 
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
[Sneak Preview] Apache Spark: Preparing for the next wave of Reactive Big Data
 
ZMON: Monitoring Zalando's Engineering Platform
ZMON: Monitoring Zalando's Engineering PlatformZMON: Monitoring Zalando's Engineering Platform
ZMON: Monitoring Zalando's Engineering Platform
 
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016Netflix keystone   streaming data pipeline @scale in the cloud-dbtb-2016
Netflix keystone streaming data pipeline @scale in the cloud-dbtb-2016
 
Demystifying Internet of Things with Azure IoT Suite
Demystifying Internet of Things with Azure IoT SuiteDemystifying Internet of Things with Azure IoT Suite
Demystifying Internet of Things with Azure IoT Suite
 
Airflow - a data flow engine
Airflow - a data flow engineAirflow - a data flow engine
Airflow - a data flow engine
 
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEM
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEMSEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEM
SEOGuardian - Centros de Reproducción Asistida - Informe SEO y SEM
 
Presentación
PresentaciónPresentación
Presentación
 
Presentación Alberto Vega - eRetail Day México 2014
Presentación Alberto Vega - eRetail Day México 2014 Presentación Alberto Vega - eRetail Day México 2014
Presentación Alberto Vega - eRetail Day México 2014
 
Mould catalogue of sinomould
Mould catalogue of sinomouldMould catalogue of sinomould
Mould catalogue of sinomould
 
TvGlitch Ep1 Guión literario
TvGlitch Ep1 Guión literarioTvGlitch Ep1 Guión literario
TvGlitch Ep1 Guión literario
 
Diez cosas que aprendí sobre Comunicación y Fluidos
Diez cosas que aprendí sobre Comunicación y FluidosDiez cosas que aprendí sobre Comunicación y Fluidos
Diez cosas que aprendí sobre Comunicación y Fluidos
 
Real Estate Executive Coverstory
Real Estate Executive CoverstoryReal Estate Executive Coverstory
Real Estate Executive Coverstory
 
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!
Atrapasueños Edición N° 41- Agosto/Septiembre 2016- Compartila!
 
Love Therapy 4
Love Therapy 4Love Therapy 4
Love Therapy 4
 
Busca Corp | Negocios sin Fronteras por Ramón Toledo
Busca Corp | Negocios sin Fronteras por Ramón ToledoBusca Corp | Negocios sin Fronteras por Ramón Toledo
Busca Corp | Negocios sin Fronteras por Ramón Toledo
 
Arquitectura siglo XXI Europa Ana Lucia
Arquitectura siglo XXI Europa Ana LuciaArquitectura siglo XXI Europa Ana Lucia
Arquitectura siglo XXI Europa Ana Lucia
 
Imagine Dragons.
Imagine Dragons.Imagine Dragons.
Imagine Dragons.
 
9. el verdadero perdedor
9. el verdadero perdedor9. el verdadero perdedor
9. el verdadero perdedor
 

Semelhante a Mantis: Netflix's Event Stream Processing System

Intelligent Monitoring
Intelligent MonitoringIntelligent Monitoring
Intelligent MonitoringIntelie
 
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...In-Memory Computing Summit
 
Moving Towards a Streaming Architecture
Moving Towards a Streaming ArchitectureMoving Towards a Streaming Architecture
Moving Towards a Streaming ArchitectureGabriele Modena
 
Monitoring as Software Validation
Monitoring as Software ValidationMonitoring as Software Validation
Monitoring as Software ValidationBioDec
 
Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Databricks
 
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...DevOps.com
 
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Flink Forward
 
Bdu -stream_processing_with_smack_final
Bdu  -stream_processing_with_smack_finalBdu  -stream_processing_with_smack_final
Bdu -stream_processing_with_smack_finalmanishduttpurohit
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...Flink Forward
 
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das Databricks
 
High Throughput Data Analysis
High Throughput Data AnalysisHigh Throughput Data Analysis
High Throughput Data AnalysisJ Singh
 
Data Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
Data Platform at Twitter: Enabling Real-time & Batch Analytics at ScaleData Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
Data Platform at Twitter: Enabling Real-time & Batch Analytics at ScaleSriram Krishnan
 
Scaling Experimentation & Data Capture at Grab
Scaling Experimentation & Data Capture at GrabScaling Experimentation & Data Capture at Grab
Scaling Experimentation & Data Capture at GrabRoman
 
Adventures in Observability - Clickhouse and Instana
Adventures in Observability - Clickhouse and InstanaAdventures in Observability - Clickhouse and Instana
Adventures in Observability - Clickhouse and InstanaMarcel Birkner
 
Adventures in Observability: How in-house ClickHouse deployment enabled Inst...
 Adventures in Observability: How in-house ClickHouse deployment enabled Inst... Adventures in Observability: How in-house ClickHouse deployment enabled Inst...
Adventures in Observability: How in-house ClickHouse deployment enabled Inst...Altinity Ltd
 
Big data 2.0, deep learning and financial Usecases
Big data 2.0, deep learning and financial UsecasesBig data 2.0, deep learning and financial Usecases
Big data 2.0, deep learning and financial UsecasesArvind Rapaka
 
Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Giridhar Addepalli
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuningYosuke Mizutani
 
Three Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityThree Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityDevOps.com
 

Semelhante a Mantis: Netflix's Event Stream Processing System (20)

Intelligent Monitoring
Intelligent MonitoringIntelligent Monitoring
Intelligent Monitoring
 
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
IMC Summit 2016 Breakout - Matt Coventon - Test Driving Streaming and CEP on ...
 
Moving Towards a Streaming Architecture
Moving Towards a Streaming ArchitectureMoving Towards a Streaming Architecture
Moving Towards a Streaming Architecture
 
Monitoring as Software Validation
Monitoring as Software ValidationMonitoring as Software Validation
Monitoring as Software Validation
 
Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...Building Continuous Application with Structured Streaming and Real-Time Data ...
Building Continuous Application with Structured Streaming and Real-Time Data ...
 
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
 
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
Keynote: Building and Operating A Serverless Streaming Runtime for Apache Bea...
 
Stream Processing Overview
Stream Processing OverviewStream Processing Overview
Stream Processing Overview
 
Bdu -stream_processing_with_smack_final
Bdu  -stream_processing_with_smack_finalBdu  -stream_processing_with_smack_final
Bdu -stream_processing_with_smack_final
 
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...Flink Forward San Francisco 2018:  David Reniz & Dahyr Vergara - "Real-time m...
Flink Forward San Francisco 2018: David Reniz & Dahyr Vergara - "Real-time m...
 
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das
Apache Spark 2.0: A Deep Dive Into Structured Streaming - by Tathagata Das
 
High Throughput Data Analysis
High Throughput Data AnalysisHigh Throughput Data Analysis
High Throughput Data Analysis
 
Data Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
Data Platform at Twitter: Enabling Real-time & Batch Analytics at ScaleData Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
Data Platform at Twitter: Enabling Real-time & Batch Analytics at Scale
 
Scaling Experimentation & Data Capture at Grab
Scaling Experimentation & Data Capture at GrabScaling Experimentation & Data Capture at Grab
Scaling Experimentation & Data Capture at Grab
 
Adventures in Observability - Clickhouse and Instana
Adventures in Observability - Clickhouse and InstanaAdventures in Observability - Clickhouse and Instana
Adventures in Observability - Clickhouse and Instana
 
Adventures in Observability: How in-house ClickHouse deployment enabled Inst...
 Adventures in Observability: How in-house ClickHouse deployment enabled Inst... Adventures in Observability: How in-house ClickHouse deployment enabled Inst...
Adventures in Observability: How in-house ClickHouse deployment enabled Inst...
 
Big data 2.0, deep learning and financial Usecases
Big data 2.0, deep learning and financial UsecasesBig data 2.0, deep learning and financial Usecases
Big data 2.0, deep learning and financial Usecases
 
Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01Adtech scala-performance-tuning-150323223738-conversion-gate01
Adtech scala-performance-tuning-150323223738-conversion-gate01
 
Adtech x Scala x Performance tuning
Adtech x Scala x Performance tuningAdtech x Scala x Performance tuning
Adtech x Scala x Performance tuning
 
Three Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking ObservabilityThree Pillars, Zero Answers: Rethinking Observability
Three Pillars, Zero Answers: Rethinking Observability
 

Mais de C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mais de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Mantis: Netflix's Event Stream Processing System

  • 1. Mantis: Netflix's Event Stream Processing System Justin Becker Danny Yuan 10/26/2014
  • 2. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations /mantis InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month
  • 3. Presented at QCon San Francisco www.qconsf.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 6. Netflix wants Internet TV to work just as well
  • 7.
  • 8. Especially when things aren’t working
  • 9.
  • 10. Tracking “big signals” is not enough
  • 11. Need to track all kinds of permutations
  • 12. Detect quickly, to resolve ASAP
  • 14. Here comes the problem
  • 15. 12 ~ 20 million metrics updates per second
  • 16. 750 billion metrics updates per day
  • 17.
  • 18.
  • 19. 4 ~ 18 Million App Events Per Second > 300 Billion Events Per Day
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 29. They Require Lots of Domain Knowledge
  • 30. A System to Rule Them All
  • 31.
  • 32.
  • 33. Mantis: A Stream Processing System
  • 34.
  • 35. 3
  • 36. 1. Versatile User Demands
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48. 3. Same Source, Multiple Consumers
  • 49.
  • 50.
  • 51.
  • 52. We want Internet TV to just work
  • 53. One problem we need to solve, detect movies that are failing?
  • 54. Do it fast → limit impact, fix early Do it at scale → for all permutations Do it cheap → cost detect <<< serve
  • 55. Work through the details for how to solve this problem in Mantis
  • 56. Goal is to highlight unique and interesting design features
  • 57. … begin with batch approach, the non-Mantis approach Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 58. First problem, each run requires reads + writes to data store per run Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 59. For Mantis don’t want to pay that cost: for latency or storage Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 60. Next problem, “pull” model great for batch processing, bit awkward for stream processing Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 61. By definition, batch processing requires batches. How do I chunk my data? Or, how often do I run? Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 62. For Mantis, prefer “push” model, natural approach to data-in-motion processing Batch algorithm, runs every N minutes for(play in playAttempts()){ Stats movieStats = getStats(play.movieId); updateStats(movieStats, play); if (movieStats.failRatio > THRESHOLD){ alert(movieId, failRatio, timestamp); } }
  • 63. For our “push” API we decided to use Reactive Extensions (Rx)
  • 64. Two reasons for choosing Rx: theoretical, practical 1. Observable is a natural abstraction for stream processing, Observable = stream 2. Rx already leveraged throughout the company
  • 65. So, what is an Observable? A sequence of events, aka a stream Observable<String> o = Observable.just(“hello”, “qcon”, “SF”); o.subscribe(x->{println x;})
  • 66. What can I do with an Observable? Apply operators → New observable Subscribe → Observer of data Operators, familiar lambda functions map(), flatMap(), scan(), ...
  • 67. What is the connection with Mantis? In Mantis, a job (code-to-run) is the collection of operators applied to a sourced observable where the output is sinked to observers
  • 68. Think of a “source” observable as the input to a job. Think of a “sink” observer as the output of the job.
  • 69. Let’s refactor previous problem using Mantis API terminology Source: Play attempts Operators: Detection logic Sink: Alerting service
  • 70. Sounds OK, but how will this scale? For pull model luxury of requesting data at specified rates/time Analogous to drinking from a straw
  • 71. In contrast, push is the firehose No explicit control to limit the flow of data
  • 72. In Mantis, we solve this problem by scaling horizontally
  • 73. Horizontal scale is accomplished by arranging operators into logical “stages”, explicitly by job writer or implicitly with fancy tooling (future work)
  • 74. A stage is a boundary between computations. The boundary may be a network boundary, process boundary, etc.
  • 75. So, to scale, Mantis job is really, Source → input observable Stage(s) → operators Sink → output observer
  • 76. Let’s refactor previous problem to follow the Mantis job API structure MantisJob .source(Netflix.PlayAttempts()) .stage({ // detection logic }) .sink(Alerting.email())
  • 77. We need to provide a computation boundary to scale horizontally MantisJob .source(Netflix.PlayAttempts()) .stage({ // detection logic }) .sink(Alerting.email())
  • 78. For our problem, scale is a function of the number of movies tracking MantisJob .source(Netflix.PlayAttempts()) .stage({ // detection logic }) .sink(Alerting.email())
  • 79. Lets create two stages, one producing groups of movies, other to run detection MantisJob .source(Netflix.PlayAttempts()) .stage({ // groupBy movieId }) .stage({ // detection logic }) .sink(Alerting.email())
  • 80. OK, computation logic is split, how is the code scheduled to resources for execution? MantisJob .source(Netflix.PlayAttempts()) .stage({ // groupBy movieId }) .stage({ // detection logic }) .sink(Alerting.email())
  • 81. One, you tell the Mantis Scheduler explicitly at submit time: number of instances, CPU cores, memory, disk, network, per instance
  • 82. Two, Mantis Scheduler learns how to schedule job (work in progress) Looks at previous run history Looks at history for source input Over/under provision, auto adjust
  • 83. A scheduled job creates a topology Stage 1 Stage 2 Stage 3 Worker Worker Worker Worker Worker Worker Worker Application 1 Mantis cluster Application clusters Application 2 Application 3 cluster boundary
  • 84. Computation is split, code is scheduled, how is data transmitted over stage boundary? Worker Worker ?
  • 85. Depends on the service level agreement (SLA) for the Job, transport is pluggable Worker Worker ?
  • 86. Decision is usually a trade-off between latency and fault tolerance Worker Worker ?
  • 87. A “weak” SLA job might trade-off fault tolerance for speed, using TCP as the transport Worker Worker ?
  • 88. A “strong” SLA job might trade-off speed for fault tolerance, using a queue/broker as a transport Worker Worker ?
  • 89. Forks and joins require data partitioning, collecting over boundaries Worker Worker Worker Fork Worker Worker Worker Join Need to partition data Need to collect data
  • 90. Mantis has native support for partitioning, collecting over scalars (T) and groups (K,V) Worker Worker Worker Fork Worker Worker Worker Join Need to partition data Need to collect data
  • 91. Let’s refactor job to include SLA, for the detection use case we prefer low latency MantisJob .source(Netflix.PlayAttempts()) .stage({ // groupBy movieId }) .stage({ // detection logic }) .sink(Alerting.email()) .config(SLA.weak())
  • 92. The job is scheduled and running what happens when the input-data’s volume changes? Previous scheduling decision may not hold Prefer not to over provision, goal is for cost insights <<< product
  • 93. Good news, Mantis Scheduler has the ability to grow and shrink (autoscale) the cluster and jobs
  • 94. The cluster can scale up/down for two reasons: more/less job (demand) or jobs themselves are growing/shrinking For cluster we can use submit pending queue depth as a proxy for demand For jobs we use backpressure as a proxy to grow shrink the job
  • 95. Backpressure is “build up” in a system Imagine we have a two stage Mantis job, Second stage is performing a complex calculation, causing data to queue up in the previous stage We can use this signal to increase nodes at second stage
  • 96. Having touched on key points in Mantis architecture, want to show a complete job definition
  • 97. Source Stage 1 Stage 2 Sink
  • 98. Play Attempts Grouping by movie Id Detection algorithm Email alert
  • 99. Sourcing play attempts Static set of sources
  • 100. Grouping by movie Id GroupBy operator returns key selector function
  • 101. Simple detection algorithms Windows for 10 minutes or 1000 play events Reduce the window to an experiment, update counts Filter out if less than threshold
  • 103. Watch the video with slide synchronization on InfoQ.com! http://www.infoq.com/presentations/mantis