Как кластер redis перераспределяет существующие ключи, когда кластер добавляет или удаляет новый узел? - PullRequest
0 голосов
/ 17 октября 2019

Я прочитал документ с сайта Redis, и вот как он описывает шардинг:

'

В Redis Cluster есть 16384 слотов хэша, и для вычисления того, что такое слот хешаданный ключ, мы просто берем CRC16 ключа по модулю 16384.

Каждый узел в кластере Redis отвечает за подмножество слотов хэша, поэтому, например, у вас может быть кластер с 3 узлами, где:

Узел A содержит слоты хеш-функции от 0 до 5500. Узел B содержит слоты хеш-функции от 5501 до 11000. Узел C содержит слоты хеш-функции от 11001 до 16383. Это позволяет легко добавлять и удалять узлы в кластере. Например, если я хочу добавить новый узел D, мне нужно переместить некоторый слот хеша из узлов A, B, C в D. Аналогично, если я хочу удалить узел A из кластера, я могу просто переместитьслоты хэша, обслуживаемые от A до B и C. Когда узел A будет пуст, я могу полностью удалить его из кластера.

'

Прежде всего, яВыделил то, что смущает меня. При добавлении узла redis требует переустановить существующие ключи в A, B, C и распределить их в A, B, C, D.

Как работает эта операция перераспределения? Кажется, это не так просто, особенно, когда сервисы все еще работают. Ваше действие шардинга не должно влиять на текущую работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...