2013-07-11 6 views
1

В данных торговых приложений изменяется каждую секунду. Мы помещаем данные в объекте DataCache в роли работникаВозможно ли разместить часто изменяющиеся данные в роли кешеры в лазурном режиме?

public class TradeData 
    { 
     public int LoginId; 
     public double Price; 
     public long Time; 
     public int Profit; 
     public string Quote; 
     public double commission; 
    } 

putting data in a cache in infinite loop like 
DataCache dc = new DataCache("Trade") 
while(true) 
{ 
    TradeData[] TradeInfo = GetDataFromAPI(); 
    foreach(var t in TradeInfo) 
    { 
    dc.put(t.LoginId.Tostring(),t) 
    } 

} 

ли возможно поместить часто изменяющиеся данные в cacheworker роли в лазури?

ответ

1

Короткий ответ: это зависит, но, вероятно, да

Я предполагаю, что вы используете кэш в качестве механизма распределения данных - вместо того, чтобы идти на хранение ваши потребители собираются в кэш, чтобы найти последние значения. Это экономит ваше внимание на производительности, а также стоимости операций хранения таблиц

Записывает и читает из кеша, как правило, очень быстро. Если вы не включаете избыточность в своем выделенном кеше, ваши кэшированные данные будут храниться только в одном месте - таким образом, не ставьте нагрузку на узлы кэша, чтобы дублировать часто меняющиеся данные.

Помните, что если вам больше нужна точность данных, а затем производительность данных, вы, скорее всего, захотите рассмотреть возможность использования надежного центрального хранилища вместо кеша.

Если вы собираетесь использовать кеш, я бы использовал выделенный кеш и не совмещал кеш и использовал менее мощные серверы, а не более менее мощные серверы.

HTH

0

Проведите тесты производительности перед завершением подхода. Лазурный кеш работает быстро, но не , что быстро. Это быстрее, чем получение данных из конкурирующей базы данных, но не значительно быстрее, чем хранение таблиц/блоков. Если вы работаете на множестве узлов, вероятность того, что данные находятся на , эта машина низкая, поэтому большинству считываний придется извлекать данные с другого узла - для этого потребуется чтение сети и обработка на машине, которая может быть немного занятым, делая что-то еще (кеш Azure не реплицируется, он распространяет).

Да, это может быть осуществимо, но если вы ищете прирост производительности, кэш Azure может быть не самым результативным. Сначала выполните некоторые реалистичные тесты и сравните различные варианты. Вы можете быть удивлены тем, что хранилище таблицы/blob превосходит кеш.

+0

Если мы помещаем 1000 записей в выделенную кеш-роль, она занимает около 8-10 секунд, но таблица занимает гораздо больше времени, чем роль рабочего кэша. Есть ли хороший подход. –

+0

Я использую небольшой размер виртуальной машины для роли кэша и роли рабочего. –