AppFabric Caching - Richtige Verwendung von DataCacheFactory und DataCache

Ich bin auf der Suche für die meisten performante Art und Weise zu arrangieren Nutzung der datacache und datacache Fabrik für AppFabric-caching-Aufrufe, die zwischen 400 und 700 cache bekommt pro Seite laden (und kaum legt). Es scheint, dass mit einer einzigen statischen DataCacheFactory (oder vielleicht ein paar in einer round-robin-setup) ist der Weg zu gehen.

Rufe ich GetCache("cacheName") für jeden DataCache-Objekt anfordern, oder mache ich eine statische damals DataCache factory initialisiert und verwendet, dass für alle Anrufe?

Muss ich die Ausnahmen behandeln, überprüfen Sie die fail-codes und versucht, Wiederholungen?

Muss ich beachten, Streit, wenn mehr als ein thread versucht, den cache-Speicher und will den gleichen Artikel (per Schlüssel)?

Gibt es irgendeine Art von Dokumentation, die ordnungsgemäß untersucht die Gestaltung und Nutzung dieser?


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

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

"Erstellen der Fabrik umfasst den Anschluss an die cluster und kann einige Zeit in Anspruch nehmen. Aber wenn man einmal das factory-Objekt und das cache, mit der Sie arbeiten möchten, Sie können einfach die Wiederverwendung dieser Objekte zu tun, versetzt und gelangt in den cache, und Sie sollten sehen, die wesentlich schnellere Leistung."

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

"Erstellung von Einzel-DataCacheFactory (singleton) ist mehr Leistung als das erstellen mehrerer DataCacheFactory. Sie sollten nicht DataCacheFactory für jeden Anruf, es wird performance-hit."

"Bitte versuchen Sie, Kapseln round-robin-Algorithmus (mit 3/4/5 factory-Instanzen) in Ihrer singleton und vergleichen Sie Last-test-Ergebnisse."

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

"Sie können erhöhen Sie die Anzahl der clients zu erhöhen, die cache-Durchsatz. Aber manchmal, wenn Sie wollen, um kleinere Kunden und den Durchsatz zu erhöhen, ein trick ist die Verwendung mehrerer DataCacheFactory-Instanzen. Die DataCacheFactory-Instanz erstellt eine Verbindung zu den Servern (e..g wenn es 3 Server, es werden 3 Anschlüsse) und bündelt alle Anforderungen aus dem datacaches auf diese verbindungen. Also, wenn der put/get-Volumen ist sehr hoch, diese TCP-verbindungen könnten beseitigt werden. Also eine Möglichkeit ist das erstellen mehrerer DataCacheFactory-Instanzen und verwenden Sie dann die Operationen auf Ihnen."


Hier, was in Verwendung ist so weit... die Eigenschaft aufgerufen wird und der Rückgabewert ist nicht null hat, wird ein Vorgang ausgeführt wird.

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

Sehen diese Frage auf Microsoft AppFabric-forum: http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f

Kommentar zu dem Problem
Es ist eine Antwort auf diese nun auch im forum. Überprüfen Sie den obigen link. Kommentarautor: CRice

InformationsquelleAutor der Frage CRice | 2010-09-24

Schreibe einen Kommentar