SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
PANTA RHEI: DESIGNING DISTRIBUTED
APPLICATIONS WITH STREAMS
DRIVETRIBE ENGINEERING
DRIVETRIBE
▸ The world biggest motoring
community.
▸ A social platform for petrolheads.
▸ By Clarkson, Hammond and May.
DRIVETRIBE
2
DRIVETRIBE
▸ A content destination at the core.
▸ Users consume feeds of content:
images, videos, long-form articles.
▸ Content is organised in
homogenous categories called
“tribes”.
▸ Different users have different
interests and the tribe model allows
to mix and match at will.
DRIVETRIBE
3
DRIVETRIBE
DRIVETRIBE ARTICLE
▸ Single article by Richard Hammond.
▸ Contains a plethora of content and
engagement information.
▸ What kind of data do we need in
order to compute an aggregation like
this?
4
DRIVETRIBE
▸ getUser(id: Id[User])
DRIVETRIBE ARTICLE
5
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
DRIVETRIBE ARTICLE
6
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
DRIVETRIBE ARTICLE
7
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
DRIVETRIBE ARTICLE
8
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ countComments(id: Id[Article])
DRIVETRIBE ARTICLE
9
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ countComments(id: Id[Article])
▸ countBumps(id: Id[Article])
DRIVETRIBE ARTICLE
10
DRIVETRIBE
DRIVETRIBE FEED OF ARTICLES
▸ rankArticles(forUserId).flatMap { a
=> … }
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countViews(id: Id[Article])
▸ …
11
DRIVETRIBE
QUINTESSENTIAL PREREQUISITES
▸ Scalable. Jeremy Clarkson has 7.2M Twitter followers. Cannot really hack
it and worry about it later.
▸ Performant. Low latency is key and mobile networks add quite a bit of it.
▸ Flexible. Almost nobody gets it right the first time around. The ability to
iterate is paramount.
▸ Maintainable. Spaghetti code works like interest on debt.
12
DRIVETRIBE
THREE TIER APPROACH
▸ Clients interact with a fleet of stateless servers
(aka “API” servers or “Backend”) via HTTP
(which is stateless).
▸ Global shared mutable state (aka the Database).
▸ Starting simple: Store data in a DB.
▸ Starting simple: Compute the aggregated views
on the fly.
13
DRIVETRIBE
▸ getUser(id: Id[User])
▸ getTribe(id: Id[Tribe])
▸ getArticle(id: Id[Article])
▸ countComments(id: Id[Article])
▸ countBumps(id: Id[Article])
▸ countViews(id: Id[Article])
DRIVETRIBE ARTICLE
14
DRIVETRIBE
▸ (6 queries per Item) x (Y items per
page)
▸ Cost of ranking and personalisation.
▸ Quite some work at read time.
▸ Slow. Not really Performant.
▸ Also very expensive to scale.
DRIVETRIBE FEED OF ARTICLES
15
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
16
DRIVETRIBE
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
WRITE TIME AGGREGATION
17
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
18
DRIVETRIBE
WRITE TIME AGGREGATION
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
19
DRIVETRIBE
▸ Compute the aggregation at write
time.
▸ Then a single query can fetch all the
views at once. That scales.
WRITE TIME AGGREGATION
20
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
21
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
▸ updateUserStats
22
DRIVETRIBE
WRITE TIME AGGREGATION - EVOLUTION
▸ sendNotification
▸ updateUserStats.
▸ What if we have a cache?
▸ Or a different database for search?
23
DRIVETRIBE
▸ Requests may need to fan out and
update multiple views.
▸ Eg: Authors can update their
names.
▸ This needs to be propagated to all
materialised views.
WRITE TIME AGGREGATION - FAN OUT
24
DRIVETRIBE
WRITE TIME AGGREGATION
▸ A simple user action is triggering an
unbound sequence of side effects.
▸ Most of which need network IO.
▸ Many of which can fail.
25
DRIVETRIBE
▸ What happens if one of them fails?
What happens if the server fails in
the middle?
▸ Inconsistent.
ATOMICITY
26
Atomicity?
DRIVETRIBE
▸ Concurrent mutations on a global
shared state entail race conditions.
▸ State mutations are destructive and
can not be (easily) undone.
▸ A bug can corrupt the data
permanently.
CONCURRENCY
27
Concurrency
DRIVETRIBE
▸ Model evolution becomes difficult.
Reads and writes are tightly
coupled.
▸ Migrations are scary.
▸ This is neither Extensible nor
Maintainable.
ITALIAN PASTA
28
Extensibility
DRIVETRIBE
▸ Let’s take a step back and try to decouple things.
▸ Clients send events to the API: “John liked Jeremy’s post”, “Maria updated
her profile”
▸ Events are immutable. They capture a user action at some point in time.
▸ Every application state instance can be modelled as a projection of those
events.
DIFFERENT APPROACH
29
DRIVETRIBE
▸ Persisting those yields an append-
only log of events.
▸ An event reducer can then produce
application state instances.
▸ Even retroactively. The log is
immutable.
▸ This is event sourcing.
30
DRIVETRIBE
▸ The write-time model (command
model) and the read time model
(query model) can be separated.
▸ Decoupling the two models allows to
optimise each path independently.
▸ This is known as Command Query
Responsibility Segregation aka
CQRS.
31
DRIVETRIBE
EVENT SOURCING APPROACH
32
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
33
Store Like Event
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
34
Store Like Event ArticleStatsReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
35
Store Like Event ArticleStatsReducer
NotificationReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
36
Store Like Event
ArticleStatsReducer
NotificationReducer
AuthorStatsReducer
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
37
Store Like Event
ArticleStatsReducer
NotificationReducer
AuthorStatsReducer
And so on..
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
38
Store Like Event
ArticleStatsReducer
NotificationReducer
AuthorStatsReducer
Sky Is the limit
Get Articles
Like!!
DRIVETRIBE
EVENT SOURCING APPROACH
39
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Extensibility?
Maintainability?
DRIVETRIBE
EVENT SOURCING APPROACH
40
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Performance?
DRIVETRIBE
EVENT SOURCING APPROACH
41
Store Like Event
ArticleStatsReducer
NotificationReducer
UserStatsReducer
Sky Is the limit
Get Articles
Like!!
Atomicity?
IMPLEMENTATION?
WE NEED A LOG
DRIVETRIBE
APACHE KAFKA
▸ Distributed, fault-tolerant, durable and fast append-only log.
▸ Can scale the thousands of nodes, producers and consumers.
▸ Each business event type can be stored in its own topic.
▸ The source of truth.
44
WE NEED A STREAM
PROCESSOR
DRIVETRIBE
APACHE FLINK
▸ Scalable, performant, mature.
▸ Elegant high level APIs in Scala.
▸ Powerful low level APIs for advanced tuning.
▸ Multiple battle-tested integrations.
▸ Very nice and active community.
46
WE NEED DATASTORE
DRIVETRIBE
ELASTICSEARCH
▸ Horizontally scalable document store.
▸ Rich and expressive query language.
▸ Dispensable. Can be replaced.
48
DRIVETRIBE
EVENT SOURCING IN PRACTICE
49
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
DRIVETRIBE
EVENT SOURCING IN PRACTICE
50
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
Websocket connection
DRIVETRIBE
EVENT SOURCING IN PRACTICE
51
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
Stateful
DRIVETRIBE
EVENT SOURCING IN PRACTICE
52
Store Raw events Consume raw events
Produce aggregated
views
Retrieve aggregated
views
DRIVETRIBE
BLUE/GREEN APPROACH
53
MIRROR
SHOW US SOME CODE!
DRIVETRIBE
EXAMPLE: COUNTING LIKES
▸ Users can “bump” a post if they like it
▸ Count how many users like a post
▸ Design goals:
▸ Modularity (DRY principle)
▸ Testability
▸ Conciseness
55
DRIVETRIBE
ARCHITECTURAL TRADE-OFFS
▸ Completely asynchronous
architecture
▸ Client requests are eventually
consistent
▸ This can cause duplicate events
despite exactly once semantics
▸ How do we solve this problem?
56
Like event
Like reducer
Persister
DRIVETRIBE
COUNTING LIKES: PROBLEM REPRESENTATION
57
▸ Like event
▸ Stream of likes
▸ Accumulate likes with a stateful
operator
▸ Count the number of users who
like a post
▸ Emit state to be persisted in
database
DRIVETRIBE
FIRST ATTEMPT: COUNTING WITH LONGS
▸ Represent counter as a Long
▸ Transform LikeEvent into
PostState
▸ Combine PostState
58
DRIVETRIBE
FIRST ATTEMPT: COUNTING WITH LONGS
▸ Transform LikeEvent into PostState
▸ Key by Post Id
▸ Combine PostState
▸ Emit new PostState
59
DRIVETRIBE
FIRST ATTEMPT: COUNTING WITH LONGS
▸ What happens when we have
duplicate events?
▸ Each event will be counted
separately, leading to wrong
results
▸ We want to count the number of
distinct users who liked a post
▸ Do we know of a data-structure
which handles deduplication?
60
DRIVETRIBE
SECOND ATTEMPT: COUNTING WITH SETS
▸ Replace Long with Set of User
Ids
▸ Set union is idempotent
▸ Eliminates duplicates
▸ Like count is modeled as the
size of the Set
61
Example of set idempotence
DRIVETRIBE
GENERALIZING OUR SOLUTION
▸ Two similar approaches
▸ Both have a combine method: combine or |+|
‣ What are the desired properties?
1. Associativity: (a |+| b) |+| c == a |+| (b |+| c)

