Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_...

119
Akka: Simpler Concurrency, Scalability & Fault-tolerance through Actors Jonas Bonér @jboner Tuesday, July 20, 2010

Transcript of Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_...

Page 1: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka:Simpler Concurrency, Scalability &

Fault-tolerance through Actors

Jonas Bonér@jboner

Tuesday, July 20, 2010

Page 2: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

•Writing correct concurrent

applications is too hard

•Scaling out applications is

too hard

•Writing highly fault-tolerant

applications is too hard

We believe that...

Tuesday, July 20, 2010

Page 3: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

It doesn’t have to

be like this

We need to raise the abstraction level

Tuesday, July 20, 2010

Page 4: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Locks & Threads

are...

Tuesday, July 20, 2010

Page 5: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

...sometimes

plain evil

Tuesday, July 20, 2010

Page 6: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

...but always the

wrong default

Tuesday, July 20, 2010

Page 7: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

“Threads are to Concurrency as Witchcraft is to Physics”

“Hanging by a thread is the punishment for Shared State Concurrency”

- Gilad Bracha

Tuesday, July 20, 2010

Page 8: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Actorsone tool in the toolbox

Tuesday, July 20, 2010

Page 9: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

• Implements Message-Passing Concurrency

• Share!NOTHING

• Isolated lightweight processes

•Communicates through messages

•Asynchronous and non-blocking

• Each actor has a mailbox (message queue)

Actor Model of Concurrency

Tuesday, July 20, 2010

Page 10: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Actor Model of Concurrency

• Easier to reason about

• Raised abstraction level

• Easier to avoid

–Race conditions

–Deadlocks

–Starvation

–Live locks

Tuesday, July 20, 2010

Page 11: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Introducing

STM

Persistent

Distributed

RESTful Secure

Agents

Dataflow Open Source

Actors

Tuesday, July 20, 2010

Page 12: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

ARCHITECTURE

CORE

SERVICES

Tuesday, July 20, 2010

Page 13: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

ARCHITECTURE

ADD-ON

MODULES

Tuesday, July 20, 2010

Page 14: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

ARCHITECTURE

ENTERPRISE

MODULES

Tuesday, July 20, 2010

Page 15: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Actors

Tuesday, July 20, 2010

Page 16: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Two different models

• Thread-based

• Event-based

– Very!lightweight (600 bytes per actor)

– Can easily create!millions!on a single workstation (6.5 million on 4 G RAM)

– Does not consume a thread

Tuesday, July 20, 2010

Page 17: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!"#$%&'($!)!"#$%

!*"##!&'()*+,!$+)$,-#!-$*',!.

!!./01")$!1"/!$'()*+,!/!0

!!-$2!,+$+#1+!/!.

!!!!!"#$!"#$%!/2!

!!!!!!$'()*+,!3/!4

!!!!!!5,#)*6)7$'()*+,8

!!9

9

Actors

Tuesday, July 20, 2010

Page 18: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

03.&/)!-$*',:;

1"*!$'()*+,!/!<$*',=>?&'()*+,@

Create Actors

$'()*+, is an -$*',A+>

Tuesday, July 20, 2010

Page 19: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!<$*',!/!<$*',=>7,$4!BC-$*',7::88

Create Actors

create actor with constructor arguments

Tuesday, July 20, 2010

Page 20: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!$'()*+,!/!<$*',=>?&'()*+,@

$'()*+,:D*<,*

Start actors

Tuesday, July 20, 2010

Page 21: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!$'()*+,!/!<$*',=>?&'()*+,@:D*<,*

Start actors

Tuesday, July 20, 2010

Page 22: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!$'()*+,!/!<$*',=>?&'()*+,@:D*<,*

$'()*+,:D*'5

Stop actors

Tuesday, July 20, 2010

Page 23: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##%BC-$*',!$+)$,-#!-$*',!.

%%&1$//0-$%-$2!#)#*!/!.

!!!!:::!EE!$<66+F!<>*+,!GD*<,*H!

!!9

!!&1$//0-$%-$2!DI(*F'J)!/!.

!!!!:::!EE!$<66+F!K+>',+!GD*'5H

!!9

9

init & shutdown callbacks

Tuesday, July 20, 2010

