Distributed EhCache - как заставить использовать кэш только с сервера Terracotta
От: Donz Россия http://donz-ru.livejournal.com
Дата: 16.05.12 07:10
Оценка:
Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер, чтобы освободить память нод под полезные текущие данные. То есть, хочется брать кэш только с кэш-сервера. Быстродействие такого решения полностью устроит. Но как это сделать, пока не понимаю.
Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный.
Вторая мысль — использовать диск для кэша, минимизировав использование оперативной памяти. Но тоже не очень нравится, так как хочется полностью разгрузить ноды от долгого хранения каких-либо данных. И эти настройки кэша, насколько понимаю, будут распространяться и на сам кэш-сервер, что совсем не нужно, так как там специально поставлено много оперативной памяти.
distributed ehcache terracotta
Re: Distributed EhCache - как заставить использовать кэш только с сервера Terrac
От: wildwind Россия  
Дата: 16.05.12 07:39
Оценка:
Здравствуйте, Donz, Вы писали:

D>Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными.

D>Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер
Так распределенный или централизованный? Ты уж определись для начала.

D>Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный.

В сторону memcached посмотри.

D>Вторая мысль — использовать диск для кэша

Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?
Re[2]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
От: Donz Россия http://donz-ru.livejournal.com
Дата: 16.05.12 07:52
Оценка:
Здравствуйте, wildwind, Вы писали:

D>>Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер

W>Так распределенный или централизованный? Ты уж определись для начала.

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

D>>Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный.

W>В сторону memcached посмотри.

Это одна из реализаций распределенного кэша. Только EhCache очень хорошо интегрируется в яву и уже используется в проектах. В чем преимущество memcached? Решение кэша только на сервере доступно из коробки?

D>>Вторая мысль — использовать диск для кэша

W>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?

Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД. К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД.
Re[3]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
От: wildwind Россия  
Дата: 16.05.12 09:26
Оценка:
Здравствуйте, Donz, Вы писали:

W>>Так распределенный или централизованный? Ты уж определись для начала.

D>Не важно в контексте этого вопроса. Пока будет централизованный на одном сервере, потом станет распределенным, но все равно должен быть только на кэш-серверах, но не на нодах.

Как это не важно, это ключевое решение, от него зависит выбор вариантов. Зачем нужен именно распределенный, есть понимание? Он сложнее в обслуживании, так что решение должно быть обоснованным.

W>>В сторону memcached посмотри.

D>Это одна из реализаций распределенного кэша. Только EhCache очень хорошо интегрируется в яву и уже используется в проектах. В чем преимущество memcached?
Off-heap прежде всего. То, за что BigMemory стоит денег.

D>Решение кэша только на сервере доступно из коробки?

Не понял, что это значит? В любом случае почитать на сайте не сложно.

W>>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?

D>Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД.
А в цифрах? Или это из головы предположение? "Диски" БД обычно классом повыше.

D>К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД.

Неужели у вас настолько медленная БД? Возможно ее оптимизация и будет достаточным решением.
Re: Distributed EhCache - как заставить использовать кэш только с сервера Terrac
От: RomikT Германия  
Дата: 16.05.12 09:51
Оценка: 3 (1)
Здравствуйте, Donz, Вы писали:

D>Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер, чтобы освободить память нод под полезные текущие данные. То есть, хочется брать кэш только с кэш-сервера.


У EhCache есть Cache Server, правда все привычные java api похоже идут лесом.
Если использование EhCache необязательное условие, то посмотрите на альтернативы — у продуктов, которые изначально позиционируются как IMDG, такая фича обычно есть из коробки:
Hazelcast — Java Client
Infinispan — Java Hot Rod Client
GridGain — Java, Scala and Native Clients
GigaSpaces — Master-Local space topology
и так далее.
Re[4]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
От: Donz Россия http://donz-ru.livejournal.com
Дата: 16.05.12 14:29
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Как это не важно, это ключевое решение, от него зависит выбор вариантов. Зачем нужен именно распределенный, есть понимание? Он сложнее в обслуживании, так что решение должно быть обоснованным.


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

D>>Решение кэша только на сервере доступно из коробки?

W>Не понял, что это значит? В любом случае почитать на сайте не сложно.

Уже разобрался. Я имел в виду различные настройки для локального и серверного кэшей. Сначала я не нашел, как можно настроить объем хранимой информации в локальном кэше каждой ноды, а как настроить серверный кэш. Уже нашел.

W>>>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?

D>>Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД.
W>А в цифрах? Или это из головы предположение? "Диски" БД обычно классом повыше.

Все посчитано специально обученными людьми. Давайте не отклоняться от темы. Задача — разгрузить ресурсы базы и все, что с ней связано, начиная от соединений в пуле клиента, заканчивая нагрузкой на память, процессор, дисковую систему кластера БД.

D>>К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД.

W>Неужели у вас настолько медленная БД? Возможно ее оптимизация и будет достаточным решением.

Ты сравниваешь выгрузку данных из оперативной памяти с полноценным запросом в реляционную БД и делаешь вывод, что последняя у нас очень медленная?
В общем, опять тема куда-то уходит.
Re[2]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
От: Donz Россия http://donz-ru.livejournal.com
Дата: 16.05.12 14:29
Оценка:
Здравствуйте, RomikT, Вы писали:

D>>Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер, чтобы освободить память нод под полезные текущие данные. То есть, хочется брать кэш только с кэш-сервера.


RT>У EhCache есть Cache Server, правда все привычные java api похоже идут лесом.

RT>Если использование EhCache необязательное условие, то посмотрите на альтернативы — у продуктов, которые изначально позиционируются как IMDG, такая фича обычно есть из коробки:
RT>Hazelcast — Java Client
RT>Infinispan — Java Hot Rod Client
RT>GridGain — Java, Scala and Native Clients
RT>GigaSpaces — Master-Local space topology
RT>и так далее.

Спасибо. Уже разобрался. Утро, даже обед вечера мудренее
Re: Distributed EhCache - как заставить использовать кэш только с сервера Terrac
От: Donz Россия http://donz-ru.livejournal.com
Дата: 16.05.12 14:30
Оценка:
Здравствуйте, Donz, Вы писали:

То, что я искал, описано тут: http://ehcache.org/documentation/configuration/cache-size и называется maxEntriesLocalHeap
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.