2016-12-17 5 views
1

У меня довольно простой микросервис, который считывает данные из кластера MongoDB, выполняет некоторые преобразования данных и предоставляет данные через REST API. Мне нужно обновить независимое хранилище данных сохранения, используя задание cron. Я мог бы создать отдельное приложение для обновления набора данных, но проще развернуть только одно приложение, существующее в группе автомасштабирования AWS (это для большого предприятия с большим количеством волокиты для выпуска новых приложений), и у вас есть один экземпляров обновляет набор данных через фоновое задание.Имейте только один микросервис выполнить фоновое задание в группе автоматического масштабирования

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

ответ

1

Есть ли лучший способ сделать это без создания отдельного приложения для записи БД?

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

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

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

+0

Спасибо, что ответили. Существуют ли опции (если да, что?), Чтобы «вычислять статистику без блокировки базы данных», кроме некоторого настраиваемого свойства, которое вводится в приложение? Будут десятки экземпляров приложения, и только один из них должен делать db (неважно, какое, но задание выполняется только один раз в час для всех экземпляров). – newToScala

+0

@newToScala Я не могу ответить на этот вопрос, пока не узнаю больше о характере вашей информации, используемых запросах, статистике, скоплениях, скорости потока данных и т. Д. –