Мне нужно сохранить некоторые данные в кеше на сервере. Серверы находятся в кластере, и вызов может перейти к любому из них. В таком случае лучше использовать реплицированный/распределенный кеш, например EhCache, или использовать сессионную липкость LB.Использование реплицированного кэша против липидного сеанса LB
Если размер данных (в кеше) большой, не повлияет ли это на производительность сериализации и де-сериализации на всех серверах?
Также в случае распределенного кеша, какое оптимальное количество серверов, до которых такой кеш действует. Так как данные реплицируются на все узлы и говорят, что число узлов равно 20, то он, как и master, решает задачу по всем узлам. Под этим я имею в виду, что каждый узел будет получать уведомления от других 19 и будет обновлять модификации других 19. Такие настройки типа os устанавливаются?
Спасибо Захорак за ответ. Но мой вопрос был связан скорее с реплицированным кешем, а не с распределенным кешем. Я думаю, что реплицированные кеши не будут масштабироваться по сравнению с распределенным кешем. Настолько лучше использовать либо LB липкий сеанс, либо распределенный кеш, как вы указали. –
В основном EhCache, Hazelcast и Infinispan пытаются решить аналогичные проблемы, разница в том, что EhCache делает это, будучи полностью реплицированным (как вы писали), а Hazelcast имеет DHT. Infinispan поддерживает обе реализации. Ограничение для полностью реплицированного кеша можно легко вычислить по тому, насколько большой объект и сколько места у вас есть на машине, по крайней мере, так как добавление новых машин не ускорит кеш. Я обновил свой ответ по этому поводу. – peter
Я не думаю, что кеш-кеш должен быть реплицирован. Это конфиг. Можно выбрать набор узлов, которые реплицируются друг с другом для избыточности и разных «кешей», идентифицированных идентификаторами с разными конфетами. Таким образом, можно хранить некоторую информацию, которая реплицируется, а другие - нет. Решение о том, что нужно копировать и что не зависит от размера информации и потребностей бизнеса – tgkprog