Actor model
The actor model is a mathematical model of concurrent computing presented in 1973. The fundamental concept of the model is that everything is an actor, being it the most basic unit of operation.
This model of competition, stands out because it does not share state among the actors; the actors may be distributed in other machines; and has a very interesting concept of error handling: the actor dies. The state not being shared creates a more controlled environment.
Actors
They are the atom of the actor model. He who receives messages and reacts to them in some way.
An actor alone has no value because he depends on another to send/receive messages. Ants alone do not survive.
This entity may receive messages, and with the messages it receives, it may:
- Sending messages to other actors
- Create actors
- Change your status to the next received message
Mailbox
Messages sent to an actor are stored in an inbox (mailbox) and are processed one by one (FIFO).
Distribution
The representations of the actors model also provides that the system must be distributed. It doesn’t matter if I’m sending the message to an actor running on another machine. This is important when we talk about horizontal scale.
The programming language that is strongly associated with the actor model is the Erlang, but that only appeared 13 years after the actor model. In the Java universe we have the Akka and in Python the Pykka. This shows that this model is not limited to functional languages, as is often thought.
Microservices
Microservice is an architecture style for developing an application as a suite of smaller services, each running in separate processes and communicating with mechanisms such as HTTP. Although there is a similarity in the divisibility of entities between the model of actors and microservices, they are not interchangeable.
When it comes to the model of actors, it speaks in different processes representing actors who communicate with messages in a direct way. When talking about microservices, it talks about different backends with different responsibilities communicating via a protocol, such as HTTP.
The answer below met your need?
– Murillo Goulart
@Murillogoulart in part. I’m looking for other answers. I do not think an answer with a full copy Paste is acceptable, but that is my opinion...
– Bruno Costa
You already understand the concepts of distributed systems?
– Intruso
@Intruder Only in a superficial way.
– Bruno Costa
My prescription is that there is confusion between the specific definitions of standards and their applications in certain frameworks. An example of this is the Azure quote, which uses but does not necessarily 'dictate' the pattern. There is also confusion with the comparison of microservices, which should be more compared to the monolithic model of architecture, but not necessarily distributed. The framework infrastructure (so that the applied standard is shown) is more in the case of Azure, maybe that’s why you’re having difficulty expressing the question in order to get answers.
– Intruso