JGroups ReplicatedHashMap в кластере

Мое веб-приложение на основе Spring развернуто в рабочей среде в кластере Tomcat (4+ узла) с закрепленными сеансами. Максимальное количество узлов не превысит 8-10 через несколько лет.

Мне нужно кэшировать некоторые данные (в основном конфигурацию), чтобы не попасть в Oracle. Поскольку природа этих данных в основном связана с конфигурацией, я бы сказал, что соотношение операций чтения и записи составляет 999999/1.

Я не хочу использовать полнофункциональное решение для кэширования, такое как Infinispan/Hazelcast/Redis, поскольку оно усложняет работу продукта, и требуется кэшировать некоторые небольшие данные, в основном доступные только для чтения (скажем, несколько сотен килобайт самый)

Сначала я хотел сам реализовать простую карту репликации, потом увидел [JGroups][1] корабли с [ReplicatedHashMap][1]. Я думаю, что это соответствует моим потребностям, но я не уверен, что я что-то упускаю.

Что еще я должен учитывать? Кто-нибудь использовал его в производстве?


person isah    schedule 14.08.2018    source источник


Ответы (1)


ReplicatedHashMap — это один класс из 700 строк, поэтому он не особенно сложен и использует JGroups, который используется в производстве уже десять лет.

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

RHM реплицирует все данные на все узлы, поэтому, если у вас много узлов (а у вас их нет) или объем данных велик, то ReplCache может быть лучшим выбором.

person Bela Ban    schedule 16.08.2018
comment
Спасибо Бела Бан за ваш вклад. Одна из вещей, которую я хочу сохранить в кеше, — это ключ шифрования. Теперь, когда я вижу, что ReplicatedHashMap использует протокол UDP для синхронизации узлов, что произойдет, если один из узлов не получит повернутый ключ? Шифровать данные с помощью устаревшего ключа шифрования нельзя, поэтому, возможно, мои требования все-таки требуют транзакций. Могу ли я продолжать использовать UDP для обнаружения и TCP для синхронизации в JGroups? - person isah; 16.08.2018
comment
Обратите внимание, что RHM может использовать любую конфигурацию, будь то UDP или TCP. В конечном итоге узел (посредством повторной передачи) получит все сообщения, если только он не выйдет из строя. - person Bela Ban; 17.08.2018