Page 24: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!A+$(,D#1+-$*',!$+)$,-#!-$*',!.

!!./01")$!1"/!$'()*+,!/!0

!!D+6>:#F!/!LD+,1#$+M,+$(,D#1+N

!!-$2!,+$+#1+!/!.

!!!!!"#$!"#$%!/2!

!!!!!!$'()*+,!3/!4

!!!!!!D+6>!O!"#$%

!!9

9

the self reference

Tuesday, July 20, 2010

Page 25: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*%J',%+,!/!<$*',!.

!!!"#$!P',%7>)8!/2!>)78

9

Actorsanonymous

Tuesday, July 20, 2010

Page 26: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

$'()*+,!O!"#$%!

Send: !

fire-forget

Tuesday, July 20, 2010

Page 27: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!,+D(6*!/!7<$*',!OO!B+DD<Q+8:<D?R*,#)Q@

Send: !!

uses Future under the hood (with time-out)

Tuesday, July 20, 2010

Page 28: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!,+D(6*=5*#')!/!<$*',!OO!B+DD<Q+

1"*!,+D(6*!/!,+D(6*=5*#')

!!!!!!!!!!!!:Q+*=,S6D+7F+><(6*A+D(6*8

1"*!,+D(6*!/!,+D(6*=5*#'):Q+*=,S6D+7

!!!!)5/&4%,$4!ST$+5*#')7L"#U+F!'(*N888

Send: !!

returns an Option[ResultType] directly

Tuesday, July 20, 2010

Page 29: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

EE!,+*(,)D!<!>(*(,+

1"*!>(*(,+!/!<$*',!OOO!B+DD<Q+

>(*(,+:<J<#*

1"*!,+D(6*!/!>(*(,+:Q+*

:::

V(*(,+D:<J<#*=)+7W#D*7>(*4X!>(*YX!:::88

V(*(,+D:<J<#*-667W#D*7>(*4X!>(*YX!:::88

Send: !!!

returns the Future directly

Tuesday, July 20, 2010

Page 30: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!R'U+-$*',!$+)$,-#!-$*',!.

!!-$2!,+$+#1+!/!.

!!!!!"#$!ZD+,7)<U+8!/2!

!!!!!!EE!(D+!,+56C

!!!!!!D+6>:,+56C7L[#!N!3!)<U+8

!!9

9

Reply

Tuesday, July 20, 2010

Page 31: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!R'U+-$*',!$+)$,-#!-$*',!.

!!-$2!,+$+#1+!/!.

!!!!!"#$!ZD+,7)<U+8!/2!

!!!!!!EE!D*',+!<J<C!*I+!D+)F+,

!!!!!!EE!*'!(D+!6<*+,!',!

!!!!!!EE!D'U+JI+,+!+6D+

!!!!!!:::!/!D+6>:D+)F+,

!!9

9

Reply

Tuesday, July 20, 2010

Page 32: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!R'U+-$*',!$+)$,-#!-$*',!.

!!-$2!,+$+#1+!/!.

!!!!!"#$!ZD+,7)<U+8!/2!

!!!!!!EE!D*',+!<J<C!*I+!D+)F+,!>(*(,+

!!!!!!EE!*'!,+D'61+!6<*+,!',!

!!!!!!EE!D'U+JI+,+!+6D+

!!!!!!:::!/!D+6>:D+)F+,V(*(,+

!!9

9

Reply

Tuesday, July 20, 2010

Page 33: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

EE!F+>#)+!*I+!$<D+!$6<DD

!"#$%!*"##!A+Q#D*+,7(D+,M!ZD+,8

EE!$,+<*+!<)F!D+)F!<!)+J!$<D+!$6<DD!U+DD<Q+

<$*',!O!A+Q#D*+,7(D+,8

EE!*(56+D

<$*',!O!7(D+,)<U+X!5<DDJ',F8

EE!6#D*D

<$*',!O!W#D*7LK#66NX!LK'KNX!L<6#$+N8

Good immutable messages

Tuesday, July 20, 2010

Page 34: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Dispatchers

Tuesday, July 20, 2010

Page 35: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

&'($!)!\#D5<*$I+,D!.

!!-$2!)+JST+$(*',]<D+FS1+)*\,#1+)\#D5<*$I+,7)<U+M!R*,#)Q8

!!-$2!)+JST+$(*',]<D+FS1+)*\,#1+)P',%R*+<6#)Q\#D5<*$I+,7)<U+M!R*,#)Q8

!!-$2!)+J"I,+<F]<D+F\#D5<*$I+,7<$*',M!-$*',A+>8

!!

!!-$2!)+JA+<$*',]<D+F"I,+<F^''6S1+)*\,#1+)\#D5<*$I+,7)<U+M!R*,#)Q8

!!-$2!)+JA+<$*',]<D+FR#)Q6+"I,+<FS1+)*\,#1+)\#D5<*$I+,7)<U+M!R*,#)Q8

9

Dispatchers

Tuesday, July 20, 2010

Page 36: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!BC-$*',!$+)$,-#!-$*',!.

!!D+6>:F#D5<*$I+,!/!\#D5<*$I+,D

!!!!:)+J"I,+<F]<D+F\#D5<*$I+,7D+6>8

!!

!!:::

9

<$*',:F#D5<*$I+,!/!F#D5<*$I+,!EE!K+>',+!D*<,*+F

Set dispatcher

Tuesday, July 20, 2010

Page 37: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!F#D5<*$I+,!/

!!\#D5<*$I+,D:)+JST+$(*',]<D+FS1+)*\,#1+)\#D5<*$I+,

F#D5<*$I+,!!!!

!!!!:J#*I_+J"I,+<F^''6P#*I]'()F+F]6'$%#)Q`(+(+74008

!!!!:D+*&',+^''6R#a+74b8

!!!!:D+*B<T^''6R#a+74Yc8

!!!!:D+*d++5-6#1+"#U+e)B#66#D7b00008

!!!!:D+*A+f+$*#')^'6#$C7,$4!&<66+,A()D^'6#$C8

!!!!:K(#6F"I,+<F^''6

EventBasedDispatcherFluent DSL

Tuesday, July 20, 2010

Page 38: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

MessageQueues

• Unbounded LinkedBlockingQueue• Bounded LinkedBlockingQueue• Bounded ArrayBlockingQueue

Bounded SynchronousQueue

Plus different options per queue

Tuesday, July 20, 2010

Page 39: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!<$*',D!/!-$*',A+Q#D*,C:<$*',D

1"*!<$*',D!/!-$*',A+Q#D*,C:<$*',DV',?"g^S@

1"*!<$*',D!/!-$*',A+Q#D*,C:<$*',DV',7#F8

1"*!<$*',!/!-$*',A+Q#D*,C:<$*',V',7((#F8

-$*',A+Q#D*,C:>',+<$I7>)8

-$*',A+Q#D*,C:DI(*F'J)-66

ActorRegistry

Tuesday, July 20, 2010

Page 40: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Let it crash fault-tolerance

Tuesday, July 20, 2010

Page 41: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Stolen from

Erlang

Tuesday, July 20, 2010

Page 42: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

9 nines

Tuesday, July 20, 2010

Page 43: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 44: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 45: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 46: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 47: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 48: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 49: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

OneForOne fault handling strategy

Tuesday, July 20, 2010

Page 50: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

AllForOnefault handling strategy

Tuesday, July 20, 2010

Page 51: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

AllForOnefault handling strategy

Tuesday, July 20, 2010

Page 52: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

AllForOnefault handling strategy

Tuesday, July 20, 2010

Page 53: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

AllForOnefault handling strategy

Tuesday, July 20, 2010

Page 54: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Supervisor hierarchies

Tuesday, July 20, 2010

Page 55: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Supervisor hierarchies

Tuesday, July 20, 2010

Page 56: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Supervisor hierarchies

Tuesday, July 20, 2010

Page 57: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Supervisor hierarchies

Tuesday, July 20, 2010

Page 58: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

-66V',=)+R*,<*+QC7

!!U<T_,=>A+*,#+DX!

!!J#*I#)"#U+A<)Q+8

=)+V',=)+R*,<*+QC7

!!U<T_,=>A+*,#+DX!

!!J#*I#)"#U+A<)Q+8

Fault handlers

Tuesday, July 20, 2010

Page 59: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

6#)%7<$*',8!

()6#)%7<$*',8!

D*<,*W#)%7<$*',8

D5<J)W#)%?BC-$*',@

Linking

Tuesday, July 20, 2010

Page 60: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

*,<5ST#*!/!W#D*7

!$6<DD=>?R+,1#$+ST$+5*#')@X!

!$6<DD=>?^+,D#D*+)$+ST$+5*#')@8

trapExit

Tuesday, July 20, 2010

Page 61: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!R(5+,1#D',!$+)$,-#!-$*',!.

!!03.&/)!D+6>:;

!!*,<5ST#*!/!W#D*7$6<DD=>?"I,'J<K6+@8

!!><(6*[<)F6+,!/!

!!!!R'U+7=)+V',=)+R*,<*+QC7hX!h00088

!!-$2!,+$+#1+!/!.

!!!!!"#$!A+Q#D*+,7<$*',8!/2!

!!!!!!6#)%7<$*',8

!!9

9

Supervision

Tuesday, July 20, 2010

Page 62: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!V<(6*"'6+,<)*R+,1#$+!$+)$,-#!-$*',!.

!!:::

!!&1$//0-$%-$2!5,+A+D*<,*7,+<D')M!"I,'J<K6+8!/!.

!!!!:::!EE!$6+<)!(5!'$2&/$!,+D*<,*

!!9

!!&1$//0-$%-$2!5'D*A+D*<,*7,+<D')M!"I,'J<K6+8!/!.

!!!!:::!EE!#)#*!"2)$/!,+D*<,*

!!9

9

Manage failure

Tuesday, July 20, 2010

Page 63: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Remote Actors

Tuesday, July 20, 2010

Page 64: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

EE!(D+!I'D*!i!5',*!#)!$')>#Q

A+U'*+_'F+:D*<,*

A+U'*+_'F+:D*<,*7j6'$<6I'D*jX!kkkk8

Remote Server

Scalable implementation based on NIO (Netty) & Protobuf

Tuesday, July 20, 2010

Page 65: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

•Client-initated and managed

•Server-initiated and managed

Two types of

remote actors

Tuesday, July 20, 2010

Page 66: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

EE!U+*I'FD!#)!-$*',!$6<DD

D5<J)A+U'*+?BC-$*',@7I'D*X!5',*8!

D5<J)W#)%A+U'*+?BC-$*',@7I'D*X!5',*8

D*<,*W#)%A+U'*+7<$*',X!I'D*X!5',*8

Client-managedsupervision works across nodes

Tuesday, July 20, 2010

Page 67: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!<$*',^,'TC!/!D5<J)W#)%A+U'*+?BC-$*',@7

!!LF<,%D*<,NX!

!!kkkk8

<$*',^,'TC!O!U+DD<Q+

Client-managedmoves actor to server

client manages through proxy

Tuesday, July 20, 2010

Page 68: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

A+U'*+_'F+:,+Q#D*+,7

!!LD+,1#$+M#FNX!<$*',=>?BCR+,1#$+@8

Server-managedregister and manage actor on server

client gets “dumb” proxy handle

server part

Tuesday, July 20, 2010

Page 69: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!I<)F6+!/!A+U'*+&6#+)*:<$*',V',7

