Мы перестраиваем приложение на базе микросервисов и задаемся вопросом, как реализовать автономность данных, учитывая некоторые ограничения, с которыми мы сталкиваемся:
Приложение построено на наборе файлов, которые ему необходимо синхронизировать с облачной службой. У нас очень ограниченная пропускная способность, поэтому нам приходится использовать существующую функциональность: мы отправляем CRC текущих файлов и получаем патч для обновления содержимого папки.
Вот надуманный пример того, что мы создаем:
Тот факт, что вы храните свои данные в файлах, и что они обновляются из внешнего источника, добавляет дополнительную проблему.
Если у вас есть, скажем, 2 экземпляра службы погоды, то при чтении и обновлении одного и того же файла у них возникнут проблемы с блокировкой.
Кроме того, вы захотите, чтобы проверка обновления выполнялась только один раз, а не по одному экземпляру.
Поэтому я бы посоветовал спрятать файлы за другой службой, которая может заниматься кэшированием, обновлением, обходом блокировок и т.д.
Если файлы в наборе могут быть разделены на их ретроспективные службы, вы можете сделать это и иметь несколько таких служб защиты файлов, по одной на группу файлов. Это было бы более микросервисным
Или вы можете отделить службу обновления и использовать базу данных для хранения информации, а не файловую систему, что решит проблемы блокировки.
Система push-сообщений или очередей может решить проблемы обновления без отдельной службы.