Lavoro con Akka da 7-8 mesi ogni giorno. Quando ho iniziato, avrei lavorato sulle applicazioni e avrei notato che gli attori sarebbero stati usati praticamente ovunque nel sistema dell'attore per comunicare tra la maggior parte degli oggetti. Quindi ho fatto lo stesso: girare 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 dovrebbero essere usati attori rispetto a una logica sincrona o persino asincrona tramite i futures. Ho iniziato a meditare sulla mia posizione dopo che il mio collega ha menzionato qualcosa di simile. Di recente ho realizzato diversi casi in cui ho ponderato un compito e quindi ho evitato di creare un altro attore perché avrei potuto ottenere lo stesso risultato in modo sicuro in un'implementazione immutabile, ad esempio qualcosa come ottenere valori di configurazione da un db o da un file da qualche parte in cui accedi molto raramente e attendere il risultato è il caso d'uso reale.
In particolare, mi sembra che in tutti i casi in cui stai giocando con uno stato immutabile, gli attori creano complessità e limitano il rendimento - una funzione pura in un oggetto, ad esempio, può essere chiamata contemporaneamente senza alcun rischio con qualsiasi livello di concorrenza, eppure un attore può elaborare solo un messaggio alla volta. La considerazione alternativa è che parcheggi il thread se devi aspettare il risultato a meno che non inizi a utilizzare i futures, ma nei casi in cui non devi preoccuparti di messaggistica asincrona o ridimensionare sembra che potrebbe essere eccessivo impiegare un attore.
Quindi la mia domanda è: c'è un brutto momento per usare gli attori? Sono curioso di come appaia Erlang e mi piacerebbe davvero la comprensione degli altri. O se ci sono alcuni principi sull'uso dell'attore.
ask
inging un attore e il semplice utilizzo di una pianura Future
.