SlideShare a Scribd company logo
Gyula Fóra - RBEA- Scalable Real-Time Analytics at King
© King.com Ltd 2016 – Commercially confidential
RBea: Scalable Real-Time Analytics
at King
Gyula Fóra
Data Warehouse Engineer
Apache Flink PMC
Page 2
© King.com Ltd 2016 – Commercially confidential
We make awesome mobile games
463 million monthly active users
30 billion events per day
And a lot of data…
Page 3
About King
© King.com Ltd 2016 – Commercially confidential
From streaming perspective…
Page 4
DB
30 billion events / day
Complex processing logic
Terabytes of state
DB
DB
© King.com Ltd 2016 – Commercially confidential
How do we use Flink
Page 5
Standalone deployment
Few heavy streaming jobs
RocksDB state backend with caching
Lot of custom tooling
© King.com Ltd 2016 – Commercially confidential
The RBea platform
Page 6
Scripting on the live streams
Deploy from browser/python
Window aggregates
Stateful computations
Scalable + fault tolerant
© King.com Ltd 2016 – Commercially confidential
RBea architecture
Page 7
Events Output
REST API
RBEA web frontend
Libraries
http://hpc-asia.com/wp-content/uploads/2015/09/World-Class-Consultancy-Seeking-Data-Scientist-CA-Hobson-Associates-Matthew-Abel-Recruiter.jpg
Data Scientists
© King.com Ltd 2016 – Commercially confidential
RBea backend implementation
Page 8
One stateful Flink job / game
Stream events and scripts
Events are partitioned by user id
Scripts are broadcasted
Output/Aggregation happens downstream
S1 S2
S3
S4
S5
Add/Remove scripts
Event stream Loop over deployed
scripts and process
CoFlatMap
Output based
on API calls
© King.com Ltd 2016 – Commercially confidential
Dissecting the DSL
Page 9
@ProcessEvent(semanticClass=SCPurchase.class)
def process(SCPurchase purchase,
Output out,
Aggregators agg) {
long amount = purchase.getAmount()
String curr = purchase.getCurrency()
out.writeToKafka("purchases", curr + "t" + amount)
Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10)
numPurchases.increment()
}
© King.com Ltd 2016 – Commercially confidential
Dissecting the DSL
Page 10
@ProcessEvent(semanticClass=SCPurchase.class)
def process(SCPurchase purchase,
Output out,
Aggregators agg) {
long amount = purchase.getAmount()
String curr = purchase.getCurrency()
out.writeToKafka("purchases", curr + "t" + amount)
Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10)
numPurchases.increment()
}
Processing methods by annotation
Event filter conditions
Flexible argument list
Code-generate Java classes
=> void processEvent(Event e, Context ctx);
© King.com Ltd 2016 – Commercially confidential
Dissecting the DSL
Page 11
@ProcessEvent(semanticClass=SCPurchase.class)
def process(SCPurchase purchase,
Output out,
Aggregators agg) {
long amount = purchase.getAmount()
String curr = purchase.getCurrency()
out.writeToKafka("purchases", curr + "t" + amount)
Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10)
numPurchases.increment()
}
Output calls create Output events
Output(KAFKA, “purchases”, “…” )
These events are filtered downstream and
sent to a Kafka sink
© King.com Ltd 2016 – Commercially confidential
Dissecting the DSL
Page 12
@ProcessEvent(semanticClass=SCPurchase.class)
def process(SCPurchase purchase,
Output out,
Aggregators agg) {
long amount = purchase.getAmount()
String curr = purchase.getCurrency()
out.writeToKafka("purchases", curr + "t" + amount)
Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10)
numPurchases.increment()
}
Aggregator calls create Aggregate events
Aggr (MYSQL, 60000, “PurchaseCount”, 1)
Flink window operators do the aggregation
© King.com Ltd 2016 – Commercially confidential
Aggregators
Page 13
long size = aggregate.getWindowSize();
long start = timestamp - (timestamp % size);
long end = start + size;
TimeWindow tw = new TimeWindow(start, end);
Event time windows
Window size / aggregator
Script1
Script2
Window 1Window 2 NumGames
Revenue
W1: 8999
W2: 9001
W1: 200
W2: 300
MyAggregator
W1: 10
W2: 5
Dynamic window assignment
© King.com Ltd 2016 – Commercially confidential
User states
Page 14
RBea
Script
LAST_GAMESTART
LAST_PURCHASE
LAST_…
+ User defined states
Fields
byte[]
User State
byte[]byte[]
LRU Cache
Scripts can read all state
But write only their own
© King.com Ltd 2016 – Commercially confidential
Things you might wonder…
Page 15
Can slow scripts affect other scripts?
Yes, but we are working on it
Separate test/live environments
What does the backend know about the scripts?
Outputs produced
Failures (causes) => these are propagated
Runtime stats in the future
Is RBea useful compared to custom Flink jobs?
Writing + maintaining streaming jobs is hard
Especially with state, windowing, MySQL etc.
© King.com Ltd 2016 – Commercially confidential Page 16
RBea physical plan
© King.com Ltd 2016 – Commercially confidential
Wrap up
Page 17
RBea makes streaming accessible to every
data scientist at King
We leverage Flink’s stateful and windowed
processing capabilities
People love it because it’s simple and
powerful
Thank you!

