38
BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD

Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

BASEL BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENF

HAMBURG KOPENHAGEN LAUSANNE MÜNCHEN STUTTGART WIEN ZÜRICH

Akka.NETScalable, distributed, parallel and fault tolerant.

Trivadis Late Lounge, 18.02.2016

Manuel Meyer, ZH-AD

Page 2: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Agenda

1. Erlang

2. Akka

3. Actor Model

4. Akka.NET Principles

Page 3: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang

Page 4: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model
Page 5: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang

–Parallel

–Highly Available

–Fault-Tolerant

–Hot-Pluggable

–> COPL

–> Build MSSRTS.

Page 6: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang

Prolog

Smalltalk

PLEX

F#

Clojure

Rust

Scala

Opa

Reia

Elixir

Dart

Akka

Page 7: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang QuickSort

Page 8: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang Ping-Pong

Page 9: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Erlang Users

CouchDB

RabbitMQ

SimpleDB (AWS)

Cowboy, Ranch, Bullet, Sheriff

ejabberd

Page 10: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka

Page 11: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka.NET

Page 12: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka.NET

Page 13: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Actor Model

Page 14: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Actor Model

Dr. Carl Hewitt (MIT) 1973

Mathematical Model of concurrent computation

„in the prospect of highly parallel computing machines with thousands of processors“

Great fit for:– Cloud– Internet– Mobile– IoT– Reactive– Everything

Page 15: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Actor Model

Page 16: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Actor Model

Page 17: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Actor Model

Actor = (Computation, Storage, Communication)

Page 18: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principles

Page 19: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principals

Everything is an Actor/Shared Nothing/Lightweight Actors

Distributed by Default/Divide and Conquer

Fault Tolerance/Supervision/Error-Kernel Pattern

Loose Coupling/Location Transparency/Dynamics

Page 20: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principals

Everything is an Actor/Shared Nothing/Lightweight Actors

Distributed by Default/Divide and Conquer

Fault Tolerance/Supervision/Error-Kernel Pattern

Loose Coupling/Location Transparency/Dynamics

Page 21: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Everything is an Actor/Shared Nothing/Lightweight Actors

Actor System

Actors (UntypedActor, ReceiveActor)

Props

Factories

Messages (POCO).

ActorSystem.Create("MyActorSystem");

Page 22: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Everything is an Actor/Shared Nothing/Lightweight Actors

3 Mio Actors per GB of RAM

Passive Actors.

Page 23: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principals

Everything is an Actor/Shared Nothing/Lightweight Actors

Distributed by Default/Divide and Conquer

Fault Tolerance/Supervision/Error-Kernel Pattern

Loose Coupling/Location Transparency/Dynamics

Page 24: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Distributed by Default/Divide and Conquer

1. Take a lot of work

2. Break it down until it is easy to deal with

3. Respond as needed.

Page 25: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principals

Everything is an Actor/Shared Nothing/Lightweight Actors

Distributed by Default/Divide and Conquer

Fault Tolerance/Supervision/Error-Kernel Pattern

Loose Coupling/Location Transparency/Dynamics

Page 26: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model
Page 27: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model
Page 28: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model
Page 29: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Fault Tolerance/Supervision/Error-Kernel Pattern

Page 30: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Fault Tolerance/Supervision/Error-Kernel Pattern

Page 31: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Fault Tolerance/Supervision/Error-Kernel Pattern

1. Error in child1

2. Child1 is suspended

3. System sends a Failure msg to Parent1 with exception

4. Parent1 issues a directive to Child1 telling it what to do.

5. Life goes on

Directives: Restart, Stop, Escalate, Resume (ignore)

Strategies: One-for-One, All-for-One, NumberOfRetries.

Page 32: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Akka Principals

Everything is an Actor/Shared Nothing/Lightweight Actors

Distributed by Default/Divide and Conquer

Fault Tolerance/Supervision/Error-Kernel Pattern

Loose Coupling/Location Transparency/Dynamics

Page 33: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Loose Coupling/Location Transparency/Dynamics

IActorReference

ActorPath:

akka.tcp://MyActorSystem@LTMME:9001/user/actorName1

Page 34: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Loose Coupling/Location Transparency/Dynamics

HOCON: Human-Optimized Config Object Notation

Page 35: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Demo:

Akka.NET

Page 36: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Resources

Akka.NET

– http://getakka.net

Petabridge Akka.NET Bootcamp

– https://petabridge.com/bootcamp/

Pluralsight (www.pluralsight.com)

– Akka.NET Fundamentals

– Stateful Reactive Concurrent SPAs with SignalR and Akka.NET

– Improving Message Throughput in Akka.NET

– Concurrent WPF Applications with Akka.NET

Page 37: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Agenda

1. Erlang

2. Akka

3. Actor Model

4. Akka.NET

Page 38: Akka - manuelmeyer.net · Akka.NET Scalable, distributed, parallel and fault tolerant. Trivadis Late Lounge, 18.02.2016 Manuel Meyer, ZH-AD. Agenda 1. Erlang 2. Akka 3. Actor Model

Thank you!Manuel [email protected]