Je cherche la manière la plus performante d'organiser l'utilisation de la fabrique de datacache et datacache pour les appels de mise en cache AppFabric, pour entre 400 et 700 cache par chargement de page (et pratiquement aucun put) . Il semble que l'utilisation d'une seule DataCacheFactory statique (ou peut-être un couple dans une installation round-robin) est la voie à suivre. Est-ce que j'appelle GetCache ("cacheName") pour chaque demande d'objet DataCache, ou est-ce que je fais une statique au moment où la fabrique DataCache est initialisée et l'utilise pour tous les appels? Dois-je gérer des exceptions, vérifier les codes d'échec et tenter une nouvelle tentative? Dois-je tenir compte de la contention lorsque plusieurs threads tentent d'utiliser le cache et souhaitent le même élément (par clé)?AppFabric Caching - Utilisation correcte de DataCacheFactory et DataCache
Existe-t-il une sorte de documentation qui explore correctement la conception et l'utilisation de cela?
Certaines informations que j'ai recueillies jusqu'à présent du forum:
http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915
« Création de l'usine consiste à se connecter au cluster et peut prendre un certain temps, mais une fois que vous. avoir l'objet usine et le cache que vous voulez utiliser, vous pouvez simplement réutiliser ces objets pour faire des puts et entrer dans le cache, et vous devriez voir des performances beaucoup plus rapides. "
http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49
« Création unique DataCacheFactory (singleton) est plus performante que la création de multiples DataCacheFactory. Vous ne devez pas créer DataCacheFactory pour chaque appel, il aura frappé la performance. » "Veuillez essayer d'encapsuler un algorithme à tour de rôle (comportant des instances d'usine 3/4/5) dans votre singleton et comparer les résultats du test de charge."
http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx
« Vous pouvez augmenter le nombre de clients pour augmenter le débit du cache. Mais parfois, si vous voulez avoir plus petit nombre de clients et d'augmenter le débit, une astuce consiste à utiliser plusieurs instances DataCacheFactory. L'instance DataCacheFactory crée une connexion aux serveurs (par exemple s'il y a 3 serveurs, il créera 3 connexions) et multiplexe toutes les requêtes des datacaches sur ces connexions Donc, si le volume put/get est très élevé, ces connexions TCP pourraient Il est donc possible de créer plusieurs instances DataCacheFactory, puis d'utiliser les opérations qui s'y rapportent. " Ici, ce qui est utilisé jusqu'à présent ... la propriété est appelée et si la valeur de retour n'est pas nulle, une opération est effectuée.
private static DataCache Cache
{
get
{
if (_cacheFactory == null)
{
lock (Sync)
{
if (_cacheFactory == null)
{
try
{
_cacheFactory = new DataCacheFactory();
}
catch (DataCacheException ex)
{
if (_logger != null)
{
_logger.LogError(ex.Message, ex);
}
}
}
}
}
DataCache cache = null;
if (_cacheFactory != null)
{
cache = _cacheFactory.GetCache(_cacheName);
}
return cache;
}
}
Voir cette question sur le forum Microsoft AppFabric: http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f
Il y a une réponse à ce moment dans le forum. Vérifiez le lien ci-dessus. – CRice