Подтвердить что ты не робот

Редизация Redis и перераспределение разметки (кластерной)

  • Кто-нибудь знает разницу между редизацией redis и redis sharding?
  • Для чего они предназначены? Redis хранит данные в памяти, как это влияет на репликацию/очертание?
  • Можно ли использовать оба из них вместе?

Спасибо!

4b9b3361

Ответ 1

Sharding - почти антитела к репликации, хотя они являются ортогональными понятиями и хорошо работают вместе.

Sharding, также известный как разделение, разбивает данные вверх по ключу; Хотя репликация, также известная как зеркальное отображение, заключается в копировании всех данных.

Облицовка полезна для повышения производительности, уменьшения загрузки и загрузки памяти на любом одном ресурсе. Репликация полезна для высокой доступности чтения. Если вы читаете из нескольких реплик, вы также уменьшите скорость попадания на все ресурсы, но потребность в памяти для всех ресурсов останется прежней. Следует отметить, что, хотя вы можете писать подчиненному устройству, репликация только master- > slave. Таким образом, вы не можете масштабировать запись таким образом.

Предположим, что у вас есть следующие кортежи: [1: Apple], [2: Banana], [3: Cherry], [4: Durian], и у нас есть две машины A и B. С Sharding мы можем хранить ключи 2, 4 на машине А; и клавиши 1,3 на машине B. С репликацией мы храним ключи 1,2,3,4 на машине A и 1,2,3,4 на машине B.

Sharding обычно реализуется путем выполнения последовательного хэша на ключе. Вышеприведенный пример реализован с помощью следующей хеш-функции h (x) {return x% 2 == 0? A: B}.

Чтобы объединить концепции, мы можем реплицировать каждый осколок. В вышеприведенных случаях все данные (2,4) машины A могут быть реплицированы на машине C, и все данные (1,3) машины B могут быть воспроизведены на машине D.

Любое хранилище ключей (из которых Redis - только один пример) поддерживает ошпаривание, хотя некоторые функции кросс-ключа больше не будут работать. Redis поддерживает репликацию из коробки.

Ответ 2

Простыми словами фундаментальное различие между двумя концепциями заключается в том, что Sharding используется для масштабирования Writes, в то время как Replication используется для масштабирования Reads. Как уже сказал Алекс, Replication также является одним из решений для достижения HA.

Да, они оба обычно используются вместе, если вы считаете, как черепа можно реплицировать по узлам в кластере.

Что касается третьего вопроса, вместо опции RAM-flush лучше использовать Redis Append Only File (AOF). При незначительных затратах (с точки зрения скорости записи) вы получаете гораздо большую надежность своих записей. Это похоже на бинарный журнал mysql. Рекомендуется использовать 1 fsync/second.