Akka Event Sourcing - come creare attore per entità

1

Leggevo documentazione sulla persistenza di Akka e dice che Akka è buona per Event Sourcing.

Immagina di avere un'entità utente. Ogni utente è definito in modo univoco con ID e ha alcune proprietà e alcune regole aziendali su come possono essere modificati. Inoltre, alcune modifiche delle proprietà dell'utente possono avere alcuni effetti collaterali asincroni, come la notifica a un altro sistema che è stato creato un utente. Configurazione DDD molto semplice.

Quindi da quanto ho capito Akka PersistenceActor è buono per mantenere lo stato corrente di User , accettando le modifiche 1 per 1, quindi nulla può scivolare tra di esse.

Quindi, se modifico questi utenti con PersistenceActor s dove creo un attore per utente, ma il numero di utenti è troppo grande per tenerli tutti (o anche caricarli tutti) nella memoria, come faccio a trattare con la creazione / l'interruzione di attori, la loro persistenza / ecc.

Sembra un compito piuttosto complicato da gestire. Ma se non lo faccio, cos'altro può fare con PersisteceActor s?

    
posta eddyP23 11.08.2017 - 13:49
fonte

2 risposte

2

Vuoi dare un'occhiata a Akka Cluster Sharding . Questo integra Akka Persistence per distribuire le istanze che sono attualmente conservate in memoria nel cluster e gestire il loro ciclo di vita.

Ricorda inoltre che Akka è - per definizione - un kit di strumenti di basso livello. Per un'esperienza di partenza più semplice con sourcing di eventi e cqrs basati su Akka, potresti voler esaminare framework di livello superiore, come Persistenza di Lagom ( Java & Scala ) o Fun.CQRS (Scala ).

    
risposta data 05.02.2018 - 10:56
fonte
2

Penso che potresti voler leggere su Passivation .

Un attore di entità viene caricato (recuperato) quando si invia un messaggio e può passivarsi quando riceve il timeout. Usando la passivazione, puoi evitare di caricare tutti gli utenti in memoria.

    
risposta data 12.08.2017 - 08:15
fonte