2017-07-04 3 views
3

Je dois stocker beaucoup de données dans des dictionnaires fiables sur Service Fabric. Nous implémentons un magasin d'événements en tant que nombre de dictionnaires fiables, de sorte que tous les événements émis par le domaine se retrouvent dans le magasin. Je voudrais savoir la différence de performance dans les deux scénarios suivants:Service Fabric Collections fiables Performance

  • utilisation d'un (très grand) Dictionnaire fiable pour stocker tous les événements pour un certain type global: il en résulte un petit nombre de dictionnaires, contenant chacun des millions d'événements
  • utilisent un petit dictionnaire fiable pour stocker les événements d'une seule instance globale: il en résulte beaucoup de petits dictionnaires (pensez millions) contenant chacun quelques événements

à la lumière de la réplication état, et lire et écrire des performances, quelle serait la manière la plus efficace?

Répondre

2

On dirait que vous devriez utiliser des acteurs Stateful, vous pouvez avoir des millions d'acteurs détenant des données.

Si vous avez besoin de lire beaucoup de résumé (agrégé) des informations de tous vos acteurs, pls voir https://github.com/Azure-Samples/service-fabric-dotnet-data-aggregation/blob/master/README.md

Voici mes pensées si vous voulez aller avec les services stateful: Pour le premier scénario vous voulez devez utiliser le partitionnement, pour le second, vous devez créer plusieurs services de données, afin que vos données soient réparties entre les nœuds.

Le deuxième scénario présente l'avantage d'un accès plus rapide à ses données, mais nécessite un service de catalogue supplémentaire pour contenir les noms des agrégats d'événements, afin que vous puissiez rechercher le dictionnaire cible correct.

La réplication ne doit pas être différente dans les deux scénarios.