More Related Content

PPTX
Fabian Hueske_Till Rohrmann - Declarative stream processing with StreamSQL an...
PDF
Streaming Analytics & CEP - Two sides of the same coin?
PDF
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
PDF
RBea: Scalable Real-Time Analytics at King
PPTX
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
PPTX
Streaming in the Wild with Apache Flink
PDF
Flink Forward Berlin 2018: Shriya Arora - "Taming large-state to join dataset...
PDF
Flink Forward Berlin 2017: Jörg Schad, Till Rohrmann - Apache Flink meets Apa...
Fabian Hueske_Till Rohrmann - Declarative stream processing with StreamSQL an...
Streaming Analytics & CEP - Two sides of the same coin?
Flink Forward Berlin 2017: Mihail Vieru - A Materialization Engine for Data I...
RBea: Scalable Real-Time Analytics at King
Flink Forward Berlin 2018: Oleksandr Nitavskyi - "Data lossless event time st...
Streaming in the Wild with Apache Flink
Flink Forward Berlin 2018: Shriya Arora - "Taming large-state to join dataset...
Flink Forward Berlin 2017: Jörg Schad, Till Rohrmann - Apache Flink meets Apa...

What's hot (20)

PDF
Stateful Distributed Stream Processing
PPTX
InfluxDb
PDF
uReplicator: Uber Engineering’s Scalable, Robust Kafka Replicator
PDF
Tensorflow data preparation on Apache Beam using Portable Flink Runner, Ankur...
PDF
Flink Forward San Francisco 2019: Real-time Processing with Flink for Machine...
PDF
Using Spark at Vungle
PDF
InfluxDB and Grafana: An Introduction to Time-Based Data Storage and Visualiz...
PDF
Flink Forward Berlin 2018: Brian Wolfe - "Upshot: distributed tracing using F...
PPTX
Flink Forward Berlin 2017: Fabian Hueske - Using Stream and Batch Processing ...
PDF
Stream Processing Live Traffic Data with Kafka Streams
PDF
Principles in Data Stream Processing | Matthias J Sax, Confluent
PPTX
Apache Flink Berlin Meetup May 2016
PPTX
Flink Streaming @BudapestData
PDF
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
PDF
FlinkDTW: Time-series Pattern Search at Scale Using Dynamic Time Warping - Ch...
PDF
Flink Forward SF 2017: Jamie Grier - Apache Flink - The latest and greatest
PDF
Disaster Recovery for Multi-Region Apache Kafka Ecosystems at Uber
PPTX
Stream Processing Live Traffic Data with Kafka Streams
PDF
Flink Forward Berlin 2017: Steffen Hausmann - Build a Real-time Stream Proces...
PDF
Flink Forward SF 2017: Kenneth Knowles - Back to Sessions overview
Stateful Distributed Stream Processing
InfluxDb
uReplicator: Uber Engineering’s Scalable, Robust Kafka Replicator
Tensorflow data preparation on Apache Beam using Portable Flink Runner, Ankur...
Flink Forward San Francisco 2019: Real-time Processing with Flink for Machine...
Using Spark at Vungle
InfluxDB and Grafana: An Introduction to Time-Based Data Storage and Visualiz...
Flink Forward Berlin 2018: Brian Wolfe - "Upshot: distributed tracing using F...
Flink Forward Berlin 2017: Fabian Hueske - Using Stream and Batch Processing ...
Stream Processing Live Traffic Data with Kafka Streams
Principles in Data Stream Processing | Matthias J Sax, Confluent
Apache Flink Berlin Meetup May 2016
Flink Streaming @BudapestData
Flink Forward San Francisco 2019: Massive Scale Data Processing at Netflix us...
FlinkDTW: Time-series Pattern Search at Scale Using Dynamic Time Warping - Ch...
Flink Forward SF 2017: Jamie Grier - Apache Flink - The latest and greatest
Disaster Recovery for Multi-Region Apache Kafka Ecosystems at Uber
Stream Processing Live Traffic Data with Kafka Streams
Flink Forward Berlin 2017: Steffen Hausmann - Build a Real-time Stream Proces...
Flink Forward SF 2017: Kenneth Knowles - Back to Sessions overview
Ad