!!LD+,1#$+M#FNX!

!!LF<,%D*<,NX!

!!kkkk8

I<)F6+!O!U+DD<Q+

Server-managed

client part

Tuesday, July 20, 2010

Page 70: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

&6(D*+,:,+6<CB+DD<Q+7

!!$6<DD=>?"C5+=>-$*',@X!U+DD<Q+8

2&/%7+)F5'#)*!lm!&6(D*+,8!

!!D5<J)A+U'*+?"C5+=>-$*',@7!!

!!!!!!!!!!!!!!+)F5'#)*:I'D*X!

!!!!!!!!!!!!!!+)F5'#)*:5',*8

Cluster Membership

Tuesday, July 20, 2010

Page 71: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

STManother tool in the toolbox

Tuesday, July 20, 2010

Page 72: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

60

What is STM?

Tuesday, July 20, 2010

Page 73: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

STM: overview• See the memory (heap and stack) as a transactional dataset

• Similar to a database

• begin

• commit

• abort/rollback

• Transactions are retried automatically upon collision

• Rolls back the memory on abort

Tuesday, July 20, 2010

Page 74: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

• Separates Identity from Value

- Values are immutable

- Identity (Ref) holds Values

•Change is a function

•Compare-and-swap (CAS)

•Abstraction of time

