2012-04-27 4 views
0

Теперь мы перемещаем существующее веб-приложение на Azure. Azure Caching - very slow.Azure - альтернативный способ замедления кэширования Windows Azure для нескольких экземпляров

Есть ли альтернативный механизм кэширования (лучше, чем Azure Caching) для нескольких экземпляров в Azure? Например, сохранение кеширования в Azure Storage или Azure SQL.

Благодарим вас за ввод!

Добавлено

public class AzureCacheService : ICacheService 
{ 
    readonly DataCacheFactory _factory = new DataCacheFactory(); 

    private readonly DataCache _cache; 

    public AzureCacheService() 
    { 
     _cache = _factory.GetDefaultCache(); 
    } 

    public object Get(string key) 
    { 
     return _cache.Get(key); 
    } 

    public void Insert(string key, object obj) 
    { 
     if (obj != null) 
     { 
      _cache.Put(key, obj, new TimeSpan(3, 0, 0)); 
     } 
    } 

    public void Remove(string key) 
    { 
     _cache.Remove(key); 
    } 
} 

*** Accessing *** 
IoC.Resolve<ICacheService>().Insert(key, MyObject); 

IoC.Resolve<ICacheService>().Remove(key); 
+0

Можете ли вы дать нам немного больше о том, что именно латентность вы видите (а также API, которые вы используете, объектные размеры и т.д.)? Может помочь определить, где проблема. – Tom

+0

Хотя первоначальный запуск может занять несколько секунд, как только соединения будут сделаны, это очень быстро. Я обычно вижу задержки в 10 мс. Если это значительно медленнее, чем, то, скорее всего, вы делаете что-то неправильно. –

+0

Tom & Breishl - Я добавил код. – Win

ответ

2

В целом, WA Caching не медленный, особенно если вы включите «местное кэширование» (которое обычно должно включать задержку до около 0 мс, если данные подходят в памяти). Memcached - это еще одна возможность: http://blog.smarx.com/posts/memcached-in-windows-azure.

Вы не найдете разницу в величине порядка между производительностью WA Caching и Memcached, но по моему опыту Memcached работает немного быстрее. Memcached не будет иметь возможность превзойти функцию «локального кэширования» в WA Caching, так как буквально нет латентности. (Это доступ к данным в процессе без сериализации. Примерно такой же эффективный, как это возможно.)

+0

Локальный кеш будет значительно увеличивать производительность вашего кеша при чтении, если это нажмите в локальном кеше. Но я не думаю, что это увеличит производительность записи, так как по-прежнему нужно перейти в AppFabric Cache. –

+0

Право Shaun о производительности записи. – smarx

0

Это было мое недоразумение, что Windows Azure Caching основан на SQL Azure и после того, чтобы исправить ресурсы я был в состоянии проверить, что он уверен InMemory кэш. поэтому, если вы решите написать свой собственный, используя SQL Azure, это будет намного медленнее того, что вы уже получаете сейчас, и то же самое относится к хранилищу Azure Table. [Остальные комментарии удалены]

+1

«Бэкэнд для Windows Azure Caching основан на SQL Azure». Вы в этом уверены? Я понимаю, что он построен на компоненте кэширования AppFabric (тот же, что поставляется для Windows), который является чисто кешем в памяти. – smarx

+0

Это просто не правильно. Azure Caching - это в основном кейс для Windows Appfabric Cache, который является кешем в памяти. Он не включает SQL Server. «Кэширование обеспечивает распределенный кеш приложений в памяти» - http://www.windowsazure.com/en-us/home/features/caching/ –

0

Вы можете использовать недавно выпущенное кэширование Windows Azure (Preview). Он имеет 5-кратное улучшение по сравнению с общим кэшированием.

Ссылка: http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/

+0

Karthik R - Да, вы можете использовать функции Windows Sever AppFabric в новом кэшировании Windows Azure (Preview). Я оставлю принятый ответ так, как только ответ был верным на тот момент.Спасибо за ваш ответ! – Win

Смежные вопросы