Almacenamiento en caché de AppFabric: uso adecuado de DataCacheFactory y DataCache

Estoy buscando la forma más eficaz de organizar el uso de la fábrica de caché de datos y de caché de datos para las llamadas de almacenamiento en caché de AppFabric, para obtener entre 400 y 700 caché por carga de página (y casi ninguna colocación). Parece que usar un único DataCacheFactory estático (o posiblemente un par en una configuración round-robin) es el camino a seguir.

¿Llamo a GetCache ("cacheName") para cada solicitud de objeto DataCache, o hago una estática en el momento en que se inicializa la fábrica de DataCache y la uso para todas las llamadas?

¿Tengo que manejar excepciones, verificar códigos de falla e intentar reintentos?

¿Tengo que considerar la contención cuando más de un hilo intenta usar el almacén de caché y quiere el mismo elemento (por clave)?

¿Existe algún tipo de documentación que explore adecuadamente el diseño y el uso de esto?

Alguna información que he reunido hasta ahora del foro:

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

"La creación de la fábrica implica conectarse al clúster y puede llevar algo de tiempo. Pero una vez que tenga el objeto de fábrica y la caché con la que desea trabajar, simplemente puede reutilizar esos objetos para colocar y entrar en la caché, y debe ver un rendimiento mucho más rápido ".

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

"Crear un DataCacheFactory (singleton) es más eficaz que crear múltiples DataCacheFactory. No debe crear DataCacheFactory para cada llamada, tendrá un impacto en el rendimiento".

"Intente encapsular el algoritmo round-robin (que tenga 3/4/5 instancias de fábrica) en su singleton y compare los resultados de la prueba de carga".

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

"Puede aumentar el número de clientes para aumentar el rendimiento de la memoria caché. Pero a veces, si desea tener un conjunto más pequeño de clientes y aumentar el rendimiento, un truco es utilizar varias instancias de DataCacheFactory. La instancia de DataCacheFactory crea una conexión con los servidores (e. .g si hay 3 servidores, creará 3 conexiones) y multiplexará todas las solicitudes de las cachés de datos a estas conexiones. Por lo tanto, si el volumen de poner / obtener es muy alto, estas conexiones TCP podrían tener un cuello de botella. Entonces, una forma es crear varias instancias de DataCacheFactory y luego usar las operaciones en ellas ".

Aquí lo que está en uso hasta ahora ... se llama a la propiedad y si el valor de retorno no es nulo, se realiza una operación.

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

Vea esta pregunta en el foro de Microsoft AppFabric:http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f

Respuestas a la pregunta(2)

Su respuesta a la pregunta