=> data parallelism
2. Idempotence: a |+| b |+| b == a |+| b

=> deduplication
62
DRIVETRIBE
BAND ALGEBRA TO THE RESCUE
▸ The Band algebra consists of two things
1. A type with an API (typeclass, interface)
2. A set of laws
1. Associativity
2. Idempotence
63
DRIVETRIBE
POSTSTATE BAND
▸ Assume the Ids of two
PostStates are the same
▸ PostState with the combine
operator forms a Band algebra
▸ |+| is shorthand for combine
64
DRIVETRIBE
AGGREGATING WITH A BAND
65
DRIVETRIBE
IMPROVING OUR SOLUTION
▸ Band satisfies the properties to solve our problem
▸ Set has linear space complexity
▸ Can we use a better Band?
▸ HyperLogLog is an approximation algorithm with constant space complexity
which forms a Band
66
DRIVETRIBE
DESIGN GOALS RECAP
▸ Modularity
▸ Testability
▸ Conciseness
67
DRIVETRIBE
MODULARITY
▸ Focus on properties of the solution
▸ Replace with a different implementation with the same properties
▸ We have achieved one of our design goals: modularity
68
DRIVETRIBE
CONCISENESS
▸ Define a band instance
▸ Add some implicit
plumbing
▸ Simple and beautiful
code
69
DRIVETRIBE
TESTABILITY
▸ Property based testing (à la QuickCheck / ScalaCheck)
▸ Generate random inputs
▸ Verify invariants / laws / properties
▸ Automatically check laws with the Typelevel Cats Laws library
70
DRIVETRIBE
MORE ALGEBRAS
▸ Cats library in Scala provides a
complete algebra hierarchy
▸ Monoid: represent empty values
▸ Semilattice: aggregate out of
order events (CRDTs)
71
DRIVETRIBE
ADVANCED
▸ Automagically derive algebra instances for any case class with some type-
level trickery
▸ Merge multiple streams together with Coproducts and Semilattices
▸ Write an analytics engine based on a simple Monoid algebra

