Разделение данных и сохранение данных в распределенном кэше в памяти

Я изучаю различные распределенные базы данных в памяти для использования в наших приложениях. Я столкнулся с одним сценарием и хочу знать, возможно ли это в Redis Cache и Apache Ignite Cache?

  1. Скажем, размер моего распределенного кеша в памяти составляет 15 ГБ
  2. Я использую разделение своих данных (например, в Redis - Redis Cluster и аналогичный способ в Ignite)
  3. Когда какой-либо узел в кластере достигает порогового уровня с точки зрения памяти, автоматически ли он распределяет данные по узлу в Redis? Распределяет ли он данные автоматически по узлам в Ignite? Когда политика выселения применяется как в Redis, так и в Ignite? Только после того, как все узлы дойдут до там объема памяти?
  4. Что, если один или несколько узлов выйдут из строя в кластере или в кластер добавятся новые узлы?
  5. А как насчет резервного копирования данных? (Я знаю концепцию Redis Sentinel для Redis)

Я ищу такой сценарий (доступен в Redis Cache?), Описанный в этой ссылке в разделе обзора https://apacheignite.readme.io/docs/distributed-persistent-store

Может ли ниже быть достигнутое в Redis Cache?

Допустим, у меня 100 записей. Кэш может содержать только 40 записей (наиболее часто используемых) и 100 записей в файле на диске (ни в одной другой базе данных).

  1. Итак, если запрашивается что-либо из этих 100 записей, мне никогда не придется обращаться к реальной базе данных (например, Sybase db)?
  2. Если ключ найден в 100 записях, но его нет в кеше в памяти (40 записей), тогда получите этот ключ, поместите в кеш в памяти и замените другой ключ, используя политику выселения, в файл на диске (но здесь, на диске, у меня есть 100 записи всегда)
  3. Если ключ отсутствует в кэше и файле на диске, нам нужно только перейти в базу данных (Sybase) и получить его.

person Gopu_Tunas    schedule 09.09.2019    source источник


Ответы (2)


С Ignite (и абсолютным большинством других распределенных систем, включая Redis) вы просто масштабируете свой кластер, как только мониторинг показывает, что узел собирается выйти за пределы выделенного пространства RAM. Просто добавьте один дополнительный узел в свой кластер Ignite, и данные будут автоматически перераспределены.

Более того, с Ignite у вас есть возможность включить его постоянное хранение для хранения большего количества данных, чем умещается в ОЗУ, и для мгновенных перезапусков. При перезагрузке ничего предварительно загружать в оперативную память не требуется, Ignite читает с диска.

Надеюсь, это поможет. Судя по предоставленным деталям, Ignite идеально вам подойдет.

person dmagda    schedule 10.09.2019
comment
да. Я знаю, что это возможно в Ignite, но поиск, если подобное доступно или возможно в Redis. Я нашел этот docs.redislabs.com/latest/rs/ концепции / memory-architecture /, но он доступен в версии Redis Enterprise. Ищу подобное в бесплатной версии. - person Gopu_Tunas; 11.09.2019
comment
Ignite Persistence заменяет Redis Flash с точки зрения возможностей и бесплатности использования. Кроме того, вы можете рассмотреть бесплатную версию GridGain под названием Community Edition, которая выпускается чаще, что лучше для производственных сред. - person dmagda; 12.09.2019

При использовании Ignite вы должны убедиться, что у вас никогда не заканчивается память области данных. Перераспределения данных нет, и узел просто станет недоступен.

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

Если вы добавите новые узлы, некоторые данные будут им перераспределены.

Если вы используете постоянный режим, у вас не закончится память, поскольку ваши данные будут просто записаны на диск. Убедитесь, что на диске нет свободного места :) Когда узел отключен или добавлен, его поведение будет регулироваться Базовая топология (обычно данные не перемещаются сразу).

person alamar    schedule 09.09.2019
comment
Предоставляет ли Redis возможность никогда не исчерпывать память области данных? - person Gopu_Tunas; 09.09.2019