Автономия данных с использованием файлов в микросервисном приложении

Автономия данных с использованием файлов в микросервисном приложении
Автономия данных с использованием файлов в микросервисном приложении

Мы перестраиваем приложение на базе микросервисов и задаемся вопросом, как реализовать автономность данных, учитывая некоторые ограничения, с которыми мы сталкиваемся:

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

  • Целесообразно ли предоставлять службам прямой доступ к подпапке, содержащей данные, которыми они должны владеть?
  • Целесообразно ли иметь отдельную службу, отвечающую за исправление всех данных, или мы должны стремиться к тому, чтобы каждая служба отвечала за исправление своих собственных данных?

Вот надуманный пример того, что мы создаем:

Тот факт, что вы храните свои данные в файлах, и что они обновляются из внешнего источника, добавляет дополнительную проблему.

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

Кроме того, вы захотите, чтобы проверка обновления выполнялась только один раз, а не по одному экземпляру.

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

Если файлы в наборе могут быть разделены на их ретроспективные службы, вы можете сделать это и иметь несколько таких служб защиты файлов, по одной на группу файлов. Это было бы более микросервисным

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

Система push-сообщений или очередей может решить проблемы обновления без отдельной службы.


LetsCodeIt, 5 января 2023 г., 11:06