Какой шаблон Microservices подходит для передачи большого файла данных

Если для обработки несколькими микросервисами необходим большой файл JASON (10 МБ), какой шаблон корпоративной архитектуры / дизайна лучше всего использовать? Все данные в файле нужны каждому микросервису для его обработки.

1 ответ

  • Совместное использование большого набора данных может указывать на неоптимальное разбиение кодовой базы на сервисы. Желательно, чтобы вся обработка одного и того же домена выполнялась в рамках одного сервиса.
  • Когда несколько служб действительно выполняют значимую обработку для одного и того же набора данных, каждая из них должна иметь свою собственную копию. Совместное использование баз данных, как правило, - плохая идея!
  • Когда используются тяжелые данные, клонирование данных в "обычной" системе очередей (такой как RabbitMQ / SQS) довольно громоздко и неэффективно.
    • "Тяжелая" система массового обслуживания, такая как Kafka / Kinesis - может быть наиболее эффективной. Одна копия данных будет сохранена, и каждый сервис сможет прочитать ее из "общего" потока.

Храните его где-нибудь, откуда его могут прочитать другие микросервисы. Используя pub/sub или eventing - уведомляйте заинтересованные микросервисы, где публикуется файл. Другие микросервисы могут прочитать это сами.

  1. клиент / система отправляет событие в API, который реализует шаблон Saga, передавая ссылку на то, где находится файл (например, загруженный в корзину AWS S3).
  2. Каждое событие / шаг в шаблоне Saga обрабатывает файл в соответствии с их требованиями.
  3. клиент / система может запросить обновление, или исходный POST может быть разработан для передачи конечной точки службы обратного вызова / уведомления.
Другие вопросы по тегам