•Must be used within a transaction

Managed References

Tuesday, July 20, 2010

Page 75: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!,+>!/!A+>7B<5?R*,#)QX!ZD+,@788

1"*!(D+,D!/!,+>:Q+*

1"*!)+JZD+,D!/!(D+,D!3!7LK#66N!m2!ZD+,7LK#66N88

,+>:DJ<57)+JZD+,D8

Managed References

Tuesday, July 20, 2010

Page 76: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!(D+,D!/!",<)D<$*#')<6B<5?R*,#)QX!ZD+,@78

1"*!(D+,D!/!",<)D<$*#')<6n+$*',?ZD+,@78

Transactionaldatastructures

Tuesday, July 20, 2010

Page 77: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

03.&/)!",<)D<$*#'):W'$<6:;

<*'U#$!.

!!:::

!!<*'U#$!.!EE!)+D*+F!*,<)D<$*#')D!$'U5'D+

!!!!:::!EE!F'!D'U+*I#)Q!J#*I#)!<!*,<)D<$*#')

!!9

9

STM: API

Tuesday, July 20, 2010

Page 78: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Actors + STM = Transactors

Tuesday, July 20, 2010

Page 79: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!ZD+,A+Q#D*,C!$+)$,-#!",<)D<$*',!.

!!

!!./01")$%1"*!D*',<Q+!/!

