development actor model - ghdrako/doc_snipets GitHub Wiki
tags:
Development actor model
Actor Model
Aktor po otrzymaniu wiadomości może:
- zmienić swój stan saldo: 1000 → 500
- wysłać wiadomość innemu aktorowi
Konto Kowalski
│
│ "przelej 500"
↓
Konto Nowak
- utworzyć nowego aktora Np. aktor OrderManager może stworzyć:
Order/123
Order/124
Order/125
Aktorzy komunikują się przez wiadomości
Zamiast:
obiekt A
↓
bezpośrednio zmienia
↓
obiekt B
masz:
A
│
│ message
│
↓
B
Aktor może reprezentować:
- User
- Order
- BankAccount
- ChatRoom
- Game
- IoT Device
- ShoppingCart
- Auction
ale także:
- Kafka partition
- worker
- connection
- cache
- scheduler
Aktor to przede wszystkim model współbieżności i komunikacji, a nie konkretny rodzaj obiektu biznesowego.
Actor Model = zamiast wielu wątków grzebiących we wspólnym stanie, masz wiele niezależnych „skrzynek”, które mają własny stan i komunikują się poprzez wiadomoś.
A jego największa zaleta to równoległość pomiędzy aktorami + brak race condition wewnątrz pojedynczego aktora dzięki sekwencyjnemu przetwarzaniu wiadomości.
Actor Model to przede wszystkim sposób organizacji programu.
Akka jest jednym z najbardziej znanych przykładów. Programujesz aktorów, a framework zajmuje się m.in. komunikacją, współbieżnością i lokalizacją aktorów.
Erlang i jego ekosystem BEAM gdzie naturalnie piszesz programy składające się z procesów komunikujących się wiadomościami.