Redis: Обработка отказа? - PullRequest
15 голосов
/ 23 июня 2010

Redis действительно кажется отличным продуктом со встроенной репликацией и потрясающей скоростью.После тестирования это похоже на замену memcached 2010 года.

Однако, поскольку при обычном использовании memcached используется согласованное хеширование для равномерного распределения данных по серверам в пуле.Если один из серверов в пуле выходит из строя и перестает быть доступным, он обрабатывается прозрачно, и только потерянные ключи будут воссозданы и равномерно распределены по оставшимся доступным серверам в пуле.

Redis имеетс другой стороны, также встроенный шардинг, а также еще одна действительно интересная функция, называемая автоматической репликацией.Благодаря этому доступность данных может быть значительно увеличена при использовании подчиненных серверов для использования в случае попадания дерьма в вентилятор.

Однако я пока не нашел хорошего решения для обработки изменениястатус сервера Redis в качестве подчиненного, чтобы автоматически становиться новым мастером или любым другим способом автоматически обрабатывать аварийное переключение с помощью Redis.

Как это можно сделать?Каков будет подходящий подход к этому?

1 Ответ

21 голосов
/ 27 июня 2010

Однако, поскольку при обычном использовании memcached используется согласованное хеширование для равномерного распределения данных по серверам в пуле. Если один из серверов в пуле выходит из строя и перестает быть доступным, он обрабатывается прозрачно, и только потерянные ключи будут воссозданы и равномерно распределены между оставшимися доступными серверами в пуле.

Это не то, что делает memcached, клиентская библиотека делает всю эту магию;)

Однако я еще не нашел ни одного хорошего решения для изменения статуса сервера Redis в качестве ведомого, чтобы автоматически стать новым мастером или каким-либо другим способом автоматически обрабатывать аварийное переключение с помощью Redis.

Используйте SlaveofCommand для изменения характеристик. Для автоматического восстановления после сбоя потребуется немного больше кодирования, подключиться к серверу, и если вы потеряете соединение и не сможете установить его снова на время X, выберите один из подчиненных в качестве главного и измените статус подчиненного-ведущего на всех других серверах.

Обновление (01 августа 2012 г.): Теперь redis sentinel , решение для мониторинга и автоматического восстановления после отказа для версии 2.4.16 и выше.

...