Viewers also liked (20)

PPTX
Matthias Kricke_Martin Grimmer_Michael Schmeißer - Building a real time Tweet...
PDF
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
PDF
Trevor Grant - Apache Zeppelin - A friendlier way to Flink
PDF
Alexander Kolb - Flinkspector – Taming the squirrel
PDF
Automatic Detection of Web Trackers by Vasia Kalavri
PDF
Maxim Fateev - Beyond the Watermark- On-Demand Backfilling in Flink
PPTX
Fabian Hueske - Taking a look under the hood of Apache Flink’s relational APIs
PPTX
Ted Dunning-Faster and Furiouser- Flink Drift
PDF
Ana M Martinez - AMIDST Toolbox- Scalable probabilistic machine learning with...
PPTX
Eron Wright - Introducing Flink on Mesos
PDF
Julian Hyde - Streaming SQL
PDF
Francesco Versaci - Flink in genomics - efficient and scalable processing of ...
PPTX
Ted Dunning - Keynote: How Can We Take Flink Forward?
PDF
Sanjar Akhmedov - Joining Infinity – Windowless Stream Processing with Flink
PPTX
Jim Dowling - Multi-tenant Flink-as-a-Service on YARN
PDF
Greg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
PPTX
Eron Wright - Flink Security Enhancements
PPTX
Aljoscha Krettek - The Future of Apache Flink
PDF
Zoltán Zvara - Advanced visualization of Flink and Spark jobs

PDF
Jamie Grier - Robust Stream Processing with Apache Flink
Matthias Kricke_Martin Grimmer_Michael Schmeißer - Building a real time Tweet...
Javier Lopez_Mihail Vieru - Flink in Zalando's World of Microservices - Flink...
Trevor Grant - Apache Zeppelin - A friendlier way to Flink
Alexander Kolb - Flinkspector – Taming the squirrel
Automatic Detection of Web Trackers by Vasia Kalavri
Maxim Fateev - Beyond the Watermark- On-Demand Backfilling in Flink
Fabian Hueske - Taking a look under the hood of Apache Flink’s relational APIs
Ted Dunning-Faster and Furiouser- Flink Drift
Ana M Martinez - AMIDST Toolbox- Scalable probabilistic machine learning with...
Eron Wright - Introducing Flink on Mesos
Julian Hyde - Streaming SQL
Francesco Versaci - Flink in genomics - efficient and scalable processing of ...
Ted Dunning - Keynote: How Can We Take Flink Forward?
Sanjar Akhmedov - Joining Infinity – Windowless Stream Processing with Flink
Jim Dowling - Multi-tenant Flink-as-a-Service on YARN
Greg Hogan – To Petascale and Beyond- Apache Flink in the Clouds
Eron Wright - Flink Security Enhancements
Aljoscha Krettek - The Future of Apache Flink
Zoltán Zvara - Advanced visualization of Flink and Spark jobs

