Будет ли Terracota хорошим решением для быстрой смены больших данных, состоящих из мелких объектов?
Я оцениваю Терракоту для моей текущей постановки проблемы. Процесс требует значительных ресурсов процессора и занимает около 5-10 ГБ оперативной памяти (ОЗУ). Каждый объект в памяти имеет размер 1 килобайт и состоит из нескольких примитивных типов данных. Все данные ОЗУ проходят тысячи итераций, и каждая итерация меняет все объекты. Каждый объект модифицируется полностью. Процесс занимает несколько дней, чтобы закончить.
Более миллиона объектов разделены и теперь работают на нескольких основных машинах, но мне нужно больше энергии и гораздо больше оперативной памяти (для больших проблем). Данные / объекты, обработанные одним потоком, не передаются другим
Будет ли Terracota хорошим решением? Будет ли синхронизация миллиона объектов на сервере кластеризации действительно плохим узким местом, делающим его неэффективным?
1 ответ
Я думаю, что терракота лучше всего подходит для кэширования и быстрого поиска. В качестве скорости размещения я видел частоту 10K "пакетных операций" в секунду на экземпляр сервера Cache. Режим "пакетного обновления" означает, что вы можете поместить коллекцию записей в один выстрел, что будет намного более эффективным по сравнению с одиночным размещением.
Вот пример пакетного обновления:
cache.setNodeBulkLoadEnabled(true);
try
{
Collection<Element> entries= new ArrayList<Element>();
while (...)
{
entries.add(new Element(key, value));
}
cache.putAll(entries);
}
finally
{
cache.setNodeBulkLoadEnabled(false);
}
Кроме того, Terracotta имеет функцию BigMemory, которая позволяет использовать память вне кучи JVM. Чтобы включить его, вы должны добавить в свой ehcache.xml:
<cache name="com.xyz.MyPOJO" maxMemoryOffHeap="3g">
<terracotta/>
</cache>
В приведенном выше примере будет использоваться 3Gig от Ram вне вашей JVM. В общем случае размер кучи не должен превышать 4G, в противном случае ваша JVM будет тратить на GC тонны циклов... что в вашем случае еще больше замедляет ваши вычисления.
Другой альтернативой для проверки являются решения "Вычисления / Сетка данных". Вы можете начать с http://www.gridgain.com/ и http://www.gigaspaces.com/