Мы настроили конфигурацию набора репликации с 3 узлами для MongoDB. Я хочу знать, что происходит с операциями чтения / записи во время первичного переключения. Чтобы быть более точным, несколько операций чтения / записи были выполнены для основного узла от клиентов. Также было инициировано переключение первичной обмотки.
а) Они явно не работают. Вы несете ответственность за это. Я стараюсь повторить операцию после короткого периода отсрочки, если исключение / ошибка указывает, что операция не удалась из-за сбоя связи.
б) Неявно. После того, как была подана команда на переход, существует 10-секундный льготный период, в течение которого операции записи не принимаются. В течение этого времени первичный в основном ждет, пока вторичные не догонят его (необходимо это или нет). Для операций чтения: если они завершатся в течение льготного периода, все в порядке. В противном случае соединение закрывается сервером, вызывая ошибку на стороне бесплатного клиента.
c) Драйверы знают, что они подключены к набору реплик. Если основной уйдет вниз, водитель заметит. Нет первичного = нет операций записи. Любая операция записи, выполненная без основного, завершится ошибкой с соответствующим сообщением. Согласно чтению это зависит от вашего читать предпочтения. Читает с предпочтением primary
очевидно, произойдет сбой, пока нет основного, все остальные предпочтения чтения будут успешными. Обычно я отправляю свой запрос с предпочтением чтения по умолчанию primary
и когда он падает из-за отсутствия первичного элемента, я повторно отправляю запрос с предпочтением чтения secondaryPreferred
(для того редкого случая, когда первичный вышел из строя, а первый вторичный вышел из строя во время обработки исходной ошибки).
г) Я не эксперт по узлам, но драйвер узла поддерживается корпорацией Inc, поэтому можно с уверенностью предположить, что он поддерживает набор реплик и соответствует стандартам, описанным выше.