Получу ли я что-нибудь, используя «правильные» реплики для базы данных MongoDB, доступной только для чтения? - PullRequest
0 голосов
/ 29 мая 2020

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

Чтобы развернуть «кластер» высокой доступности, я создаю несколько экземпляров (или контейнеров), запускающих приложение, каждый из которых имеет доступ к копии состояния в локально подключенном хранилище. Поместив их за балансировщиком нагрузки с регулярными проверками работоспособности и автомасштабированием (или в кластере Kubernetes как ReplicaSet), я получаю изоляцию, избыточность, легкий откат (с использованием версионного хранилища) и простую настройку практически в любой среде.

Ключевая идея здесь состоит в том, что, поскольку база данных доступна только для чтения, это в некотором смысле приложение без состояния. Таким образом, я могу относиться к нему как к любому другому c поставщику информации

У этой настройки есть много очевидных преимуществ. Тем не менее, меня всегда мучило чувство, будто я чего-то упускаю. Учитывая контекст только для чтения, есть ли еще какая-то причина, по которой может быть лучше запустить «правильный» кластер MongoDB?

1 Ответ

0 голосов
/ 29 мая 2020

Если вы не против перебоев в работе одного узла и не возражаете против отключения системы во время обновлений, то это, вероятно, нормальное развертывание. Вы можете получить более безопасный дамп и восстановление, используя mongodump и mongorestore, а не tar, но помимо этого эта настройка должна работать для развертывания только для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...