Jamie Grier - Robust Stream Processing with Apache Flink
Ad

Similar to Gyula Fóra - RBEA- Scalable Real-Time Analytics at King (20)

PDF
Real-time analytics as a service at King
PDF
Flink Forward Berlin 2017: Gyula Fora - Building and operating large-scale st...
PPTX
Let's Play Flink – Fun with Streaming in a Gaming Company
PDF
Thomas Lamirault_Mohamed Amine Abdessemed -A brief history of time with Apac...
PDF
Stream Processing with Apache Flink (Flink.tw Meetup 2016/07/19)
PPTX
QCon London - Stream Processing with Apache Flink
PPTX
GOTO Night Amsterdam - Stream processing with Apache Flink
PDF
Apache Flink @ Tel Aviv / Herzliya Meetup
PDF
Santander Stream Processing with Apache Flink
PDF
Rivivi il Data in Motion Tour Milano 2024
PPTX
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
PDF
Complex event processing platform handling millions of users - Krzysztof Zarz...
PPTX
The Stream Processor as the Database - Apache Flink @ Berlin buzzwords
PPTX
The Stream Processor as a Database Apache Flink
PDF
Unified Stream and Batch Processing with Apache Flink
PPTX
Data Stream Processing with Apache Flink
PDF
Flink Forward San Francisco 2019: High cardinality data stream processing wit...
PDF
Don't Cross The Streams - Data Streaming And Apache Flink
PPTX
Streaming in the Wild with Apache Flink
PPTX
Stream Analytics with SQL on Apache Flink
Real-time analytics as a service at King
Flink Forward Berlin 2017: Gyula Fora - Building and operating large-scale st...
Let's Play Flink – Fun with Streaming in a Gaming Company
Thomas Lamirault_Mohamed Amine Abdessemed -A brief history of time with Apac...
Stream Processing with Apache Flink (Flink.tw Meetup 2016/07/19)
QCon London - Stream Processing with Apache Flink
GOTO Night Amsterdam - Stream processing with Apache Flink
Apache Flink @ Tel Aviv / Herzliya Meetup
Santander Stream Processing with Apache Flink
Rivivi il Data in Motion Tour Milano 2024
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
Complex event processing platform handling millions of users - Krzysztof Zarz...
The Stream Processor as the Database - Apache Flink @ Berlin buzzwords
The Stream Processor as a Database Apache Flink
Unified Stream and Batch Processing with Apache Flink
Data Stream Processing with Apache Flink
Flink Forward San Francisco 2019: High cardinality data stream processing wit...
Don't Cross The Streams - Data Streaming And Apache Flink
Streaming in the Wild with Apache Flink
Stream Analytics with SQL on Apache Flink

More from Flink Forward (20)

PDF
Building a fully managed stream processing platform on Flink at scale for Lin...
PPTX
Evening out the uneven: dealing with skew in Flink
PPTX
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
PDF
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
PDF
Introducing the Apache Flink Kubernetes Operator
PPTX
Autoscaling Flink with Reactive Mode
PDF
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
PPTX
One sink to rule them all: Introducing the new Async Sink
PPTX
Tuning Apache Kafka Connectors for Flink.pptx
PDF
Flink powered stream processing platform at Pinterest
PPTX
Apache Flink in the Cloud-Native Era
PPTX
Where is my bottleneck? Performance troubleshooting in Flink
PPTX
Using the New Apache Flink Kubernetes Operator in a Production Deployment
PPTX
The Current State of Table API in 2022
PDF
Flink SQL on Pulsar made easy
PPTX
Dynamic Rule-based Real-time Market Data Alerts
PPTX
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
PPTX
Processing Semantically-Ordered Streams in Financial Services
PDF
Tame the small files problem and optimize data layout for streaming ingestion...
PDF
Batch Processing at Scale with Flink & Iceberg
Building a fully managed stream processing platform on Flink at scale for Lin...
Evening out the uneven: dealing with skew in Flink
“Alexa, be quiet!”: End-to-end near-real time model building and evaluation i...
Introducing BinarySortedMultiMap - A new Flink state primitive to boost your ...
Introducing the Apache Flink Kubernetes Operator
Autoscaling Flink with Reactive Mode
Dynamically Scaling Data Streams across Multiple Kafka Clusters with Zero Fli...
One sink to rule them all: Introducing the new Async Sink
Tuning Apache Kafka Connectors for Flink.pptx
Flink powered stream processing platform at Pinterest
Apache Flink in the Cloud-Native Era
Where is my bottleneck? Performance troubleshooting in Flink
Using the New Apache Flink Kubernetes Operator in a Production Deployment
The Current State of Table API in 2022
Flink SQL on Pulsar made easy
Dynamic Rule-based Real-time Market Data Alerts
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Processing Semantically-Ordered Streams in Financial Services
Tame the small files problem and optimize data layout for streaming ingestion...
Batch Processing at Scale with Flink & Iceberg

