Ho lavorato con akka per 7-8 mesi ora ogni giorno. Quando ho iniziato, avrei lavorato sulle applicazioni e ho notato che gli attori sarebbero stati usati praticamente ovunque nel sistema degli attori per comunicare tra la maggior parte degli oggetti. Così ho fatto lo stesso: creare un altro attore per x / y / z.
Mi sembra che questo possa essere troppo indiscriminato, aggiungendo complessità laddove non è necessario - ma non riesco a trovare alcuna discussione su dove gli attori contro la logica sincrona o persino asincrona attraverso i futures dovrebbero essere usati. Ho iniziato a meditare sulla mia posizione dopo che il mio collega ha menzionato qualcosa di simile. Recentemente ho realizzato diversi casi in cui ho riflettuto su un compito e poi ho evitato di creare un altro attore perché potevo ottenere lo stesso risultato in modo sicuro in un'implementazione immutabile, ad esempio ottenere valori di configurazione da un db o da qualche file dove si accede molto raramente e attendi che il risultato sia il caso d'uso effettivo.
In particolare, mi sembra che in ogni caso in cui stai giocando con uno stato immutabile, gli attori creano complessità e limitano il throughput - una pura funzione in un oggetto, per esempio, può essere chiamata contemporaneamente senza alcun rischio con qualsiasi livello di concorrenza, tuttavia un attore può elaborare solo un messaggio alla volta. La considerazione alternativa è che dovrai parcheggiare la discussione se devi aspettare il risultato a meno che non inizi a utilizzare i futures, ma casi in cui non devi preoccuparti della messaggistica asincrona o della scala sembra che possa essere eccessivo assumere un attore.
Quindi la mia domanda è - c'è un brutto momento per usare gli attori? Sono curioso di sapere come appare e mi piacerebbe davvero l'intuizione altrui. O se ci sono alcuni principi sull'uso degli attori.