2017-05-13 5 views
2

Je suis nouveau sur le modèle d'acteur. Je prévois de mettre en œuvre le modèle Actor pour l'un de mes projets, alors j'ai commencé à lire sur Akka.Net. De la documentation, il semble que l'état de l'acteur persiste tout au long de la vie de l'acteur.Où est stocké l'état dans le modèle Acteur (Akka.net)?

1.Où l'état est-il stocké? Sur le bélier? Si oui, ne serions-nous pas à court d'espace de bélier?

2.Comment implémenter le modèle Actor quand j'ai des millions d'enregistrements? Dites que je veux implémenter une table Actor pour les clients qui a un million d'enregistrements. Comment pourrais-je charger les clients?

Répondre

2

Par défaut, tout l'état acteur est représenté directement en mémoire. Vous pouvez choisir de le conserver (pour les scénarios utilisant eventsourcing, il existe une bibliothèque Akka.Persistence), mais il s'agit d'une décision opt-in.

  1. Les acteurs Akka sont assez légers. Un matériel modéré peut facilement avoir des millions d'acteurs actifs. Bien sûr, il y a possibilité de manquer de mémoire. Dans ce cas, vous pouvez disposer des acteurs qui ne sont pas actuellement utilisés, et si cela ne suffit pas, décidez d'aller distribuer et faire tourner un cluster Akka sur plusieurs machines.
  2. Habituellement, il n'y a aucun sens à projeter chaque enregistrement de table en tant qu'acteur. Une approche plus utile consiste à appliquer les principes DDD (Domain Driven Design): les acteurs sont très bien positionnés sur les concepts Aggregate Roots connus de cette méthodologie. Dans le cas d'une stratégie de chargement d'acteur, généralement les gens ne les chargent pas tous à la place, ils les créent paresseusement quand ils en ont besoin et les éliminent souvent après une période d'inactivité (alors quand vous savez, cet acteur a gagné) t être utilisé pour les prochaines minutes ou heures).
+0

Merci pour la réponse détaillée! – user3587180