AppFabric Caching - Richtige Verwendung von DataCacheFactory und DataCache

Ich bin auf der Suche nach der leistungsstärksten Möglichkeit, die Verwendung des Datencaches und der Datencache-Factory für AppFabric-Caching-Aufrufe zu arrangieren, da zwischen 400 und 700 Caches pro Seitenlast (und kaum Puts) abgerufen werden. Es scheint, dass die Verwendung einer einzelnen statischen DataCacheFactory (oder möglicherweise eines Paares in einem Round-Robin-Setup) der richtige Weg ist.

Rufe ich GetCache ("cacheName") für jede DataCache-Objektanforderung auf oder statische ich eine bei der Initialisierung der DataCache-Factory und verwende diese für alle Aufrufe?

Muss ich Ausnahmen behandeln, auf Fehlercodes prüfen und erneut versuchen?

Muss ich Konflikte berücksichtigen, wenn mehr als ein Thread versucht, den Cache-Speicher zu verwenden, und dasselbe Element (nach Schlüssel) benötigt?

Gibt es eine Art Dokumentation, die das Design und die Verwendung dieser Dokumentation richtig untersucht?

Einige Informationen, die ich bisher aus dem Forum gesammelt habe:

http: //social.msdn.microsoft.com/Forums/en-AU/velocity/thread/98d4f00d-3a1b-4d7c-88ba-384d3d5da91

"Das Erstellen der Factory erfordert eine Verbindung zum Cluster und kann einige Zeit in Anspruch nehmen. Sobald Sie jedoch das Factory-Objekt und den Cache haben, mit dem Sie arbeiten möchten, können Sie diese Objekte einfach wiederverwenden, um Puts und Gains im Cache auszuführen sollte viel schnellere Leistung sehen. "

http: //social.msdn.microsoft.com/Forums/en-US/velocity/thread/0c1d7ce2-4c1b-4c63-b525-5d8f98bb8a4

"Das Erstellen einer einzelnen DataCacheFactory (Singleton) ist leistungsfähiger als das Erstellen mehrerer DataCacheFactorys. Sie sollten DataCacheFactory nicht für jeden Aufruf erstellen, da dies zu Leistungseinbußen führt."

"Bitte versuchen Sie, einen Round-Robin-Algorithmus (mit 3/4/5 Factory-Instanzen) in Ihrem Singleton zu kapseln und die Ergebnisse der Belastungstests zu vergleichen."

http: //blogs.msdn.com/b/velocity/archive/2009/04/15/pushing-client-performance.asp

"Sie können die Anzahl der Clients erhöhen, um den Cache-Durchsatz zu erhöhen. Wenn Sie jedoch eine kleinere Anzahl von Clients benötigen und den Durchsatz erhöhen möchten, können Sie mehrere DataCacheFactory-Instanzen verwenden. Die DataCacheFactory-Instanz stellt eine Verbindung zu den Servern her (z Wenn 3 Server vorhanden sind, werden 3 Verbindungen hergestellt und alle Anforderungen von den Datencaches auf diese Verbindungen gemultiplext. Wenn das Put / Get-Volumen also sehr hoch ist, können diese TCP-Verbindungen einen Engpass aufweisen Erstellen Sie mehrere DataCacheFactory-Instanzen, und verwenden Sie dann die entsprechenden Vorgänge. "

Hier wird was bisher verwendet ... die Eigenschaft wird aufgerufen und wenn der Rückgabewert nicht null ist, wird eine Operation ausgeführt.

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;
    }
}

Stellen Sie diese Frage im Microsoft AppFabric-Forum:http: //social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614

Antworten auf die Frage(4)

Ihre Antwort auf die Frage