Кэширование AppFabric - правильное использование DataCacheFactory и DataCache

Я ищу наиболее эффективный способ организации использования фабрики datacache и datacache для вызовов кэширования AppFabric, так как от 400 до 700 кешей получает на загрузку страницы (и почти ни одного пута). Кажется, что использование единственного статического DataCacheFactory (или, возможно, пары в циклической установке) - это путь.

Должен ли я вызывать GetCache ("cacheName") для каждого запроса объекта DataCache, или я делаю один статический в момент инициализации фабрики DataCache и использую его для всех вызовов?

Нужно ли обрабатывать исключения, проверять коды ошибок и повторять попытки?

Должен ли я учитывать конфликт, когда более одного потока пытается использовать хранилище кэша и хочет один и тот же элемент (по ключу)?

Есть ли какая-то документация, которая должным образом исследует дизайн и использование этого?

Некоторая информация, которую я собрал так далеко от форума:

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

«Создание фабрики включает в себя подключение к кластеру и может занять некоторое время. Но как только у вас есть фабричный объект и кеш, с которым вы хотите работать, вы можете просто повторно использовать эти объекты для размещения и попадания в кеш, и вам следует увидеть гораздо быстрее производительность. "

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

«Создание одного DataCacheFactory (singleton) более эффективно, чем создание нескольких DataCacheFactory. Вы не должны создавать DataCacheFactory для каждого вызова, это приведет к снижению производительности».

«Пожалуйста, попробуйте инкапсулировать алгоритм циклического перебора (имеющий 3/4/5 заводских экземпляров) в ваш синглтон и сравните результаты нагрузочного теста».

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

«Вы можете увеличить количество клиентов, чтобы увеличить пропускную способность кэша. Но иногда, если вы хотите иметь меньший набор клиентов и увеличить пропускную способность, уловка заключается в использовании нескольких экземпляров DataCacheFactory. Экземпляр DataCacheFactory создает соединение с серверами (например, .g если есть 3 сервера, он создаст 3 соединения) и мультиплексирует все запросы от кэшей данных к этим соединениям. Поэтому, если объем ввода / вывода очень высок, эти соединения TCP могут быть узкими местами. Поэтому один из способов - создать несколько экземпляров DataCacheFactory, а затем использовать операции над ними. "

Вот что используется до сих пор ... свойство вызывается, и если возвращаемое значение не равно NULL, выполняется операция.

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

Посмотрите этот вопрос на форуме Microsoft AppFabric:http://social.msdn.microsoft.com/Forums/en-AU/velocity/thread/e0a0c6fb-df4e-499f-a023-ba16afb6614f

Ответы на вопрос(2)

Ваш ответ на вопрос