1

J'envisage d'utiliser la mise en cache d'AppFabric pour mon application, mais je ne sais pas comment l'obtenir pour faire ce que je veux. J'ai 1 cluster SQL dans 1 emplacement. J'ai plus de 200 serveurs d'applications dans le monde entier. Je veux placer un cluster de mise en cache AppFabric dans chacun de ces emplacements afin que les serveurs d'applications aient un accès rapide aux objets SQL. En plus de l'accès rapide, j'ai besoin qu'ils aient accès aux données dans le cas où le cluster SQL est inaccessible.Caching AppFabric et dépendance SQL

Il existe une application RH qui met directement à jour le cluster SQL afin que les données changent. Les serveurs d'applications mettront également à jour le cache AppFabric dans plusieurs emplacements. Toutes ces données doivent rester synchronisées. Voici mes questions:

  1. Comment le cache sera-t-il mis à jour lorsque la base de données aura été modifiée? J'ai lu que SQLDependency est ce dont j'ai besoin mais je lis aussi qu'une fois qu'il y a un changement, mon cache entier sera vidé et devra resynchroniser. Je veux juste changé les objets à envoyer aux multiples caches pour la mise à jour. Que se passe-t-il si le cluster SQL est inaccessible et que le cache ne trouve pas d'objets demandés?

  2. Existe-t-il une meilleure façon de faire ce que j'essaie de faire? C'est plus sur la disponibilité des objets SQL que sur les performances. A propos de la recherche MS Framework Sync ...

Répondre

1

AppFabric n'a pas de support pour les objets de dépendance de cache comme SqlCacheDependency, mais ce que vous pouvez faire à la place est de créer une lecture par/écriture derrière fournisseur de cache pour AppFabric. Ce fournisseur connaît la structure de votre base de données SQL Server, de sorte qu'il peut extraire des informations de la base de données et peut mettre à jour votre base de données lorsque vous effectuez des mises à jour. Vos serveurs d'applications mettent à jour le cache AppFabric, de sorte que votre cache dispose toujours de la dernière version de vos données et le cache écrit ensuite les mises à jour dans la base de données de façon asynchrone. Pour que votre application RH mette à jour la base de données principale, vous pouvez configurer les éléments du cache pour qu'ils expirent en fonction d'une valeur de durée de vie, et une requête ultérieure au cache actualise la version mise en cache.

+0

FYI: SqlCacheDependency est un fournisseur de cache pour ASP.NET et pas le même que l'objet SqlDependency d'ADO.NET qui vous permet de crocher le code personnalisé pour exécuter à la notification de SQL que les données ont changé. – Jaans

0

Je sais que vous avez posté cela il y a quelque temps, mais il existe des solutions de mise en cache qui vous permettent d'utiliser les dépendances de cache pour synchroniser avec les sources de données principales. Le cas d'espèce dans votre situation qui est la dépendance SQL est disponible avec NCache. Avec NCache vous pouvez avoir plusieurs options pour synchroniser avec le DB et une fois que cette option est "read-through". Donc, essentiellement, lorsque la base de données change, l'objet dépendant est automatiquement supprimé du cache et si la lecture est activée, le serveur de cache récupère automatiquement la nouvelle copie de l'objet. Vous pouvez en savoir plus sur Database Synchronization here

Questions connexes