0

Je souhaite créer un service hébergé à l'aide d'Azure Service Fabric avec ASP.NET Core en tant que frontal.Structure de service Azure, un service avec état ne peut-il avoir qu'un seul primaire?

Si j'ai lu la documentation correctement, alors il semble y avoir que deux options réelles ici pour gérer mes données de session ...

1 - Créer un service sans état qui utilise une base de données externe tel que SQL Azure pour le stockage les informations de la session. Je peux ensuite évoluer en augmentant simplement le nombre d'instances et en augmentant le nombre de services exécutés sur les nœuds. Tant que la base de données SQL Azure peut gérer la charge, tout est bon. C'est attrayant parce qu'il est simple à comprendre et à mettre en œuvre. Mais il a le coût supplémentaire de la base de données externe.

2 - Créer un service avec état qui utilise une collection fiable (dictionnaire) pour stocker les informations de session. Je ne veux pas diviser mes sessions sur plusieurs partitions en raison de la complication supplémentaire que cela entraînerait. Mais avec une seule partition je suis coincé avec une seule instance de serveur primaire. Cela réduit le coût d'avoir une base de données externe. Mais ne s'adapte pas à deux instances de serveur ou plus. La lecture de la documentation signifie que vous ne pouvez avoir qu'un seul serveur principal pour une partition de service avec état. Est-ce que j'ai bien compris? Si je peux avoir plus de primaires alors serait-il bien d'avoir 100 primaires?

Répondre

1

Non, vous ne pouvez pas avoir 100 primaires. Dans un service avec état, les partitions sont la façon dont vous évoluez. Vous pouvez uniquement effectuer des écritures sur le réplica principal et le réplica principal est responsable de la réplication de cet état sur les secondaires.

Je ne suis pas vraiment sûr de ce que vous entendez par complication supplémentaire de plusieurs partitions. Comment cela serait-il différent des primaires multiples? Vous devez toujours savoir dans quel primaire sauvegarder/extraire les données vers/depuis et cela ne serait pas différent du partitionnement.