Question sur la façon dont la fonction de cache de AppFabric peut être utilisé

StackOverflow https://stackoverflow.com/questions/3018089

  •  26-09-2019
  •  | 
  •  

Question

Question sur la façon dont la fonction de cache de AppFabric peut être utilisé.

Je me excuse pour poser une question que je devrais être en mesure de répondre de la documentation, mais j'ai lu et lu et recherché et ne peut répondre à cette question, ce qui me conduit à croire que j'ai une compréhension fondamentalement erronée de ce que la mise en cache de AppFabric capacités sont destinées à.

Je travaille pour une entreprise géographiquement dispersée. Nous avons une application particulière qui a été écrit à l'origine comme une application client / serveur. Il est si massif et critiques de l'entreprise que nous voulons pas de bébé convertir à une solution mieux architecturé.

L'une des idées que nous avions était de convertir l'application de lire ses données à l'aide des appels WCF à un serveur Web colocalisé qui cache la communication avec la base de données aux États-Unis. La nature de l'application est telle que tout le monde aura tendance à afficher les mêmes 2000 enregistrements ou si avec seulement mises à jour occasionnelles et ces mises à jour seront prises par un nombre limité d'utilisateurs.

J'espérais que le mécanisme de cache de AppFabric me permettrait de mettre en place un cache global et lorsqu'un utilisateur en Asie, par exemple, a demandé des données qui n'était pas dans le cache ou était vicié que le serveur Web lirait de la base de données les États-Unis, fournissent les données à l'utilisateur, puis mettre à jour le cache qui se propagerait que les données aux autres serveurs Web afin qu'ils ne savaient pas pour revenir à la base de données eux-mêmes.

Le travail peut AppFabric cette façon ou devrais-je avoir juste les serveurs récupérer leurs propres données à partir de la base de données?

Était-ce utile?

La solution

Donc, si je vous comprends bien, vous avez:

  • un serveur de base de données aux Etats-Unis
  • serveurs web dans le monde entier?
  • (potentiellement) un cache AppFabric aux Etats-Unis

AppFabric vous donne potentiellement deux façons d'aborder ce scénario.

  1. cache local
    Dans une configuration AppFabric, les clients ont la possibilité d'avoir un cache local des objets, où le premier appel à la cache d'un objet, cet objet dans le cache local et les demandes ultérieures de cet objet sont remplies à partir du cache local. Les objets sont retirés du cache local, soit en raison d'un délai d'attente ou parce que les principaux cache notifie le cache local que l'objet est vicié. Vous configurez dans votre web.config:

    <dataCacheClient>
        <localCache isEnabled="true" sync="NotificationBased" ttlValue="300" />
    </dataCacheClient>
    

    Dans votre cas, alors, vos serveurs Web sont les clients; lorsque l'un de vos utilisateurs asiatiques demande un objet, le cache local pour le serveur Web Asie détiendrait alors une copie de cet objet. Les mises à jour cet objet seraient propagées dans le cache principal, et une copie de configuration à base de notification de cet objet dans les caches locaux sur les autres serveurs Web seraient invalidées, de sorte que la demande suivante sera remplie à partir du cache principal et la cache local sera actualisé avec l'objet mis à jour.

  2. colocaliser le cache AppFabric sur les serveurs Web
    Il n'y a rien pour arrêter vos serveurs Web étant également des serveurs de cache AppFabric! Dans cette configuration, vous ne pas utiliser le cache local, car il n'a pas de sens lorsque le cache principal est déjà locale à votre client. Toutefois, cela garantirait que votre client tire toujours la dernière version d'un objet mis en cache à partir du cache.
    Vous auriez besoin d'être prudent des charges de réseau, cependant, parce que cette configuration pourrait signifier que votre serveur web Etats-Unis est en train de lire toujours les objets mis en cache de (par exemple) votre serveur web européen, ce qui pourrait ralentir vos serveurs car ils tentent de répondre à des demandes de cache ainsi que le trafic web.

Dans les deux cas, rappelez-vous que si vos clients recevront la dernière version de l'objet mis en cache, il n'y a pas persistance dans AppFabric et vous aurez besoin d'écrire vos modifications dans la base de données en même temps que vous mettez à jour l'objet mis en cache, sinon vous courez le risque de lire des données hors de ce jour dans le cache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top