Comprendre quand utiliser la dynamique des services et quand s'appuient sur des la persistance dans Azure Service de Tissu

Je passe mes soirées à l'évaluation Azure Service de Tissu comme un remplacement pour notre WebApps/CloudServices de la pile, et se sentir un peu incertain sur la façon de déterminer si les services/acteurs de l'état doit être dynamique des acteurs, et quand ils doivent être apatride acteurs avec l'extérieur état persistant (Azure SQL, Azure Storage et DocumentDB). Je sais que c'est un assez nouveau produit (pour le public en général au moins), donc il n'y a probablement pas beaucoup de meilleures pratiques en ce qui concerne cela, mais j'ai lu par la plupart des la documentation mis à disposition par Microsoft, sans trouver une réponse définitive à cette fin.

Le problème actuel de domaine, je suis approche est notre événement du magasin; parties de nos applications sont basées sur l'event sourcing et CQRS, et je suis l'évaluation de la façon de déplacer cet événement stocker sur le Service de Tissu de plate-forme. L'événement store va contenir beaucoup de temps à la série de données, et que c'est notre seule source de vérité pour les données persistantes là, il se doit d'être cohérente, la réplication et le stockage d'une certaine forme de stockage durable.

L'un des moyens que j'ai envisagé de faire une c'est avec état "EventStream" l'acteur, chaque instance d'un agrégat à l'aide d'event sourcing stocke ses événements dans un cours d'eau isolé. Cela signifie que la dynamique de l'acteur pourrait garder une trace de tous les événements de son propre flux, et j'aurais répondu à mes exigences quant à la façon dont les données sont stockées (transactionnel, répétée et durable). Toutefois, certains cours d'eau peut devenir très volumineux (plusieurs centaines de milliers, sinon des millions, des événements), et c'est là que je commence à avoir des doutes. Avoir un acteur avec une grande quantité d'etat sera, j'imagine, avoir un impact sur les performances du système lors de ces grands modèles de données doit être sérialisé ou désérialisé à partir du disque.

Une autre option est de garder ces acteurs apatrides, et viens de lire leurs données à partir de certains de stockage externe comme Azure SQL - ou tout simplement aller avec apatrides services à la place des acteurs.

Fondamentalement, quel est le montant de l'etat pour un acteur/service "trop" et vous devriez commencer à envisager d'autres façons de traiter l'état?

Aussi, cette section dans le Service de Tissu Acteurs motif de conception: Certains anti-modèles documentation me laisse un peu perplexe:

Traiter Azure Service de Tissu d'Acteurs d'un système transactionnel. Azure Service de Tissu d'Acteurs n'est pas un deux phases de validation basée sur le système offre à l'ACIDE. Si nous ne faisons pas de mettre en œuvre l'option de la persistance et de la machine, l'acteur est en cours d'exécution sur les matrices, de son état actuel va aller avec elle. L'acteur sera à venir sur un autre nœud très rapide, mais à moins que nous avons mis en place le support de la persistance, l'état aura disparu. Cependant, entre en tirant parti de nouvelles tentatives, double filtrage et/ou de la quantité de la conception, vous pouvez atteindre un niveau élevé de fiabilité et de cohérence.

Ce n' "si nous ne faisons pas de mettre en œuvre l'option de persistance" indiquer ici? J'étais sous l'impression que tant que votre opération de modification de l'état a réussi, vos données ont été conservées dans le stockage durable et répliqué à au moins un sous-ensemble de la répliques. Ce paragraphe laisse moi me demandais si il y a des situations où l'état au sein de mes acteurs/services seront perdus, et si c'est quelque chose que je dois gérer moi-même. L'impression que j'ai eu de la dynamique de modèle dans d'autres parties de la documentation semble contrecarrer cette déclaration.

  • avez-vous une mise à jour, je me retrouve dans une position très similaire vous demandez-vous ce que vous êtes en train de faire. des acclamations.
  • Nordheim Avez-vous décider sur une solution à l'aide de SF? J'ai une exigence similaire et serait intéressé à entendre ce que vous avez décidé sur.
  • Nous sommes confrontés au même chemin et nous avons eu les mêmes doutes, nous avons testé beaucoup .NET Event Sourcing Outils (mementoFX, ncqrs, etc...) mais nous ne sommes pas super heureux avec eux (peut-être que c'est de notre faute), mais nous sommes toujours à la recherche d'une alternative.