0% found this document useful (0 votes)
38 views

The Future of Distributed Programming in Dotnet

The document discusses the benefits of the actor model for building distributed and asynchronous applications. It describes how the actor model works by treating all entities as actors that communicate by passing messages. This allows actor state to be thread-safe without locks, makes failure handling resilient by restarting failed actors, and enables easy distribution across networks. It argues this model can reduce code footprint by writing code to manage one actor instance rather than many objects.

Uploaded by

pbc3199
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views

The Future of Distributed Programming in Dotnet

The document discusses the benefits of the actor model for building distributed and asynchronous applications. It describes how the actor model works by treating all entities as actors that communicate by passing messages. This allows actor state to be thread-safe without locks, makes failure handling resilient by restarting failed actors, and enables easy distribution across networks. It argues this model can reduce code footprint by writing code to manage one actor instance rather than many objects.

Uploaded by

pbc3199
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 59

Actor Model : The Future of

Distributed Programming

@petabridge Petabridge.com
A Business Story

@petabridge Petabridge.com
Successful Product

@petabridge Petabridge.com
Struggling Business

@petabridge Petabridge.com
A Radical New Product

@petabridge Petabridge.com
Allow our customers to
start conversations with
the specific types of users.

@petabridge Petabridge.com
Had to be done in real-
time for best results.

@petabridge Petabridge.com
Implementation

@petabridge Petabridge.com
Prototype 1: HTTP +
Database

@petabridge Petabridge.com
(Read after Write)

@petabridge Petabridge.com
Theory

@petabridge Petabridge.com
Reality

@petabridge Petabridge.com
What now?

@petabridge Petabridge.com
I have no idea how to build
this product

@petabridge Petabridge.com
And no vocabulary to
describe my problem

@petabridge Petabridge.com
Desperation

@petabridge Petabridge.com
Breakthrough!

@petabridge Petabridge.com
I had STATEFUL problem!

@petabridge Petabridge.com
But HTTP is a stateless
protocol

@petabridge Petabridge.com
Breakthrough #2

@petabridge Petabridge.com
I had STATEFUL, REACTIVE,
STREAM PROCESSING
problem!

@petabridge Petabridge.com
Akka and the Actor Model

@petabridge Petabridge.com
Reasoning

@petabridge Petabridge.com
OF COURSE IT DOESN'T

@petabridge Petabridge.com
.... Port everything to JVM?

@petabridge Petabridge.com
Lesser of Two Evils

@petabridge Petabridge.com
6 Months Later

@petabridge Petabridge.com
Petabridge

@petabridge Petabridge.com
The actor model creates
new possibilities for
developers

@petabridge Petabridge.com
The New Reality
Data is trivially
cheap to collect
and store
Users accept
nothing less
than excellence
Developers are
expected to
deliver more
@petabridge Petabridge.com
Actor Model to the Rescue!

@petabridge Petabridge.com
What is the actor model

@petabridge Petabridge.com
Everything is an actor.

@petabridge Petabridge.com
Actors work by passing each other
messages

@petabridge Petabridge.com
This is an actor

@petabridge Petabridge.com
These are messages

@petabridge Petabridge.com
@petabridge Petabridge.com
@petabridge Petabridge.com
3 Core Actor Abilities
1. Send messages
2. Create other
actors
3. Change behavior

@petabridge Petabridge.com
Benefit 1: actors make it
easy to write
asynchronous applications

@petabridge Petabridge.com
Benefit 2: actor state is
always thread-safe and
never needs locks!

@petabridge Petabridge.com
Actor Thread Safety
Actor state is never shared directly
with any other object

Actors share data via message-


passing

All messages are immutable

Actors process one message at a


time
@petabridge Petabridge.com
Process messages one at a time

@petabridge Petabridge.com
Benefit 3: actors are
resilient to failures

@petabridge Petabridge.com
Actors Exist as Hierarchies

@petabridge Petabridge.com
Parents Supervise Children

@petabridge Petabridge.com
When actors fail, parents
can restart them into their
original state

@petabridge Petabridge.com
Benefit 4: Actors can be
easily distributed across
the network

@petabridge Petabridge.com
Actors have globally unique
addresses

@petabridge Petabridge.com
But you dont need to
know an actors address.
(We use Actor References to
communicate with actors)

@petabridge Petabridge.com
ActorRefs have location
transparency

@petabridge Petabridge.com
Location of Actor in Cluster
Doesn't Matter

@petabridge Petabridge.com
Benefit 5: actors reduce
the size of your code
footprint

@petabridge Petabridge.com
Traditional OOP: write
code that manages 1000
entities

@petabridge Petabridge.com
With actor model: write
actor that manages 1
entity, run 1000 of them in
parallel

@petabridge Petabridge.com
New Ways of Looking at
Problems

@petabridge Petabridge.com
What does this make
possible for you?

@petabridge Petabridge.com
THANK YOU!

Email:
[email protected]

Twitter:
@aaronontheweb
@AkkaDotNet
@petabridge Petabridge.com
http://LearnAkka.net
@petabridge Petabridge.com

You might also like