“An Algebra for Distributed Big Data Analytics” - Leonidas Fegaras
72
FIN

Mais conteúdo relacionado

Semelhante a Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta Rhei: designing distributed applications with streams."

Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with AnsibleMartin Etmajer
 
TIAD 2016 : Where DevOps is going next by George Miranda
TIAD 2016 : Where DevOps is going next by George MirandaTIAD 2016 : Where DevOps is going next by George Miranda
TIAD 2016 : Where DevOps is going next by George MirandaThe Incredible Automation Day
 
DevOps isn't something you buy - DevOpsDays Cape Town
DevOps isn't something you buy - DevOpsDays Cape TownDevOps isn't something you buy - DevOpsDays Cape Town
DevOps isn't something you buy - DevOpsDays Cape TownKen Mugrage
 
29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should Know29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should KnowMike Arnesen
 
Java Day Minsk 2016 Keynote about Microservices in real world
Java Day Minsk 2016 Keynote about Microservices in real worldJava Day Minsk 2016 Keynote about Microservices in real world
Java Day Minsk 2016 Keynote about Microservices in real worldКирилл Толкачёв
 
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEODangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEOAltinity Ltd
 
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Rainbird: Realtime Analytics at Twitter (Strata 2011)Rainbird: Realtime Analytics at Twitter (Strata 2011)
Rainbird: Realtime Analytics at Twitter (Strata 2011)Kevin Weil
 
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02Realtimeanalyticsattwitter strata2011-110204123031-phpapp02
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02matrixvn
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first designKyrylo Reznykov
 
Hadoop, Pig, and Twitter (NoSQL East 2009)
Hadoop, Pig, and Twitter (NoSQL East 2009)Hadoop, Pig, and Twitter (NoSQL East 2009)
Hadoop, Pig, and Twitter (NoSQL East 2009)Kevin Weil
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationTimothy Fitz
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth PresentationEric Ries
 
Asynchronous single page applications without a line of HTML or Javascript, o...
Asynchronous single page applications without a line of HTML or Javascript, o...Asynchronous single page applications without a line of HTML or Javascript, o...
Asynchronous single page applications without a line of HTML or Javascript, o...Robert Schadek
 
Shift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with AnsibleShift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with AnsibleJürgen Etzlstorfer
 
Vertafore: Database Evaluation - Selecting Apache Cassandra
Vertafore: Database Evaluation - Selecting Apache CassandraVertafore: Database Evaluation - Selecting Apache Cassandra
Vertafore: Database Evaluation - Selecting Apache CassandraDataStax Academy
 
Using Event Streams in Serverless Applications
Using Event Streams in Serverless ApplicationsUsing Event Streams in Serverless Applications
Using Event Streams in Serverless ApplicationsJonathan Dee
 
