Хранение файлов в API или в файловой системе микросервиса - PullRequest
0 голосов
/ 04 мая 2019

Я работаю над приложением, которое состоит из

  • Приложение Frontend
  • API, который мне нравится рассматривать как шлюз
  • Микросервисы, которые работают с бизнес-логикой и работают с БД

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

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


Этот подход в порядке?

Странно, что мой API gateway хранит и обслуживает файлы из собственной файловой системы? Если да, должен ли я передавать файлы из API в микросервис после загрузки, даже если файлы могут быть большими - или микросервис должен сам реализовывать определенный API?

Я надеюсь, что этот вопрос не будет интерпретирован как основанный на мнениях - я хотел бы знать, какой подход будет наилучшим, учитывая шаблон frontend-api-microservice и существуют ли какие-либо архитектурные стандарты, которые учитывают этот сценарий, а также если любой подход имеет это Гочас .

1 Ответ

0 голосов
/ 05 мая 2019

Основано на комментариях выше

Шлюз API

Цель шлюза - перенаправлять запросы и обрабатывать сквозные вопросы, такие как аутентификация, ведение журнала и т. Д.делать больше, чем это.Шлюз должен быть высокодоступным, и любая проблема со шлюзом означает, что вы не можете получить доступ к связанным службам.

Загрузка файла

Загрузка файла должна выполняться самой микросервисной службой.Ваш шлюз будет использоваться только для прохождения и получения потока.В зависимости от характера вашей системы, и если вы используете облачное хранилище, вы можете использовать шаблон, например, «ключ камердинера».https://docs.microsoft.com/en-us/azure/architecture/patterns/valet-key

...