Händelsestyrda system med

Akka
Actors
Johan Andrén
johan.andren@mejsla.se
Moores lag
2,6 miljarder

1 miljon

2300

1971

1990

idag
No Problems!
Oh No, Problems!
•
•
•
•
•
•

Race conditions
Korrupt data
Deadlocks
Thread contention
Livelocks
Priority Inversion
Multitrådning är SVÅRT
•
•
•
•

Att skriva
Att testa
Att debugga
Att resonera kring

Vi behöver en bättre modell!
B

C

D

A

F

E
händelsestyrda

system med

ACTORS
Tillstånd

Inkorg

Enda sättet att
interagera

Beteende
•
•
•
•
•

Entrådsmodell - lätt att förstå
Inget delat tillstånd
Lättviktig
Lös koppling
Lätt att testa
Actor A

Actor B
Envägskommunikation
Actor A

Actor B
Reagera, inte vänta
Actor A

Actor B
Lastbalansera
Actor A

Actor B1
router

Actor B2
Pipe/Filter
Actor A

Actor F
(filter)

Actor B
Parallellisera
Actor C1

Actor A

Actor B
(chef)

Actor C2

Actor C2
•
•
•

Inget jobb, ingen tråd!
Async - aldrig vänta aktivt på svar
Lös koppling
JVM

B

C

D

A

F

E
JVM 1

B

C

JVM 2

D

A

F

E
Ingen skillnad på
•
•
•
•

Två actors på en kärna, en i taget
Två actors på en kärna, samtidigt
Två actors på varsin kärna
Två actors på varsin server
Felhantering

i Actorsystem
Traditionell modell
•
•
•

Läckage mellan skikt
Upptäcka samtidiga fel
Hur veta hur ett fel skall hanteras?
Felhantering med Actors
(förälder)

Actor A

Actor X

Actor Z
Felhantering med Actors
(förälder)

Actor A

Actor X

Actor Z
Felhantering med Actors
Actor A

Actor X

Actor Z
”Supervision”
•
•

Vattentäta skott
Explicit vad som kommuniceras
tillbaka

•

Separation av felhantering och

•

Möjligt att hantera samtidiga fel

affärslogik
Och mer!
•
•
•
•
•

STM
Remoting
Klustring utan SPoF
Integration med MQs
Eventbus

http://akka.io
Recap
•
•
•
•

Enkel men extremt kraftfull modell
Lättviktigt och snabbt
Lös koppling
Självläkande system

Johan Andrén
johan.andren@mejsla.se

Akka frukostseminarium