A Tale of Two Systems - Insights from Software Architecture
A Tale of Two Systems - Insights from Software ArchitectureA Tale of Two Systems - Insights from Software Architecture
A Tale of Two Systems - Insights from Software ArchitectureDavid Max
 
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki WattJourneys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki WattOpenCredo
 
Programming for non-programmers
Programming for non-programmersProgramming for non-programmers
Programming for non-programmersPancho Goldaracena
 
Resource Scheduling using Apache Mesos in Cloud Native Environments
Resource Scheduling using Apache Mesos in Cloud Native EnvironmentsResource Scheduling using Apache Mesos in Cloud Native Environments
Resource Scheduling using Apache Mesos in Cloud Native EnvironmentsSharma Podila
 

Semelhante a Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta Rhei: designing distributed applications with streams." (20)

Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
TIAD 2016 : Where DevOps is going next by George Miranda
TIAD 2016 : Where DevOps is going next by George MirandaTIAD 2016 : Where DevOps is going next by George Miranda
TIAD 2016 : Where DevOps is going next by George Miranda
 
DevOps isn't something you buy - DevOpsDays Cape Town
DevOps isn't something you buy - DevOpsDays Cape TownDevOps isn't something you buy - DevOpsDays Cape Town
DevOps isn't something you buy - DevOpsDays Cape Town
 
29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should Know29 Advanced Google Tag Manager Tips Every Marketer Should Know
29 Advanced Google Tag Manager Tips Every Marketer Should Know
 
Java Day Minsk 2016 Keynote about Microservices in real world
Java Day Minsk 2016 Keynote about Microservices in real worldJava Day Minsk 2016 Keynote about Microservices in real world
Java Day Minsk 2016 Keynote about Microservices in real world
 
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEODangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
Dangerous on ClickHouse in 30 minutes, by Robert Hodges, Altinity CEO
 
Rainbird: Realtime Analytics at Twitter (Strata 2011)
Rainbird: Realtime Analytics at Twitter (Strata 2011)Rainbird: Realtime Analytics at Twitter (Strata 2011)
Rainbird: Realtime Analytics at Twitter (Strata 2011)
 
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02Realtimeanalyticsattwitter strata2011-110204123031-phpapp02
Realtimeanalyticsattwitter strata2011-110204123031-phpapp02
 
Raising ux bar with offline first design
Raising ux bar with offline first designRaising ux bar with offline first design
Raising ux bar with offline first design
 
Hadoop, Pig, and Twitter (NoSQL East 2009)
Hadoop, Pig, and Twitter (NoSQL East 2009)Hadoop, Pig, and Twitter (NoSQL East 2009)
Hadoop, Pig, and Twitter (NoSQL East 2009)
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
Just In Time Scalability  Agile Methods To Support Massive Growth PresentationJust In Time Scalability  Agile Methods To Support Massive Growth Presentation
Just In Time Scalability Agile Methods To Support Massive Growth Presentation
 
Asynchronous single page applications without a line of HTML or Javascript, o...
Asynchronous single page applications without a line of HTML or Javascript, o...Asynchronous single page applications without a line of HTML or Javascript, o...
Asynchronous single page applications without a line of HTML or Javascript, o...
 
Shift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with AnsibleShift-left SRE: Self-healing on OpenShift with Ansible
Shift-left SRE: Self-healing on OpenShift with Ansible
 
Vertafore: Database Evaluation - Selecting Apache Cassandra
Vertafore: Database Evaluation - Selecting Apache CassandraVertafore: Database Evaluation - Selecting Apache Cassandra
Vertafore: Database Evaluation - Selecting Apache Cassandra
 
Using Event Streams in Serverless Applications
Using Event Streams in Serverless ApplicationsUsing Event Streams in Serverless Applications
Using Event Streams in Serverless Applications
 
A Tale of Two Systems - Insights from Software Architecture
A Tale of Two Systems - Insights from Software ArchitectureA Tale of Two Systems - Insights from Software Architecture
A Tale of Two Systems - Insights from Software Architecture
 
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki WattJourneys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
Journeys To Cloud Native Architecture: Sun, Sea And Emergencies - Nicki Watt
 
Programming for non-programmers
Programming for non-programmersProgramming for non-programmers
Programming for non-programmers
 
Resource Scheduling using Apache Mesos in Cloud Native Environments
Resource Scheduling using Apache Mesos in Cloud Native EnvironmentsResource Scheduling using Apache Mesos in Cloud Native Environments
Resource Scheduling using Apache Mesos in Cloud Native Environments
 

Mais de Flink Forward

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

Mais de Flink Forward (20)

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

Último

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxRemote DBA Services
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 

Último (20)

Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Flink Forward San Francisco 2018: Aris Koliopoulos & Alex Garella - "Panta Rhei: designing distributed applications with streams."