6. Build powerful concurrent and distributed applications
Akka.Net & .Net Core
Alexandre Brandão Lustosa
Entrepreneur at Stone Pagamentos
C# .Net MCSD / MCSA DBA SQL Server IoT / C++ Developer Engineer
(21) 97367-6161 / LinkedIn: abrandaol / Twitter: @abrandaolustosa
7. Alexandre Brandão Lustosa
Twitter: @abrandaolustosa
E-mail: abrandao@outlook.com
abrandao@stone.com.br
LinkedIn: www.linkedin.com/in/abrandaol
Phone: +55 (21) 97367-6161
Senior Software Engineer with 20 years of experience in web development, transactional and distributed systems,
Microsoft C# .Net specialist and C/C ++ development for Linux Embedded and Microchip Microcontroller. Certificated
by Microsoft .Net MCSD Web Developer, MCSA Microsoft SQL Server 2012 and Microsoft IT Specialist. Founder and
community leader of InsideTech Conf.
Entrepreneur at Stone Pagamentos
C# .Net MCSD / MCSA DBA SQL Server IoT / C++ Developer Engineer
• Entrepreneur
• C# .Net
• IoT Maker
• Arquitetura de Sistemas
• Metodologias Ágeis
• Algoritmos Computacionais
• Guitarra e Violão
8. { Stone }
Temos vagas para
Nerds Loucos!!
Great code
starts with
amazing
people
https://jobs.kenoby.com/enter.stone
11. Distributed systems
A distributed system is a model in which
components located on networked computers
communicate and coordinate their actions by
passing messages
12. Parallel and distributed computing
In parallel computing, all processors may have access to a
shared memory to exchange information between
processors.
In distributed computing, each processor has its own
private memory (distributed memory). Information is
exchanged by passing messages between the processors
16. Origem
The actor model originated in 1973. It has
been used both as a framework for a
theoretical understanding of computation
and as the theoretical basis for several
practical implementations of concurrent
systems
The characteristics of today's computing
environments are vastly different from the
ones in use when the programming models of
yesterday were conceived. Actors were
invented decades ago by Carl Hewitt.
17. Fundamental concepts
The actor model adopts the philosophy that everything is
an actor. This is similar to the everything is an object
philosophy used by some object-oriented programming
languages.
18. Fundamental concepts
An actor is a computational entity that, in response to a message it
receives, can concurrently:
Send a finite number of messages to other actors
Create a finite number of new actors
Designate the behavior to be used for the next message it receives
37. Reactive Manifesto
Akka.NET adheres to the principles
defined by the Reactive Manifesto.
The Reactive Manifesto proposes a
coherent approach to systems
architecture in order to build
systems that are more robust, more
resilient, more flexible, and better
positioned to meet modern
demands.
38. Microsoft Actor Model
A straightforward approach to building distributed,
high-scale applications in .NET
https://dotnet.github.io/orleans/
57. Dynamically Resizable Pools
akka.actor.deployment {
/my-router {
router = round-robin-pool resizer {
enabled = on lower-bound = 1 upper-bound =
10
}
}
}
The following settings are used to fine-tune the resizer and are considered good enough for most cases,
but can be changed if needed. Rules: https://getakka.net/articles/actors/routers.html
69. Remote Deploy
That's right - we can deploy code over the network with Akka.Remote.
Deploying an actor means two things simultaneously:
•Creating an actor instance with specific, explicitly
configured properties
•Getting an IActorRef to that actor
72. What is a “Akka Cluster“?
A cluster represents a fault-tolerant, elastic, decentralized
peer-to-peer network of Akka.NET applications with no
single point of failure or bottleneck.
• Fault-tolerant: clusters recover from failures (especially network
partitions) elegantly.
• Elastic: clusters are inherently elastic, and can scale up/down as
needed.
• Decentralized: it's possible to have multiple equal replicas of a given
microservice or piece of application state running simultaneously
throughout a cluster
• Peer-to-peer: New nodes can contact existing peers, be notified about
other peers, and fully integrate themselves into the network without any
configuration changes.
• No single point of failure/bottleneck: multiple nodes are able to
service requests, increasing throughput and fault-tolerance.