2017-01-06 11 views
0

Redis не поддерживает репликацию главного мастера.Redis кластер/балансировка нагрузки

В Redis учебнике я могу видеть, что существует конфигурация, с 6 узлов, 3 мастером, 3 рабами,

Может ли одно сказать мне, что является целью данной конфигурации (рабы для отказоустойчивости , какова цель 3 мастера?)

Мое требование состоит в том, чтобы уменьшить количество соединений, сделанных с сервера приложений, до Redis. поэтому я искал способ, которым я могу указать на несколько узлов redis, поэтому, если я создам ключ из узла redis 1, я могу удалить этот ключ из узла Redis 2.

Возможно ли это?

ответ

1

Прежде всего, вы можете изменить конфигурацию по умолчанию, если вы делаете небольшую работу в

Redis-trib.rb

в функции def check_create_parameters. Вы можете установить одну главную и одну ведомую реплику.

Целью этой конфигурации является отказоустойчивость. Ведомые также могут использоваться для чтения (READONLY). В трех мастерах хешслоты одинаково распределены и с алгоритмом балансировки нагрузки вы можете повторно распределить и фактические ключи. Этапы возможного алгоритма, distirbutes ключи между узлами (проверено мной, и она работает, как ожидалось):

  1. Найти толпу мастеров
  2. Получить общее количество ключей, они держат
  3. для каждого магазина мастера-узла имени хоста, порт и количество ключей
  4. вычислить ключи, которые каждый мастер должен держать так, чтобы распределения ключей должны быть сбалансированы (общие ключи кластера/число мастеров)
  5. Найти который ведущие узлы должны принять или дать ключи и общее количество ключей, которые они должны дать/принять
  6. Охарактеризуйте мастера, как исходные или целевые узлы в зависимости от того они получают или раздавать ключи соответственно
  7. начинают мигрировать из исходного узла к целевой узлы, то сначала hashslots, а затем соответствующие ключи и итерация, пока все мастера не имеют одинаковое количество ключей

Этот алгоритм поможет минимизировать время отклика. Что я имею в виду:

С тремя мастерами время отклика можно свести к минимуму. Если у вас есть конфигурация с одним ведущим, и этот мастер содержит, например, 30000 #keys, время отклика для получения 1000 клавиш одновременно - это> из конфигурации с 2 мастерами, каждая из которых содержит 15 000 штук.

Если вы создаете ключ в master1, тогда, если вы попытаетесь найти (прочитали) этот ключ от master2, вы получите сообщение MOVED. Таким образом, решение заключается в создании интеллектуального клиента, который отображает хэш-листы на соответствующий узел. Таким образом, вы можете удалить ключ из master2 только в том случае, если master2 перенаправляет ваш запрос на правильный мастер.

Надеюсь, что это поможет.

+0

Вы могли бы предоставить ссылки на вышесказанное? – quintindk

+0

Посмотрите: https://www.researchgate.net/publication/309732099_Load_Balancing_in_In-Memory_Key-Value_Stores_for_Response_Time_Minimization – Antonis

 Смежные вопросы

  • Нет связанных вопросов^_^