Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер, чтобы освободить память нод под полезные текущие данные. То есть, хочется брать кэш только с кэш-сервера. Быстродействие такого решения полностью устроит. Но как это сделать, пока не понимаю.
Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный.
Вторая мысль — использовать диск для кэша, минимизировав использование оперативной памяти. Но тоже не очень нравится, так как хочется полностью разгрузить ноды от долгого хранения каких-либо данных. И эти настройки кэша, насколько понимаю, будут распространяться и на сам кэш-сервер, что совсем не нужно, так как там специально поставлено много оперативной памяти.
Здравствуйте, Donz, Вы писали:
D>Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. D>Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер
Так распределенный или централизованный? Ты уж определись для начала.
D>Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный.
В сторону memcached посмотри.
D>Вторая мысль — использовать диск для кэша
Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?
Re[2]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
Здравствуйте, wildwind, Вы писали:
D>>Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер W>Так распределенный или централизованный? Ты уж определись для начала.
Не важно в контексте этого вопроса. Пока будет централизованный на одном сервере, потом станет распределенным, но все равно должен быть только на кэш-серверах, но не на нодах.
D>>Есть подозрение, что надо смотреть в сторону BigMemory, но очень этого не хочется. К тому же этот продукт не бесплатный. W>В сторону memcached посмотри.
Это одна из реализаций распределенного кэша. Только EhCache очень хорошо интегрируется в яву и уже используется в проектах. В чем преимущество memcached? Решение кэша только на сервере доступно из коробки?
D>>Вторая мысль — использовать диск для кэша W>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним?
Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД. К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД.
Re[3]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
Здравствуйте, Donz, Вы писали:
W>>Так распределенный или централизованный? Ты уж определись для начала. D>Не важно в контексте этого вопроса. Пока будет централизованный на одном сервере, потом станет распределенным, но все равно должен быть только на кэш-серверах, но не на нодах.
Как это не важно, это ключевое решение, от него зависит выбор вариантов. Зачем нужен именно распределенный, есть понимание? Он сложнее в обслуживании, так что решение должно быть обоснованным.
W>>В сторону memcached посмотри. D>Это одна из реализаций распределенного кэша. Только EhCache очень хорошо интегрируется в яву и уже используется в проектах. В чем преимущество memcached?
Off-heap прежде всего. То, за что BigMemory стоит денег.
D>Решение кэша только на сервере доступно из коробки?
Не понял, что это значит? В любом случае почитать на сайте не сложно.
W>>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним? D>Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД.
А в цифрах? Или это из головы предположение? "Диски" БД обычно классом повыше.
D>К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД.
Неужели у вас настолько медленная БД? Возможно ее оптимизация и будет достаточным решением.
Re: Distributed EhCache - как заставить использовать кэш только с сервера Terrac
Здравствуйте, Donz, Вы писали:
D>Есть задача поднять распределенный кэш, чтобы все ноды в кластере всегда обладали актуальными данными. Также одна из главных задач — вынести кэш из локальной памяти каждой ноды на кэш-сервер, чтобы освободить память нод под полезные текущие данные. То есть, хочется брать кэш только с кэш-сервера.
Здравствуйте, wildwind, Вы писали:
W>Как это не важно, это ключевое решение, от него зависит выбор вариантов. Зачем нужен именно распределенный, есть понимание? Он сложнее в обслуживании, так что решение должно быть обоснованным.
Пока распределенный не нужен. Когда-нибудь потом, возможно, понадобится отказоустойчивый кэш-сервер, тогда, соответственно, нужно будет сделать кэш распределенным.
D>>Решение кэша только на сервере доступно из коробки? W>Не понял, что это значит? В любом случае почитать на сайте не сложно.
Уже разобрался. Я имел в виду различные настройки для локального и серверного кэшей. Сначала я не нашел, как можно настроить объем хранимой информации в локальном кэше каждой ноды, а как настроить серверный кэш. Уже нашел.
W>>>Боюсь спросить, где же хранятся данные постоянно, что кэш, размещенный на диске, может ускорить доступ к ним? D>>Очевидно в БД. Грузить локальный диск каждой ноды или кэш-сервера намного дешевле, чем грузить диск БД. W>А в цифрах? Или это из головы предположение? "Диски" БД обычно классом повыше.
Все посчитано специально обученными людьми. Давайте не отклоняться от темы. Задача — разгрузить ресурсы базы и все, что с ней связано, начиная от соединений в пуле клиента, заканчивая нагрузкой на память, процессор, дисковую систему кластера БД.
D>>К тому же выгрузка данных из кэша (по сути NoSQL БД) будет явно быстрее, чем из реляционной БД. W>Неужели у вас настолько медленная БД? Возможно ее оптимизация и будет достаточным решением.
Ты сравниваешь выгрузку данных из оперативной памяти с полноценным запросом в реляционную БД и делаешь вывод, что последняя у нас очень медленная?
В общем, опять тема куда-то уходит.
Re[2]: Distributed EhCache - как заставить использовать кэш только с сервера Ter
Здравствуйте, 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