Recently uploaded (20)

PPTX
1_Introduction to advance data techniques.pptx
PDF
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
PPTX
oil_refinery_comprehensive_20250804084928 (1).pptx
PPTX
Business Ppt On Nestle.pptx huunnnhhgfvu
PPT
Reliability_Chapter_ presentation 1221.5784
PDF
Lecture1 pattern recognition............
PDF
Mega Projects Data Mega Projects Data
PPTX
Moving the Public Sector (Government) to a Digital Adoption
PPTX
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
PDF
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
PDF
Launch Your Data Science Career in Kochi – 2025
PPT
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
PPTX
Business Acumen Training GuidePresentation.pptx
PDF
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
PPTX
Major-Components-ofNKJNNKNKNKNKronment.pptx
PPT
Miokarditis (Inflamasi pada Otot Jantung)
PPTX
climate analysis of Dhaka ,Banglades.pptx
PPT
Quality review (1)_presentation of this 21
PPTX
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx
1_Introduction to advance data techniques.pptx
168300704-gasification-ppt.pdfhghhhsjsjhsuxush
oil_refinery_comprehensive_20250804084928 (1).pptx
Business Ppt On Nestle.pptx huunnnhhgfvu
Reliability_Chapter_ presentation 1221.5784
Lecture1 pattern recognition............
Mega Projects Data Mega Projects Data
Moving the Public Sector (Government) to a Digital Adoption
DISORDERS OF THE LIVER, GALLBLADDER AND PANCREASE (1).pptx
“Getting Started with Data Analytics Using R – Concepts, Tools & Case Studies”
Launch Your Data Science Career in Kochi – 2025
Chapter 3 METAL JOINING.pptnnnnnnnnnnnnn
Business Acumen Training GuidePresentation.pptx
22.Patil - Early prediction of Alzheimer’s disease using convolutional neural...
Major-Components-ofNKJNNKNKNKNKronment.pptx
Miokarditis (Inflamasi pada Otot Jantung)
climate analysis of Dhaka ,Banglades.pptx
Quality review (1)_presentation of this 21
Introduction to Firewall Analytics - Interfirewall and Transfirewall.pptx