!!!!",<)D<$*#')<6B<5?R*,#)QX!ZD+,@78

!!-$2!,+$+#1+!/!.

!!!!!"#$!_+JZD+,7(D+,8!/2

!!!!!!D*',<Q+!3!7(D+,:)<U+!m2!(D+,8

!!!!:::!

!!9

9

Transactors

Tuesday, July 20, 2010

Page 80: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 81: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Tuesday, July 20, 2010

Page 82: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Tuesday, July 20, 2010

Page 83: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Tuesday, July 20, 2010

Page 84: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 85: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 86: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 87: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 88: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 89: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Tuesday, July 20, 2010

Page 90: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Transaction fails

Tuesday, July 20, 2010

Page 91: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsStart transaction

Send message

Update statewithin transaction

Transaction fails

Tuesday, July 20, 2010

Page 92: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 93: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 94: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 95: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 96: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 97: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Transactors

Tuesday, July 20, 2010

Page 98: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

TransactorsTransactionautomatically

retried

Tuesday, July 20, 2010

Page 99: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Agentsyet another tool in the toolbox

Tuesday, July 20, 2010

Page 100: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!<Q+)*!/!-Q+)*7h8

EE!D+)F!>()$*#')!<DC)$I,')'(D6C

<Q+)*!D+)F!7;!3!48!

1"*!,+D(6*!/!<Q+)*78!EE!F+,+>

:::!EE!(D+!,+D(6*

<Q+)*:$6'D+

Agents

Cooperates with STMTuesday, July 20, 2010

Page 101: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

(some of the) Modules

Tuesday, July 20, 2010

Page 102: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Spring

Tuesday, July 20, 2010

Page 103: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

lK+<)D2

!!l<%%<M<$*#1+m'Kf+$*!#F/jUC-$*#1+=Kf+$*j!

!!!!!!!!!!!!!!!!!!!!!!*<,Q+*/j$'U:K#a:BC^=o=j!

!!!!!!!!!!!!!!!!!!!!!!*,<)D<$*#')<6/j*,(+j!

!!!!!!!!!!!!!!!!!!!!!!*#U+'(*/j4000j!E2

!!:::

lEK+<)D2

Spring integration

Tuesday, July 20, 2010

Page 104: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

6<%%<MD(5+,1#D#')!#F7jUCmD(5+,1#D',j8

!!6<%%<M,+D*<,*9D*,<*+QC!><#6'1+,7j-66V',=)+j!

!!!!!!!!!!!!!!!!!!!!!!!!!,+*,#+D7jpj!

!!!!!!!!!!!!!!!!!!!!!!!!!*#U+,<)Q+7j4000j8

!!!!6<%%<M*,<59+T#*D8

! !!6<%%<M*,<59+T#*8f<1<:#':e=ST$+5*#')6;<%%<M*,<59+T#*8

!!!!6;<%%<M*,<59+T#*D8

!!6;<%%<M,+D*<,*9D*,<*+QC8

!!6<%%<M<$*#1+9'Kf+$*D8

!!!!6<%%<M<$*#1+9'Kf+$*!*<,Q+*7j$'U:K#a:BC^=o=j!

!!!!!!!!!!!!!!!!!!!!!!!!6#>+$C$6+7j5+,U<)+)*j!

!!!!!!!!!!!!!!!!!!!!!!!!*#U+'(*7j4000j8

!!!!!!6<%%<M,+D*<,*9$<66K<$%D!5,+7j5,+A+D*<,*j!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!5'D*7j5'D*A+D*<,*j;8

!!!!6;<%%<M<$*#1+9'Kf+$*8

!!6;<%%<M<$*#1+9'Kf+$*D8

6;<%%<MD(5+,1#D#')8

Spring integration

Tuesday, July 20, 2010

Page 105: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Camel

Tuesday, July 20, 2010

Page 106: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!BC&')D(U+,!$+)$,-#!-$*',!40)5!&')D(U+,!.

!!-$2!+)F5'#)*Z,#!/!j>#6+MF<*<E#)5(*j

