SlideShare a Scribd company logo
1 of 32
Einführung in das Actor Model mit .net
akka.net
Über mich
 Software Engineer, Principal @ Progress Software
 ralph.waldenmaier@progress.com
 @eigeneachse
 Sprecher auf Konferenzen und User Groups
 Freier Autor für donetpro
Ralph Waldenmaier
Ziel
 Enwticklung von Anwendungen
 Skalierbar
 Fehlertolerant
 Selbst heilend
 Verteilt
 Was ist das Actor Model
 Was ist akka.net
Actor Model – Die Theorie
Quelle: https://de.wikipedia.org/wiki/Actor_Model
Wikipedia (https://de.wikipedia.org/wiki/Actor_Model):
„Das Actor Model (deutsch Aktorenmodell) ist in der Informatik ein Modell für
nebenläufige Rechnungen bzw. Programme. Diese werden in nebenläufige
Einheiten, sog. Aktoren, unterteilt, die ausschließlich über
Nachrichtenaustausch kommunizieren.“
 1973
 Carl Hewitt, Peter Bishop und Richard Steiger
 Implementierungen
 Erlang
 Scala
 C#
Actor Model – Die Theorie #2
Quelle: https://de.wikipedia.org/wiki/Actor_Model
“An island of sanity in a sea of concurrency”
“Shared nothing”
“Black box”
“Location transparent”
“Distributable by design”
 Drei Grundsätze
 Send: Nachrichten an sich selbst oder andere Aktoren verschicken
 Create: Neue Aktoren erzeugen
 Behavior: Das eigene Verhalten ändern
Wer nutzt das?
 WhatsApp (Erlang)
 RabbitMQ (Erlang)
 CouchDB (Erlang)
 LinkedIn.com (JVM Akka)
 Walmart.com (JVM Akka)
 Bank of America Merrill Lynch (Akka.net)
 Halo ( Project Orleans )
Wofür verwende ich das?
 Alternative zu Threading
 Message routing
 State machines
 CQRS / Event Driven Design
 IoT
 Singleton
.net Entwicklung heute
Service
BLL
DAO
Telerik Data Access
DB
DAO2
RestHandler
WebApi
Service
BLL
DAO
Telerik Data Access
DB
DAO2
RestHandler
WebApi
Service
BLL
DAO
Telerik Data Access
DB
DAO2
RestHandler
WebApi
CPU 2
MSMQ
Server 1 Server 2
Skalierung
 Parallel LINQ
 TPL – async/await
 Threads
 WCF
 WebAPI
 MSMQ / RabbitMQ / Azure Queues
Elastic?
ActorX
ActorY
ActorZCPU 2
Server 1 Server 2
Skalierung mit akka.net
Elastic!
Akka.Actor
Akka.Remote
Akka.Cluster
ActorX
ActorY
ActorZ
Akka.net
 Initial Entwickelt von Roger Johansson und Aaron Stannard
 OpenSource ( Apache 2 License )
 Orientiert sich an den Features der JVM Akka Implementierung
 ~ 5 core Entwickler
 ~ 70 github contributor
 Akka.net Version 1.0 – Q1/2015
 Aktuell 1.04
 C# und F# API
 .net und Mono
 ~ 50 mio msg/sec auf einer Maschine
 ~ 2,5 millionen actors / GB RAM
 Reactive Manifesto ( Responsive, Resilient, Elastic, Message Driven )
akka.net
Wie funktioniert ein Actor?
Quelle: http://getakka.net/docs/concepts/actors
Actor Lifecycle
Actor
initializes
Starting
Actor is up
and now
able to
process
messages
Receiving
Actor
cleans up
Stopping
Actor is
dead
Terminated
Actor is
going to
restart
Restarting
PreStart()
PostRestart()
PreRestart()
PostStop()
PostStop()
DispatcherThreadPool
Actor1 Actor1 Actor2
Actor2 Actor3
Actor4 Actor4
Actor1
Actor3 Actor4
Actor2
Actor1
Actor3
Actor2
Time
 ThreadPoolDispatcher ( default, max concurrency )
 TaskDispatcher ( TPL )
 CurrentSynchronizationContextDispatcher ( UI sync )
 …
Demo Akka.Actor
 Hello World
 Actor System
 ReceiveActor
 ActorRef
Server 1
ActorX
ActorY
ActorZ
Demo Akka.Remote #1
 Chat app
 ActorSelection
 RemoteActorRefProvider Akka.Remote
ActorX
ActorY
ActorZ
ActorX
ActorY
ActorZ
Demo Akka.Remote #2
 Remote deployment
 Remote daemon
Akka.Remote
ActorX
ActorY
ActorZ
ActorX
ActorY
ActorZ
ActorA*
Router
 Leitet Nachrichten an „routee“ Actors weiter
 Group vs. Pool Router
 RoundRobinRouter
 ScatterGatherFirstCompletedRouter
 BroadcastRouter
 ConsistentHashingRouter
 SmallestMailboxRouter
 Elastische pools
Router konfiguration
akka.actor.deployment {
/some-pool {
router = round-robin-pool
nr-of-instances = 5
}
}
// Hocon config
var router = system.ActorOf(Props.Create<Worker>().WithRouter(FromConfig.Instance),
"some-pool");
// Code config
var router = system.ActorOf(Props.Create<Worker>().WithRouter(
new RoundRobinPool(5)), "some-pool");
RoundRobinRouter
12
1
2
3
34
4
Router
Routee1
Routee2
Routee3
Eingang Ausgang
ScatterGatherFirstCompleted
1
2
3
Router
Routee1
Routee2
Routee3
Eingang Ausgang
Sender
?
!
Elastische pools
akka.actor.deployment
{
/my-router
{
router = round-robin-pool
resizer
{
enabled = on
lower-bound = 1
upper-bound = 10
messages-per-resize = 10
ramp-up-rate = 0.2
pressure-threshold = 1
backoff-threshold = 0.3
…
}
}
}
Demo Akka.Routing
 RoundRobin
 Deployment configuration
Supervision
 Jeder Actor wird durch einen anderen Actor überwacht, welcher entscheidet,
wie im Fehlerfall zu reagieren ist.
 Restart
 Teminate
 Ignore and Resume
 Escalate an eigenen Supervisor
 Selbstheilung
ErrorHandling – OneForOne
Quelle: http://getakka.net/docs/concepts/supervision
ErrorHandling – AllForOne
Quelle: http://getakka.net/docs/concepts/supervision
Error handling
protected override SupervisorStrategy SupervisorStrategy()
{
return new OneForOneStrategy( // oder AllForOneStrategy
maxNumberOfRetries: 10,
duration: TimeSpan.FromSeconds(30),
decider: x =>
{
if (x is ArithmeticException) return Directive.Resume;
else if (x is NotSupportedException) return Directive.Stop;
else if (x is ArgumentOutOfRangeException) return Directive.Escalate;
else return Directive.Restart;
});
}
Switchable Behavior
private void Lebendig(){
…//other code
if (this.lebenspunkte <= 0)
this.Become(Tot);
…
}
private void Tot(){
Receive<Wiederbeleben>(() => {
this.lebenspunkte = this.maxLebenspunkte;
this.Become(Lebendig);
});
}
Weitere Features
 Cluster
 Cluster Sharding
 Dependency Injection – Autofac
 Persistence
 Finite State Machines
 F# API
Wie gehts weiter?
 http://getakka.net/
 https://github.com/akkadotnet/akka.net/tree/dev/src/examples
 https://gitter.im/akkadotnet/akka.net
 https://petabridge.com/bootcamp/ (kostenlos)
 https://petabridge.com/
Q & A
 http://www.dotnet-developer-conference.de/
 30. November bis 02. Dezember 2015
 Pullman Hotel Köln
 Frühbucher
 Bis 16. Oktober

More Related Content

Viewers also liked

INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores
INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores
INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores Aurelio Foderà
 
2014 Trend: Single-Purpose Apps
2014 Trend: Single-Purpose Apps2014 Trend: Single-Purpose Apps
2014 Trend: Single-Purpose AppsDaren Fuchs
 
1º trabajo de informatica (jm y abderraham)
 1º trabajo de informatica (jm y abderraham) 1º trabajo de informatica (jm y abderraham)
1º trabajo de informatica (jm y abderraham)jmnt
 
eCoaches und eLearning: Wissenstransfer in der Eifel
eCoaches und eLearning: Wissenstransfer in der EifeleCoaches und eLearning: Wissenstransfer in der Eifel
eCoaches und eLearning: Wissenstransfer in der EifelRealizing Progress
 
Tribus Verbis Te Volo
Tribus Verbis Te VoloTribus Verbis Te Volo
Tribus Verbis Te VoloMariló Limo
 
How to Sell in a Snowstorm for Valentines Day 2014
How to Sell in a Snowstorm for Valentines Day 2014How to Sell in a Snowstorm for Valentines Day 2014
How to Sell in a Snowstorm for Valentines Day 2014Arthur Klein
 
Mmsr informe final i trimestre
Mmsr informe final i trimestreMmsr informe final i trimestre
Mmsr informe final i trimestrejose_silves
 
BIAP Convoy Briefing 051805
BIAP Convoy Briefing 051805BIAP Convoy Briefing 051805
BIAP Convoy Briefing 051805Robert Shaver
 
Certificacion coaching 2017 pagina iclcoach
Certificacion coaching 2017 pagina iclcoachCertificacion coaching 2017 pagina iclcoach
Certificacion coaching 2017 pagina iclcoachLuis Lopez
 
como hacer una factura en excel
como hacer una factura en excelcomo hacer una factura en excel
como hacer una factura en excelJorge Martinez
 

Viewers also liked (15)

BROCHURE INSPIRACIÓN 2016
BROCHURE INSPIRACIÓN 2016BROCHURE INSPIRACIÓN 2016
BROCHURE INSPIRACIÓN 2016
 
INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores
INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores
INTERNET SEGURO Las oportunidades y los riesgos de la red para los menores
 
2014 Trend: Single-Purpose Apps
2014 Trend: Single-Purpose Apps2014 Trend: Single-Purpose Apps
2014 Trend: Single-Purpose Apps
 
1º trabajo de informatica (jm y abderraham)
 1º trabajo de informatica (jm y abderraham) 1º trabajo de informatica (jm y abderraham)
1º trabajo de informatica (jm y abderraham)
 
eCoaches und eLearning: Wissenstransfer in der Eifel
eCoaches und eLearning: Wissenstransfer in der EifeleCoaches und eLearning: Wissenstransfer in der Eifel
eCoaches und eLearning: Wissenstransfer in der Eifel
 
Tribus Verbis Te Volo
Tribus Verbis Te VoloTribus Verbis Te Volo
Tribus Verbis Te Volo
 
Xaltia Vas General
Xaltia Vas GeneralXaltia Vas General
Xaltia Vas General
 
How to Sell in a Snowstorm for Valentines Day 2014
How to Sell in a Snowstorm for Valentines Day 2014How to Sell in a Snowstorm for Valentines Day 2014
How to Sell in a Snowstorm for Valentines Day 2014
 
Kiss Fanzine Chile #4
Kiss Fanzine Chile #4Kiss Fanzine Chile #4
Kiss Fanzine Chile #4
 
Mmsr informe final i trimestre
Mmsr informe final i trimestreMmsr informe final i trimestre
Mmsr informe final i trimestre
 
Reglas tag rugby
Reglas tag rugbyReglas tag rugby
Reglas tag rugby
 
BIAP Convoy Briefing 051805
BIAP Convoy Briefing 051805BIAP Convoy Briefing 051805
BIAP Convoy Briefing 051805
 
Certificacion coaching 2017 pagina iclcoach
Certificacion coaching 2017 pagina iclcoachCertificacion coaching 2017 pagina iclcoach
Certificacion coaching 2017 pagina iclcoach
 
Mi familia jinli
Mi familia jinliMi familia jinli
Mi familia jinli
 
como hacer una factura en excel
como hacer una factura en excelcomo hacer una factura en excel
como hacer una factura en excel
 

Similar to Einführung in das Actor Model mit Akka.net

Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenQAware GmbH
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenAndreas Schreiber
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureMatthias Köster
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Rubyschlauch
 
Handlungsmacht 2008
Handlungsmacht 2008Handlungsmacht 2008
Handlungsmacht 2008Ralf Klamma
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsRamon Anger
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEhwilming
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisAlexander Papaspyrou
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & ToolsUlrich Krause
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101gueste4be40
 
Reaktive Applikationen mit Scala, Play und Akka
Reaktive Applikationen mit Scala, Play und AkkaReaktive Applikationen mit Scala, Play und Akka
Reaktive Applikationen mit Scala, Play und AkkaMarkus Klink
 

Similar to Einführung in das Actor Model mit Akka.net (19)

Concurrency Paradigmen
Concurrency ParadigmenConcurrency Paradigmen
Concurrency Paradigmen
 
Akka.NET Teil 1 - Verteilte Architektur von Beginn an
Akka.NET Teil 1 - Verteilte Architektur von Beginn anAkka.NET Teil 1 - Verteilte Architektur von Beginn an
Akka.NET Teil 1 - Verteilte Architektur von Beginn an
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Reaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen WortenReaktive Programmierung in verständlichen Worten
Reaktive Programmierung in verständlichen Worten
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
 
Architektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für ClojureArchitektur einer Eclipse DLTK IDE für Clojure
Architektur einer Eclipse DLTK IDE für Clojure
 
Tech-Talk: Python vs. Ruby
Tech-Talk: Python vs. RubyTech-Talk: Python vs. Ruby
Tech-Talk: Python vs. Ruby
 
Handlungsmacht 2008
Handlungsmacht 2008Handlungsmacht 2008
Handlungsmacht 2008
 
Chaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps TeamsChaos Kata Fitnesstraining für DevOps Teams
Chaos Kata Fitnesstraining für DevOps Teams
 
openHAB @ JUG Stuttgart
openHAB @ JUG StuttgartopenHAB @ JUG Stuttgart
openHAB @ JUG Stuttgart
 
Enterprise JS
Enterprise JS Enterprise JS
Enterprise JS
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 
JPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SEJPA – Der Persistenz-­Standard in der Java EE und SE
JPA – Der Persistenz-­Standard in der Java EE und SE
 
Sich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der PraxisSich selbst verstehen – der ELK-Stack in der Praxis
Sich selbst verstehen – der ELK-Stack in der Praxis
 
Templates, Code & Tools
Templates, Code & ToolsTemplates, Code & Tools
Templates, Code & Tools
 
2009 03 17 Spring101
2009 03 17 Spring1012009 03 17 Spring101
2009 03 17 Spring101
 
Reaktive Applikationen mit Scala, Play und Akka
Reaktive Applikationen mit Scala, Play und AkkaReaktive Applikationen mit Scala, Play und Akka
Reaktive Applikationen mit Scala, Play und Akka
 

Einführung in das Actor Model mit Akka.net

  • 1. Einführung in das Actor Model mit .net akka.net
  • 2. Über mich  Software Engineer, Principal @ Progress Software  ralph.waldenmaier@progress.com  @eigeneachse  Sprecher auf Konferenzen und User Groups  Freier Autor für donetpro Ralph Waldenmaier
  • 3. Ziel  Enwticklung von Anwendungen  Skalierbar  Fehlertolerant  Selbst heilend  Verteilt  Was ist das Actor Model  Was ist akka.net
  • 4. Actor Model – Die Theorie Quelle: https://de.wikipedia.org/wiki/Actor_Model Wikipedia (https://de.wikipedia.org/wiki/Actor_Model): „Das Actor Model (deutsch Aktorenmodell) ist in der Informatik ein Modell für nebenläufige Rechnungen bzw. Programme. Diese werden in nebenläufige Einheiten, sog. Aktoren, unterteilt, die ausschließlich über Nachrichtenaustausch kommunizieren.“  1973  Carl Hewitt, Peter Bishop und Richard Steiger  Implementierungen  Erlang  Scala  C#
  • 5. Actor Model – Die Theorie #2 Quelle: https://de.wikipedia.org/wiki/Actor_Model “An island of sanity in a sea of concurrency” “Shared nothing” “Black box” “Location transparent” “Distributable by design”  Drei Grundsätze  Send: Nachrichten an sich selbst oder andere Aktoren verschicken  Create: Neue Aktoren erzeugen  Behavior: Das eigene Verhalten ändern
  • 6. Wer nutzt das?  WhatsApp (Erlang)  RabbitMQ (Erlang)  CouchDB (Erlang)  LinkedIn.com (JVM Akka)  Walmart.com (JVM Akka)  Bank of America Merrill Lynch (Akka.net)  Halo ( Project Orleans )
  • 7. Wofür verwende ich das?  Alternative zu Threading  Message routing  State machines  CQRS / Event Driven Design  IoT  Singleton
  • 8. .net Entwicklung heute Service BLL DAO Telerik Data Access DB DAO2 RestHandler WebApi
  • 9. Service BLL DAO Telerik Data Access DB DAO2 RestHandler WebApi Service BLL DAO Telerik Data Access DB DAO2 RestHandler WebApi CPU 2 MSMQ Server 1 Server 2 Skalierung  Parallel LINQ  TPL – async/await  Threads  WCF  WebAPI  MSMQ / RabbitMQ / Azure Queues Elastic?
  • 10. ActorX ActorY ActorZCPU 2 Server 1 Server 2 Skalierung mit akka.net Elastic! Akka.Actor Akka.Remote Akka.Cluster ActorX ActorY ActorZ
  • 11. Akka.net  Initial Entwickelt von Roger Johansson und Aaron Stannard  OpenSource ( Apache 2 License )  Orientiert sich an den Features der JVM Akka Implementierung  ~ 5 core Entwickler  ~ 70 github contributor  Akka.net Version 1.0 – Q1/2015  Aktuell 1.04  C# und F# API  .net und Mono  ~ 50 mio msg/sec auf einer Maschine  ~ 2,5 millionen actors / GB RAM  Reactive Manifesto ( Responsive, Resilient, Elastic, Message Driven ) akka.net
  • 12. Wie funktioniert ein Actor? Quelle: http://getakka.net/docs/concepts/actors
  • 13. Actor Lifecycle Actor initializes Starting Actor is up and now able to process messages Receiving Actor cleans up Stopping Actor is dead Terminated Actor is going to restart Restarting PreStart() PostRestart() PreRestart() PostStop() PostStop()
  • 14. DispatcherThreadPool Actor1 Actor1 Actor2 Actor2 Actor3 Actor4 Actor4 Actor1 Actor3 Actor4 Actor2 Actor1 Actor3 Actor2 Time  ThreadPoolDispatcher ( default, max concurrency )  TaskDispatcher ( TPL )  CurrentSynchronizationContextDispatcher ( UI sync )  …
  • 15. Demo Akka.Actor  Hello World  Actor System  ReceiveActor  ActorRef Server 1 ActorX ActorY ActorZ
  • 16. Demo Akka.Remote #1  Chat app  ActorSelection  RemoteActorRefProvider Akka.Remote ActorX ActorY ActorZ ActorX ActorY ActorZ
  • 17. Demo Akka.Remote #2  Remote deployment  Remote daemon Akka.Remote ActorX ActorY ActorZ ActorX ActorY ActorZ ActorA*
  • 18. Router  Leitet Nachrichten an „routee“ Actors weiter  Group vs. Pool Router  RoundRobinRouter  ScatterGatherFirstCompletedRouter  BroadcastRouter  ConsistentHashingRouter  SmallestMailboxRouter  Elastische pools
  • 19. Router konfiguration akka.actor.deployment { /some-pool { router = round-robin-pool nr-of-instances = 5 } } // Hocon config var router = system.ActorOf(Props.Create<Worker>().WithRouter(FromConfig.Instance), "some-pool"); // Code config var router = system.ActorOf(Props.Create<Worker>().WithRouter( new RoundRobinPool(5)), "some-pool");
  • 22. Elastische pools akka.actor.deployment { /my-router { router = round-robin-pool resizer { enabled = on lower-bound = 1 upper-bound = 10 messages-per-resize = 10 ramp-up-rate = 0.2 pressure-threshold = 1 backoff-threshold = 0.3 … } } }
  • 23. Demo Akka.Routing  RoundRobin  Deployment configuration
  • 24. Supervision  Jeder Actor wird durch einen anderen Actor überwacht, welcher entscheidet, wie im Fehlerfall zu reagieren ist.  Restart  Teminate  Ignore and Resume  Escalate an eigenen Supervisor  Selbstheilung
  • 25. ErrorHandling – OneForOne Quelle: http://getakka.net/docs/concepts/supervision
  • 26. ErrorHandling – AllForOne Quelle: http://getakka.net/docs/concepts/supervision
  • 27. Error handling protected override SupervisorStrategy SupervisorStrategy() { return new OneForOneStrategy( // oder AllForOneStrategy maxNumberOfRetries: 10, duration: TimeSpan.FromSeconds(30), decider: x => { if (x is ArithmeticException) return Directive.Resume; else if (x is NotSupportedException) return Directive.Stop; else if (x is ArgumentOutOfRangeException) return Directive.Escalate; else return Directive.Restart; }); }
  • 28. Switchable Behavior private void Lebendig(){ …//other code if (this.lebenspunkte <= 0) this.Become(Tot); … } private void Tot(){ Receive<Wiederbeleben>(() => { this.lebenspunkte = this.maxLebenspunkte; this.Become(Lebendig); }); }
  • 29. Weitere Features  Cluster  Cluster Sharding  Dependency Injection – Autofac  Persistence  Finite State Machines  F# API
  • 30. Wie gehts weiter?  http://getakka.net/  https://github.com/akkadotnet/akka.net/tree/dev/src/examples  https://gitter.im/akkadotnet/akka.net  https://petabridge.com/bootcamp/ (kostenlos)  https://petabridge.com/
  • 31. Q & A
  • 32.  http://www.dotnet-developer-conference.de/  30. November bis 02. Dezember 2015  Pullman Hotel Köln  Frühbucher  Bis 16. Oktober

Editor's Notes

  1. Welchen hintergrund haben die Leute? Web; Backend; Ui?
  2. Erlang: Netzwerk; Fail fast
  3. Getrennte Speicherbereiche; Eigener Thread vs. Multihreaded Concurrency Distributable by Design Location transparent OOP vs. Actor model Behavior Stateful Synchronous vs Asynchronous
  4. Resilient = Wiederstandsfähig
  5. Explain MailBox vs. Public API Behavior State Supervision Children ActorRef Transport: It doesn’t matter where the Actor lives. We just need the Actor ref
  6. The first free thread will be used by the actor Using a thread per actor would be too expensive Memory consumption wise 64bit system = 1 Thread = 4mb -> 1000 Threads = 4Gb 32bit system = 1mb / thread Actor consumes only CPU when it is processing
  7. Client 2 Client also possible since P2P (With ActorRef)
  8. RemoteDeployment: Example: Gather performance counter information on a remote system Remote Deploy project
  9. Group: Eigen definierte Routee Pool: System erstellte Routee Erkläre abgesetzte Router
  10. HOCON = Human-Optimized Config Object Notation
  11. RemoteRoundRobin ScaleUp and Out at the same time
  12. pressure-threshold = 1 // all have at least 1 msg backoff-threshold = 0.3 // less than 30% are busy messages-per-resize - The # of messages to route before checking if resize is needed
  13. Remote Deploy project: Config 2
  14. Explain Guardian User guardian Created by user System guardian Inside akka.net
  15. MaxNumberOfRetries: Wie oft wird die action versucht Duration: In welchem Zeitraum dürfen die Fehler auftreten
  16. Actor can decide how to handle next incoming message Super for state machines
  17. Persistence Journal -> in database for instance