Кэш с репликацией. Что кроме Redis'а?
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 23.01.19 00:41
Оценка:
День добрый, коллеги.

Понадобилось тут расшарить кое-какие данные между несколькими экземплярами одного и того же сервиса. Количество нод на данный момент 2, но в скором времени может вырасти еще до нескольких штук. Теоретически — до нескольких десятков, но это в далеком будущем. Писать данные на данный момент будет только одна нода, все остальные только читают. При отказе основной ноды, система выбирает нового лидера и писать данные начинает другая нода. Требуемая скорость репликации данных — в пределах нескольких секунд. Но очень хочется устойчивости к сбоям, чтоб вылет ноды в середине записи не приводил к порче данных.

Насколько я понимаю, тут бы подошел Redis, но на первый взгляд он тут смотрится как стрельба из пушки по воробьям. Хранимых данных там — сущие копейки, теоретический максимум в несколько мегабайт, а на практике будет скорее несколько десятков килобайт. Весь кэш нужен только в памяти, хранить на диске не нужно — при любом перезапуске системы данные перечитаются заново из внешнего источника.

Какие еще варианты стоит посмотреть? Пока нащупал H2, выглядит подходяще, потребление памяти небольшое, оно даже в embedded приложениях используется. Еще буду посмотреть на memcache/memcached.

В H2 пока немного смущает то, как оно обрабатывает вылет ноды из кластера. Нужно принудительно перезапускать кластерный режим на каждой ноде, причем всегда нужно указывать, какая нода является основной, а какие только копируют данные. Не то чтоб это было большой проблемой, но хочется чтоб оно как-нибудь само работало, без кучи лишних телодвижений — любое дополнительное действие есть потенциальный источник ошибок.

Можете что-нибудь посоветовать?
С уважением, Artem Korneev.
Отредактировано 23.01.2019 0:43 Artem Korneev . Предыдущая версия . Еще …
Отредактировано 23.01.2019 0:43 Artem Korneev . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.