Изменить реакцию потока при добавлении нового узла в набор реплик MongoDB - PullRequest
0 голосов
/ 07 января 2020

Я использую MongoDB 4.0 как набор реплик из 3 узлов. 2 узла данных и 1 арбитр. Мое приложение (ASP. NET Core 2.2) использует поток изменений. Рассмотрим этот сценарий: мой основной узел выходит из строя, мой дополнительный узел становится основным, и я заменяю в своем наборе реплик узел, который не работает, новым узлом, и он начинает синхронизироваться. Что произойдет с моим потоком изменений в этом случае?

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

1 Ответ

0 голосов
/ 08 января 2020

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

Курсор потока изменений остается открытым, пока не произойдет одно из следующих действий:

  • Курсор явно закрыт.
  • Происходит недействительное событие; например, удаление или переименование коллекции.
  • Соединение с развертыванием MongoDB закрыто.
  • Если развертывание является кластером с сегрегацией, удаление сегмента может вызвать закрытие курсора открытого потока изменений. и закрытый курсор потока изменений может не быть полностью возобновляемым.

Все другие события, такие как выбор набора реплик, не влияют на поток изменений.

Для вашего второго вопроса этот ожидается, так как ваши предпочтения чтения явно secondary. Чтобы прочитать с первичного, если вторичный недоступен, вы хотите использовать настройку primaryPreferred .

...