Gyula Fóra - RBEA- Scalable Real-Time Analytics at King

  • 2. © King.com Ltd 2016 – Commercially confidential RBea: Scalable Real-Time Analytics at King Gyula Fóra Data Warehouse Engineer Apache Flink PMC Page 2
  • 3. © King.com Ltd 2016 – Commercially confidential We make awesome mobile games 463 million monthly active users 30 billion events per day And a lot of data… Page 3 About King
  • 4. © King.com Ltd 2016 – Commercially confidential From streaming perspective… Page 4 DB 30 billion events / day Complex processing logic Terabytes of state DB DB
  • 5. © King.com Ltd 2016 – Commercially confidential How do we use Flink Page 5 Standalone deployment Few heavy streaming jobs RocksDB state backend with caching Lot of custom tooling
  • 6. © King.com Ltd 2016 – Commercially confidential The RBea platform Page 6 Scripting on the live streams Deploy from browser/python Window aggregates Stateful computations Scalable + fault tolerant
  • 7. © King.com Ltd 2016 – Commercially confidential RBea architecture Page 7 Events Output REST API RBEA web frontend Libraries http://hpc-asia.com/wp-content/uploads/2015/09/World-Class-Consultancy-Seeking-Data-Scientist-CA-Hobson-Associates-Matthew-Abel-Recruiter.jpg Data Scientists
  • 8. © King.com Ltd 2016 – Commercially confidential RBea backend implementation Page 8 One stateful Flink job / game Stream events and scripts Events are partitioned by user id Scripts are broadcasted Output/Aggregation happens downstream S1 S2 S3 S4 S5 Add/Remove scripts Event stream Loop over deployed scripts and process CoFlatMap Output based on API calls
  • 9. © King.com Ltd 2016 – Commercially confidential Dissecting the DSL Page 9 @ProcessEvent(semanticClass=SCPurchase.class) def process(SCPurchase purchase, Output out, Aggregators agg) { long amount = purchase.getAmount() String curr = purchase.getCurrency() out.writeToKafka("purchases", curr + "t" + amount) Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10) numPurchases.increment() }
  • 10. © King.com Ltd 2016 – Commercially confidential Dissecting the DSL Page 10 @ProcessEvent(semanticClass=SCPurchase.class) def process(SCPurchase purchase, Output out, Aggregators agg) { long amount = purchase.getAmount() String curr = purchase.getCurrency() out.writeToKafka("purchases", curr + "t" + amount) Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10) numPurchases.increment() } Processing methods by annotation Event filter conditions Flexible argument list Code-generate Java classes => void processEvent(Event e, Context ctx);
  • 11. © King.com Ltd 2016 – Commercially confidential Dissecting the DSL Page 11 @ProcessEvent(semanticClass=SCPurchase.class) def process(SCPurchase purchase, Output out, Aggregators agg) { long amount = purchase.getAmount() String curr = purchase.getCurrency() out.writeToKafka("purchases", curr + "t" + amount) Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10) numPurchases.increment() } Output calls create Output events Output(KAFKA, “purchases”, “…” ) These events are filtered downstream and sent to a Kafka sink
  • 12. © King.com Ltd 2016 – Commercially confidential Dissecting the DSL Page 12 @ProcessEvent(semanticClass=SCPurchase.class) def process(SCPurchase purchase, Output out, Aggregators agg) { long amount = purchase.getAmount() String curr = purchase.getCurrency() out.writeToKafka("purchases", curr + "t" + amount) Counter numPurchases = agg.getCounter("PurchaseCount", MINUTES_10) numPurchases.increment() } Aggregator calls create Aggregate events Aggr (MYSQL, 60000, “PurchaseCount”, 1) Flink window operators do the aggregation
  • 13. © King.com Ltd 2016 – Commercially confidential Aggregators Page 13 long size = aggregate.getWindowSize(); long start = timestamp - (timestamp % size); long end = start + size; TimeWindow tw = new TimeWindow(start, end); Event time windows Window size / aggregator Script1 Script2 Window 1Window 2 NumGames Revenue W1: 8999 W2: 9001 W1: 200 W2: 300 MyAggregator W1: 10 W2: 5 Dynamic window assignment
  • 14. © King.com Ltd 2016 – Commercially confidential User states Page 14 RBea Script LAST_GAMESTART LAST_PURCHASE LAST_… + User defined states Fields byte[] User State byte[]byte[] LRU Cache Scripts can read all state But write only their own
  • 15. © King.com Ltd 2016 – Commercially confidential Things you might wonder… Page 15 Can slow scripts affect other scripts? Yes, but we are working on it Separate test/live environments What does the backend know about the scripts? Outputs produced Failures (causes) => these are propagated Runtime stats in the future Is RBea useful compared to custom Flink jobs? Writing + maintaining streaming jobs is hard Especially with state, windowing, MySQL etc.
  • 16. © King.com Ltd 2016 – Commercially confidential Page 16 RBea physical plan
  • 17. © King.com Ltd 2016 – Commercially confidential Wrap up Page 17 RBea makes streaming accessible to every data scientist at King We leverage Flink’s stateful and windowed processing capabilities People love it because it’s simple and powerful