Надежность: модель Master/Slave обречена?

Все больше и больше баз данных noSQL, которые находятся в центре внимания, используют шаблон master/slave для обеспечения «доступности», но то, что он делает (по крайней мере, с моей точки зрения), создает слабое звено в цепочке, которая сломается в любое время. - Мастер выходит из строя, ведомые перестают функционировать.

Это отличный способ обработки больших объемов данных и выравнивания операций чтения/записи, но с точки зрения доступности? Не так много...

Я понимаю из некоторых noSQL, что ведомые устройства можно легко превратить в ведущие, но это было бы головной болью в большинстве приложений. Верно?

Так как же вы заботитесь о таких вещах? Как работают базы данных master/slave в реальном мире?


person Industrial    schedule 04.09.2010    source источник


Ответы (1)


Это довольно общий вопрос; можете ли вы указать, о каких хранилищах данных вы конкретно говорите?

Я работал с MongoDB, и он справляется с этим очень изящно; каждый член в «наборе реплик» (в основном, в кластере ведущий-подчиненный) имеет право стать ведущим. При подключении к набору реплик набор сообщит подключающемуся клиенту о каждом элементе в наборе. Если мастер в наборе отключается, ведомые устройства автоматически выберут нового мастера, а клиент (поскольку у него есть список всех узлов в наборе) будет пробовать новые узлы, пока не подключится; узел, к которому он подключается, сообщит клиенту о новом мастере, и клиент переключит свое соединение. Это обеспечивает полностью прозрачную отработку отказа ведущий/ведомый без каких-либо изменений в вашем приложении.

Это, очевидно, хорошо для одиночных подключений, но как насчет перезапусков? Драйвер MongoDB также справляется с этим; он может принять список узлов, к которым нужно попытаться подключиться, и будет пробовать их последовательно, пока не найдет тот, к которому можно подключиться. Как только он подключится, он спросит у узла, кто является его хозяином, и перенаправит соединение туда.

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

person Chris Heald    schedule 04.09.2010
comment
Привет Крис, большое спасибо за отличный ответ. MongoDB кажется отличным продуктом, который используется в производстве несколькими сайтами как один из самых популярных продуктов, упоминаемых, когда кто-то говорит noSQL. Я понятия не имел о том, что mongoDB работает в одиночку над частью master/slave, так что это действительно открыло мне глаза. Теперь я обязательно проверю mongoDB поближе! - person Industrial; 05.09.2010
comment
Привет снова Крис. Не могли бы вы рассказать, как вы настроили свою репликацию? Нужна только строка slaveof в конфигурационном файле? - person Industrial; 05.09.2010
comment
@Industrial см. информацию на mongodb.org/display/DOCS/Replica+Sets. при его настройке. Если вы просто используете --slave, он не будет выполнять автоматический переход на другой ресурс. - person kristina; 05.09.2010