2014-02-21 2 views
0

Предположим, у меня есть набор реплик с одним основным P и тремя вторичными S1, S2 и S3. Предположим, что приложение создает Mongo clent с этим constructor. Семена список {P, S1, S2}. Обратите внимание, что список не содержит S3.Конструктор MongoClient с семенами

Предположим, что приложение использует secondPreferred, а оба S1 и S2 не работают. Будут ли запросы отправляться в P или S3?

Javadoc говорит It will find all members (the master will be used by default), и я думаю, что запросы будут отправлены в S3. Правильно ли это?

ответ

2

Список посещений именно то, что драйвер запросит этот список, чтобы понять карту набора реплик. Это означает, что он может фактически использовать члены NOT в этом списке, то есть использовать S3.

Когда драйвер должен обнаружить изменение в наборе реплик, либо путем перехода на другой ресурс, либо путем запуска, он запросит одного из членов списка посещений в основном rs.status() и сохранит результат сам по себе на время что драйвер считает целесообразным его обновить, или что-то происходит, что вынуждает водителя обновлять его (например, переход на другой ресурс).

Так что да, это будет для S3.

+0

Спасибо. Кстати, похоже, нет никакой разницы между семенами {P} и {P, S1, S2, S3}. Правильно ли это? – Michael

+1

@ Майкл. Общая ** лучшая ** практика состоит в том, чтобы иметь достаточно ** семян ** в соединении, чтобы, если узлы опущены, есть что-то, что может сказать вам *, которые * узлы ** вверх **. В конкретном случае, о котором вы упомянули, запросы будут отправляться на 'S3', даже если * unseeded *, потому что' P' был включен и знал о 'S3' как член. Но это все еще не гарантировано ** только по принципу «secondaryPreferred». Остальное зависит от вашей конфигурации. Поэтому запросы ** могут ** перейти на 'P' в предпочтении. Все зависит от того, как вы настроены. –

+0

@NeilLunn Спасибо за объяснение. Не могли бы вы привести пример сценария, когда запросы с 'secondPreferred' и no tags перейдут на' P', если 'S3' вверх? – Michael

Смежные вопросы