akka.net ottawa .net user group meetup
TRANSCRIPT
![Page 1: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/1.jpg)
akka.netBy Taswar BhattiSystem Architect for GemaltoMicrosoft MVP http://taswar.zeytinsoft.com@[email protected] March 2016
![Page 2: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/2.jpg)
Agenda• What are we trying to solve?• What is Akka.Net• How does it work?• Demo• Additional Resources
![Page 3: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/3.jpg)
Free Lunch or Pizza is Over
![Page 4: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/4.jpg)
Reactive Manifesto• Message Driven (async, loose coupling, location
independent)• Elastic (Scalable)• Responsive (in timely manner)• Resilient (Recovery)
![Page 5: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/5.jpg)
Classic .NET applications
Scale up Scale out ElasticityParallel Linq WCF ?TPL (Task Parallel Library) Webapiasync await MSMQ
Threads Azure Service Bus
![Page 6: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/6.jpg)
Multicore with your app
![Page 7: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/7.jpg)
Write more threads
![Page 8: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/8.jpg)
Multi Threading
![Page 9: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/9.jpg)
Fixing multithreading is no fun
![Page 10: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/10.jpg)
Deadlock
![Page 11: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/11.jpg)
Concurrency is HARD• Complexities of concurrency, parallelism, and multi-
threading is no piece of cake, poor babies…………
![Page 12: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/12.jpg)
Akka.NetScale up Scale out Elasticity
Akka Actor Akka Remote Akka Cluster
Simplify the building of scalable, concurrent, high -throughput and low latency systems
![Page 13: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/13.jpg)
Classes of Applications• Transactional applications (Financial, gambling/betting,
social media, telecom)• Batch (Divide workloads between actors)• General Service (REST, SOAP, System integration)• Communications (Chat app, Real time notification• Gaming (Multiplayer interactions)• Traffic Management (Road traffic flow, asset management)• Numerical Processing (Biz intelligence, data mining)• IoT (Incoming stream of data sensor)
![Page 14: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/14.jpg)
The Actor Model
• 1973 Actor model Carl Hewitt• The actor model is a conceptual model • It deal with concurrent computation • It defines general rules for how the system’s
components should behave and interact with each other• Commonly used in Erlang
![Page 15: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/15.jpg)
Actors not these one
![Page 16: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/16.jpg)
What is an Actor?• Everything is an Actor• Actors are inherently lazy• Fundamental primitive computational unit• Small well defined task• Actor code is the same whether it’s local or distributed• Every actor instance has an address• Actors communicate via messages
![Page 17: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/17.jpg)
Four things an Actor can do• Receive and React to messages• Create more actors• Send messages to other actors• Change Behavior for next message
![Page 18: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/18.jpg)
Actors• Incoming Mailbox• State• Children Actors Hierarchy • Supervision Strategy (in case of some failure in children)• Behavior• Actors always processes one message at a time
![Page 19: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/19.jpg)
Messages• POCO class• Message instances should be immutable• Passing of messages is asynchronous
![Page 20: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/20.jpg)
Actors and Messages
![Page 21: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/21.jpg)
Actors Hierarchy
![Page 22: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/22.jpg)
When Children do bad things• Parent actors have a supervision strategy for children
actor• Default could be restart the child actor• Or if it does not know what do let its parent know• A child actor cannot notify a grand parent of
misbehavior it is up to the parent actor to propagate the message up, such that failures can be isolated
![Page 23: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/23.jpg)
SupervisorsA supervisor can decide to:• Force a restart• Terminate• Ignore and resume• Escalate up to it’s own supervisor
![Page 24: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/24.jpg)
Error handling in Java, C# and C
![Page 25: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/25.jpg)
Error
![Page 26: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/26.jpg)
Akka Remoting
![Page 27: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/27.jpg)
Akka .Net Packages• Akka• Akka Remote• Akka Cluster• Akka DI (Dependency Injection)• Akka Test (TestKit)• Akka Persistence• Akka Logger
![Page 28: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/28.jpg)
Demo
![Page 29: Akka.Net Ottawa .NET User Group Meetup](https://reader035.vdocuments.site/reader035/viewer/2022070515/5879f1f21a28ab70298b4e3d/html5/thumbnails/29.jpg)
Resources• Akka .NET (http://getakka.net/)• Akka Bootcamp (https://
github.com/petabridge/akka-bootcamp)• Petabridge Training (https://petabridge.com/)• Manning Book (Reactive Applications with Akka.NET)• https://
www.manning.com/books/reactive-applications-with-akka-net• Project Orleans (another Actor Model)• Pluralsight Courses