Sharding - это почти антитела к репликации, хотя они являются ортогональными концепциями и хорошо работают вместе.
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.
Шелдинг обычно реализуется путем выполнения последовательного хэша по ключу. Вышеприведенный пример был реализован со следующей хеш-функцией h (x) {return x% 2 == 0? A: B}.
Чтобы объединить концепции, мы можем копировать каждый осколок. В вышеприведенных случаях все данные (2,4) машины A могут быть воспроизведены на машине C, и все данные (1,3) машины B могут быть воспроизведены на машине D.
Любой ключ- хранилище значений (из которых Redis - только один пример) поддерживает очертание, хотя некоторые функции кросс-ключа больше не будут работать. Redis поддерживает репликацию из коробки.
прохладный. Я думаю, что ответ не ограничивается только redis – joetsuihk
Хороший ответ (в общем), но на самом деле не отвечает на вопрос imho :) –
Я думаю, что этот ответ дает хороший ответ на то, что задавал вопрос. Очень упрощенное, но правильное объяснение. +1 –