Исключение & ldquo; время ожидания репликации истекло & rdquo; получено для операции массовой записи MongoDB

Если кто-то имеет дело с подобной проблемой дизайна и нуждается в синхронизации изменений на нескольких устройствах Android, я рекомендую проверить Google Cloud Messaging для Android (GCM).

Я работаю над одно решение, в котором изменения, сделанные на одном клиенте, должны распространяться на других клиентов. И я только что реализовал доказательство реализации концепции (server & amp; client), и это работает как прелесть.

В принципе, каждый клиент отправляет изменения дельты на сервер. Например. Идентификатор ресурса ABCD1234 изменился со значения 100 до 99.

Сервер проверяет эти изменения дельты в своей базе данных и либо одобряет изменение (клиент находится в синхронизации), либо обновляет свою базу данных или отклоняет изменение (клиент отсутствует sync).

Если изменение одобрено сервером, сервер затем уведомляет других клиентов (за исключением тех, кто отправил изменение дельты) через GCM и отправляет многоадресное сообщение с тем же дельта-изменением. Клиенты обрабатывают это сообщение и обновляют свою базу данных.

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

Имейте в виду, что если устройство слишком длинное, и в очереди GCM для доставки ожидается более 100 сообщений, GCM отбросит эти и отправит специальное сообщение, когда устройства вернутся в сеть. В этом случае клиент должен выполнить полную синхронизацию с сервером.

Также проверьте этот учебник , чтобы начать с реализации клиента CGM.

0
задан leon 20 March 2019 в 04:27
поделиться

1 ответ

Согласно вашему коду, вы упомянули проблему записи как Majority, а у вас набор реплик из 2 элементов, поэтому большинство будет равно 2. Также вы упомянули значение wtimeout как 10000 мс (10 секунд). Таким образом, ожидается, что все записи должны быть реплицированы с первичного на вторичный в течение 10 секунд, в противном случае система выдаст сообщение об ошибке, говорящее waiting for replication timed out.

Отвечая на ваш второй вопрос, да, документы будут успешно обновлены на первичном сервере, сообщение предназначено только для того документа, который не был реплицирован на вторичный сервер в течение указанного wtimeout времени в мс.

0
ответ дан Mani 20 March 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: