Какой шаблон Microservices подходит для передачи большого файла данных
Если для обработки несколькими микросервисами необходим большой файл JASON (10 МБ), какой шаблон корпоративной архитектуры / дизайна лучше всего использовать? Все данные в файле нужны каждому микросервису для его обработки.
1 ответ
- Совместное использование большого набора данных может указывать на неоптимальное разбиение кодовой базы на сервисы. Желательно, чтобы вся обработка одного и того же домена выполнялась в рамках одного сервиса.
- Когда несколько служб действительно выполняют значимую обработку для одного и того же набора данных, каждая из них должна иметь свою собственную копию. Совместное использование баз данных, как правило, - плохая идея!
- Когда используются тяжелые данные, клонирование данных в "обычной" системе очередей (такой как RabbitMQ / SQS) довольно громоздко и неэффективно.
- "Тяжелая" система массового обслуживания, такая как Kafka / Kinesis - может быть наиболее эффективной. Одна копия данных будет сохранена, и каждый сервис сможет прочитать ее из "общего" потока.
Храните его где-нибудь, откуда его могут прочитать другие микросервисы. Используя pub/sub или eventing - уведомляйте заинтересованные микросервисы, где публикуется файл. Другие микросервисы могут прочитать это сами.
- клиент / система отправляет событие в API, который реализует шаблон Saga, передавая ссылку на то, где находится файл (например, загруженный в корзину AWS S3).
- Каждое событие / шаг в шаблоне Saga обрабатывает файл в соответствии с их требованиями.
- клиент / система может запросить обновление, или исходный POST может быть разработан для передачи конечной точки службы обратного вызова / уведомления.