!

!!-$2!,+$+#1+!/!.

!!!!!"#$!UDQM!B+DD<Q+!/2!

!!!!!!6'Q:#)>'7j,+$+#1+F!qDj!>',U<*

!!!!!!UDQ:K'FC-D7$6<DD=>?R*,#)Q@88

!!9

9

Camel: consumer

Tuesday, July 20, 2010

Page 107: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!BC&')D(U+,!$+)$,-#!-$*',!40)5!&')D(U+,!.

!!-$2!+)F5'#)*Z,#!/!

!!!!jf+**CMI**5MEE0:0:0:0MccrrE$<U+6E*+D*j

!

!!-$2!,+$+#1+!/!.

!!!!!"#$!UDQM!B+DD<Q+!/2!

!!!!!!,+56C7j[+66'!qDj!>',U<*!

!!!!!!!!!!!!UDQ:K'FC-D7$6<DD=>?R*,#)Q@88

!!9

9

Camel: consumer

Tuesday, July 20, 2010

Page 108: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

!*"##!&'U+*^,'F($+,!

!!$+)$,-#!-$*',!40)5!^,'F($+,!.

!!

!!-$2!+)F5'#)*Z,#!/!

!!!!j$'U+*FMEE6'$<6I'D*Mc444E*+D*j

9

Camel: producer

Tuesday, July 20, 2010

Page 109: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

1"*!5,'F($+,!/!<$*',=>?&'U+*^,'F($+,@:D*<,*

1"*!*#U+!/!j&(,,+)*!*#U+M!j!3!,$4!\<*+

5,'F($+,!O!*#U+

Camel: producer

Tuesday, July 20, 2010

Page 110: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Persistence

Tuesday, July 20, 2010

Page 111: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Persistence API

EE!*,<)D<$*#')<6!&<DD<)F,<mK<$%+F!B<5!

1"*!U<5!/!&<DD<)F,<R*',<Q+:)+JB<5

EE!*,<)D<$*#')<6!A+F#DmK<$%+F!n+$*',!

1"*!1+$*',!/!A+F#DR*',<Q+:)+Jn+$*',

EE!*,<)D<$*#')<6!B')Q'mK<$%+F!A+>

1"*!,+>!/!B')Q'R*',<Q+:)+JA+>

Turns the STM into ACID

Tuesday, July 20, 2010

Page 112: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Get data by id

EE!*,<)D<$*#')<6!&<DD<)F,<mK<$%+F!B<5!

1"*!U<5!/!&<DD<)F,<R*',<Q+:Q+*B<57((#F8

EE!*,<)D<$*#')<6!A+F#DmK<$%+F!n+$*',!

1"*!1+$*',!/!A+F#DR*',<Q+:Q+*n+$*',7((#F8

EE!*,<)D<$*#')<6!B')Q'mK<$%+F!A+>

1"*!,+>!/!B')Q'R*',<Q+:Q+*A+>7((#F8

Tuesday, July 20, 2010

Page 113: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

For Redis only (so far)

1"*!s(+(+M!^+,D#D*+)*`(+(+?S6+U+)*"C5+@!/!!!

!!A+F#DR*',<Q+:)+J`(+(+

1"*!D+*M%^+,D#D*+)*R',*+FR+*?S6+U+)*"C5+@!/

!!A+F#DR*',<Q+:)+JR',*+FR+*

Tuesday, July 20, 2010

Page 114: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Akka Deployment

Tuesday, July 20, 2010

Page 115: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Deploy as dependency JAR in WEB-INF/lib etc.

Run as microkernel

Soon OSGi-enabled, then drop in any OSGi container (Spring DM server, Karaf etc.)

Deployment

Tuesday, July 20, 2010

Page 116: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

REST

Comet

Security

...and much more

Web

GuiceJTA

AMQP

Tuesday, July 20, 2010

Page 117: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

Learn morehttp://akkasource.org

Tuesday, July 20, 2010

Page 118: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

EOFTuesday, July 20, 2010

Page 119: Simpler Concurrency, Scalability & Fault-tolerance through …assets.en.oreilly.com/1/event/45/Akka_ Simpler Scalability, Fault... · Akka: Simpler Concurrency, Scalability & Fault-tolerance

?Tuesday, July 20, 2010