надежность:Шаблон "Ведущий / ведомый" обречен?
-
30-09-2019 - |
Вопрос
Все больше и больше баз данных NoSQL, находящихся в центре внимания, используют шаблон master / slave для обеспечения "доступности", но то, что он делает (по крайней мере, с моей точки зрения), создает слабое звено в цепочке, которое может оборваться в любой момент.- Хозяин выходит из строя, рабы перестают функционировать.
Это отличный способ обрабатывать большие объемы данных и выравнивать скорость чтения / записи, но с точки зрения доступности?Не так уж и много...
Из некоторых NoSQL я понимаю, что подчиненные устройства могут быть легко заменены на ведущие, но выполнение этого было бы головной болью для большинства приложений.Верно?
Так как же вы, люди, справляетесь с подобными вещами?Как работают базы данных master / slave в реальном мире?
Решение
Это довольно обобщенный вопрос;можете ли вы уточнить, о каких хранилищах данных вы конкретно говорите?
Я работал с MongoDB, и он справляется с этим очень изящно;каждый участник "набора реплик" (по сути, кластера ведущий-ведомый) имеет право стать ведущим.При подключении к набору реплик набор сообщит подключающемуся клиенту о каждом элементе в наборе.Если ведущий в наборе отключается, подчиненные устройства автоматически выбирают нового ведущего, а клиент (поскольку у него есть список всех узлов в наборе) будет пробовать новые узлы до тех пор, пока не подключится;узел, к которому он подключается, проинформирует клиента о новом главном устройстве, и клиент переключит свое соединение.Это обеспечивает полностью прозрачный переход на другой ресурс master / slave без каких-либо изменений в вашем приложении.
Очевидно, что это нормально для одиночных подключений, но как насчет перезапусков?Драйвер MongoDB также справляется с этим;он может принять список узлов, к которым нужно попытаться подключиться, и будет пробовать их последовательно, пока не найдет тот, к которому нужно подключиться.Как только он подключится, он спросит узел, кто его хозяин, и перешлет соединение туда.
Конечным результатом является то, что если у вас установлен набор реплик, вы можете фактически просто не беспокоиться о том, что взрыв какого-либо отдельного узла переведет вас в автономный режим.