75
Akka Fundamentals

Akka Fundamentals

Embed Size (px)

Citation preview

Page 1: Akka Fundamentals

Akka Fundamentals

Page 2: Akka Fundamentals

Agenda• Why Akka?

• Actor Model

• Actor API (Scala/Java)

• Fault Tolerance - Supervision

• Routing

Page 3: Akka Fundamentals
Page 4: Akka Fundamentals

Shared-State Concurrency

Page 5: Akka Fundamentals
Page 6: Akka Fundamentals
Page 7: Akka Fundamentals
Page 8: Akka Fundamentals

Users:- John Snow- Bran Stark

- Tyrion Lannister

Page 9: Akka Fundamentals
Page 10: Akka Fundamentals

Locks

Page 11: Akka Fundamentals
Page 12: Akka Fundamentals

• Error Prone• Hard to reason about• Hard to implement• Hard to debug• Ugly• Low level• …

Page 13: Akka Fundamentals

"All problems in computer science can be solved by another level of indirection"

David Wheeler

Page 14: Akka Fundamentals

The Actor Model

Page 15: Akka Fundamentals

A selection of events in the history of Actors:

• Carl Hewitt et al, 1973: Actors invented for research on AI

• Gul Agha, 1986: Actor languages and communication patterns

• Ericsson, 1995: first commercial use in Erlang/OTP for telecom platform

• Phillip Haller, 2006: implemented in the Scala stdlib

• Jonas Boner, 2009: creation of Akka

Principles of Reactive Programming, Week 5 Part 1

Page 16: Akka Fundamentals

An Actor

Page 17: Akka Fundamentals
Page 18: Akka Fundamentals

What’s the time?

Page 19: Akka Fundamentals

13:30What’s the time?

Page 20: Akka Fundamentals

What’s the time?13:30

Message Passing

Page 21: Akka Fundamentals

An Actor:

• Encapsulates state

• Has a behaviour (logic)

• Communicates via async messages

Page 22: Akka Fundamentals

The Actor API

Page 23: Akka Fundamentals
Page 24: Akka Fundamentals
Page 25: Akka Fundamentals
Page 26: Akka Fundamentals

State

Behaviour

Messages

Page 27: Akka Fundamentals
Page 28: Akka Fundamentals
Page 29: Akka Fundamentals
Page 30: Akka Fundamentals
Page 31: Akka Fundamentals
Page 32: Akka Fundamentals

State

Behaviour

Messages

Page 33: Akka Fundamentals

Fault Tolerance

Page 34: Akka Fundamentals
Page 35: Akka Fundamentals
Page 36: Akka Fundamentals
Page 37: Akka Fundamentals
Page 38: Akka Fundamentals
Page 39: Akka Fundamentals
Page 40: Akka Fundamentals

We’ve crossed thread boundaries

Page 41: Akka Fundamentals

This async boundary is explicit and a first class citizen in Akka

Page 42: Akka Fundamentals

• All Actor communication is message based

• Errors are messages

Page 43: Akka Fundamentals

Akka guides you in building fault tolerant applications byembracing failure.

“Let it crash”

Page 44: Akka Fundamentals

Akka’s fault tolerance policy:

• supervised Actors form a tree structure

• the supervisor needs to create its child

• failed Actor is terminated or restarted

• decision must be taken by one other Actor

Page 45: Akka Fundamentals

Supervision

Page 46: Akka Fundamentals

Boss

Worker A Worker B Worker C

Actors form hierarchies

Page 47: Akka Fundamentals

Worker A Worker B Worker C

Boss

Page 48: Akka Fundamentals

SupervisorStrategy

• OneForOneStrategy

• AllForOneStrategy

Page 49: Akka Fundamentals

Decider

Page 50: Akka Fundamentals
Page 51: Akka Fundamentals

Boss

Worker A Worker B Worker C

Page 52: Akka Fundamentals

Boss

Worker A Worker B Worker C

Page 53: Akka Fundamentals

Boss

Worker A Worker B Worker C

Page 54: Akka Fundamentals

Boss

Worker A Worker B Worker C

Page 55: Akka Fundamentals

Boss

Worker A Worker B Worker C

Page 56: Akka Fundamentals

Boss + Workers

System

Page 57: Akka Fundamentals

Boss + Workers

System

Page 58: Akka Fundamentals

Boss + Workers

System

Error Kernel Pattern

Page 59: Akka Fundamentals

Routing

Page 60: Akka Fundamentals

An abstraction over the delivery of messages from a Sender to Receiver(s)

Page 61: Akka Fundamentals
Page 62: Akka Fundamentals

Router

Page 63: Akka Fundamentals

• Akka provides several builtin Routers

• You may of course define your own

Page 64: Akka Fundamentals

Round Robin Router

D. Wyatt - Akka Concurrency

Page 65: Akka Fundamentals

Broadcast Router

D. Wyatt - Akka Concurrency

Page 66: Akka Fundamentals

Smallest Mailbox Router

D. Wyatt - Akka Concurrency

Page 67: Akka Fundamentals

Two types of routers:

1. Pool

• Router creates routees

2. Group

• You create routees and pass them in

Page 68: Akka Fundamentals

Pool

Page 69: Akka Fundamentals

application.conf

By Configuration

MyActor.scala

Page 70: Akka Fundamentals

Programatically

Page 71: Akka Fundamentals

Group

Page 72: Akka Fundamentals

By Configurationapplication.conf

MyActor.scala

Page 73: Akka Fundamentals

Programatically

Page 74: Akka Fundamentals
Page 75: Akka Fundamentals