Журнал + Мажоритар на 100% безопасен?

Я читал несколько статей о отказоустойчивости MongoDB, и некоторые люди жалуются, что этого никогда не добиться с помощью MongoDB (как в этой статье: http://hackingdistributed.com/2013/01/29/mongo-ft/), и это должно быть смущено.

Может ли кто-нибудь подтвердить (и, если возможно, показать мне соответствующие документы), что использования записи "Журнал + большинство" достаточно для того, чтобы 100% записей, которые мой драйвер сообщил как успешные, были написаны на длительный срок и не будут потерял, даже если какая-либо реплика не работает сразу после записи?

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

1 ответ

Решение

Правильно, поэтому, если вы выбираете запись в журнал, вы в основном гарантируете, что запись была произведена на диск одного узла. Если вы решите сделать запись большинства, вы гарантируете, что запись была произведена в память по крайней мере x числа узлов в вашем наборе реплик.

По умолчанию mongodb будет сбрасываться из памяти в журнал каждые 100 мс. При наличии ваших узлов реплики на разных машинах (физических или виртуальных), в идеале в разных центрах обработки данных, вы вряд ли когда-либо увидите, что ВСЕ узлы в наборе реплик с географически распределенной репликой отключаются в течение одних и тех же 100 мсек до того, как они попадут на диск.

В качестве альтернативы, чтобы гарантировать, что запись сделана на диск одного узла - используйте запись журнала.

Другие вопросы по тегам