Sto cercando il modo più performante per organizzare l'utilizzo del datacache e della datacache factory per le chiamate di caching AppFabric, per il caricamento della cache da 400 a 700 per pagina (e quasi tutte le put) . Sembra che usare una singola DataCacheFactory statica (o forse una coppia in una configurazione round-robin) sia la strada da percorrere.Caching di AppFabric - Uso corretto di DataCacheFactory e DataCache
Chiamare GetCache ("cacheName") per ogni richiesta di oggetto DataCache o faccio uno statico nel momento in cui DataCache factory è inizializzato e lo uso per tutte le chiamate?
Devo gestire le eccezioni, controllare i codici di errore e riprovare?
Devo considerare la contesa quando più thread tenta di utilizzare l'archivio cache e desidera lo stesso elemento (per chiave)?
Esiste qualche tipo di documentazione che esplori correttamente il design e l'utilizzo di questo?
Alcune informazioni che ho raccolto finora dal forum:
http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da915
"Creazione di fabbrica comporta la connessione al cluster e può richiedere un certo tempo, ma una volta che si. avere l'oggetto factory e la cache con cui vuoi lavorare, puoi semplicemente riutilizzare quegli oggetti per fare puts e ottenere nella cache, e dovresti vedere prestazioni molto più veloci. "
http://social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a49
"Creazione di un'unica DataCacheFactory (Singleton) è più performante rispetto alla creazione di DataCacheFactory multipla. Non è necessario creare DataCacheFactory per ogni chiamata, avrà calo di prestazioni."
"Si prega di provare ad incapsulare l'algoritmo round-robin (con 3/4/5 istanze di fabbrica) nel singleton e confrontare i risultati del test di carico."
http://blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.aspx
"è possibile aumentare il numero di clienti per aumentare il throughput cache. Ma a volte, se si vuole avere più piccolo insieme di clienti e aumentare la produttività, un trucco è quello di utilizzare più istanze DataCacheFactory. L'istanza DataCacheFactory crea una connessione ai server (e..g se ci sono 3 server, creerà 3 connessioni) e multiplex tutte le richieste dai datacaches a queste connessioni.Quindi se il volume put/get è molto alto, queste connessioni TCP potrebbero essere un collo di bottiglia, quindi un modo è creare più istanze DataCacheFactory e quindi utilizzare le operazioni su di esse. "
Ecco ciò che è in uso finora ... la proprietà si chiama e se si esegue il valore restituito non è null un'operazione.
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;
}
}
Vedere questa domanda su Microsoft AppFabric forum: http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f
C'è una risposta a questa ora nel forum. Controlla il link qui sopra. – CRice