Visão Geral do Modelo de Atores

Visão Geral do Modelo de Atores

O Modelo de Atores é um dos modelos mais interessantes que já vi. Ele foi projetado para alta concorrência, escalabilidade e tolerância a falhas. A maioria das linguagens de programação possui um framework que…


This content originally appeared on DEV Community and was authored by Rafael Andrade

Visão Geral do Modelo de Atores

O Modelo de Atores é um dos modelos mais interessantes que já vi. Ele foi projetado para alta concorrência, escalabilidade e tolerância a falhas. A maioria das linguagens de programação possui um framework que o implementa, mas algumas, como Erlang/Elixir, são desenvolvidas com esse modelo em mente.

História

O modelo de atores foi criado em 1973, inspirado pela física e por linguagens como Smalltalk e Lisp. Ele foi concebido para lidar com máquinas altamente paralelas, compostas por dezenas, centenas ou milhares de microprocessadores independentes, cada um com memória local e comunicação via rede de alto desempenho.

Conceitos Fundamentais

Em Programação Orientada a Objetos, tudo é tratado como objeto. No modelo de atores, tudo é um ator.

Visão Geral do Modelo de Atores

Ator

O ator é a unidade básica de concorrência. Ele reage a mensagens alterando seu estado, modificando seu comportamento para a próxima mensagem ou enviando novas mensagens. Um ator pode:

  • Enviar um número finito de mensagens para outros atores.
  • Criar um número finito de novos atores.
  • Designar o comportamento para a próxima mensagem.

Mensagem

A mensagem é a unidade de comunicação entre atores. Ela deve ser serializável para ser transmitida em redes.

Caixa de Correio (Mailbox)

A caixa de correio é onde um ator recebe mensagens. Normalmente, segue a ordem FIFO (First-In, First-Out), mas pode ser personalizada para priorizar mensagens.

Estado

O estado do ator só pode ser modificado por ele mesmo, embora outros atores possam ler seu estado.

Comportamentos (Behaviours)

Define como um ator reage a uma mensagem.

PID ou Referência do Ator

O Process Identification (PID) é o "endereço" do ator. Pode ser local ou remoto, permitindo comunicação entre máquinas.

Supervisão

A supervisão define como o modelo coordena tarefas e garante resiliência. Quando um ator falha, ele emite um sinal ao supervisor, que decide:

  • Parar apenas o ator com falha (One-For-One).
  • Parar todos os atores filhos (All-For-One).
  • Repassar o sinal ao supervisor hierárquico superior.

Supervisors

Ator Virtual/Grain

Conceito criado pela Microsoft no projeto Orleans, onde o ator é identificado por um ID único, e o framework gerencia sua localização ou criação [[6]]. Combina-se bem com DDD (Domain-Driven Design) e Event Sourcing, usando o ID do ator como ID de domínio.

Frameworks

A escolha do framework depende da linguagem. Em C#, destacam-se:

Microsoft Orleans

Implementa apenas o Ator Virtual (chamado de Grain), com termos adaptados (Silos = nós). É fácil de usar, mas carece de flexibilidade na supervisão.

Akka.NET

Port do Java, segue o modelo clássico, mas não suporta Ator Virtual. Requer adaptações para DDD.

Proto.Actor

Implementa tanto o modelo clássico quanto o Ator Virtual, sendo altamente flexível e recomendado para casos complexos.

Elixir/Erlang

Baseadas na BEAM VM, nativamente alinhadas ao modelo de atores. Não possuem suporte nativo para Ator Virtual, exigindo bibliotecas externas.

Conclusão

O modelo de atores é ideal para sistemas de alta escalabilidade e combina-se com DDD, Event Sourcing e CQRS. Frameworks como Proto.Actor oferecem implementações completas, enquanto Orleans simplifica o uso de Atores Virtuais.

Referências

https://proto.actor/docs/actors/
https://doc.akka.io/libraries/akka-core/current/general/actors.html
https://en.wikipedia.org/wiki/Actor_model


This content originally appeared on DEV Community and was authored by Rafael Andrade


Print Share Comment Cite Upload Translate Updates
APA

Rafael Andrade | Sciencx (2025-03-17T09:06:14+00:00) Visão Geral do Modelo de Atores. Retrieved from https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/

MLA
" » Visão Geral do Modelo de Atores." Rafael Andrade | Sciencx - Monday March 17, 2025, https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/
HARVARD
Rafael Andrade | Sciencx Monday March 17, 2025 » Visão Geral do Modelo de Atores., viewed ,<https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/>
VANCOUVER
Rafael Andrade | Sciencx - » Visão Geral do Modelo de Atores. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/
CHICAGO
" » Visão Geral do Modelo de Atores." Rafael Andrade | Sciencx - Accessed . https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/
IEEE
" » Visão Geral do Modelo de Atores." Rafael Andrade | Sciencx [Online]. Available: https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/. [Accessed: ]
rf:citation
» Visão Geral do Modelo de Atores | Rafael Andrade | Sciencx | https://www.scien.cx/2025/03/17/visao-geral-do-modelo-de-atores/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.