Если данные охватывают несколько микросервисов, это зависит от варианта использования в бизнесе. На мой взгляд, есть несколько способов сделать это
Подход 1, запрос к микросервисам dbs (не предпочтительный подход)
Если ваши микроуслуги не слишком интенсивно загружаются, вы можете запрашивать данные из всех баз данных служб в непиковое время и вставлять записи в базу данных хранилища. Это не предпочтительный подход, поскольку вы по-прежнему оказываете дополнительную нагрузку на службы, но это проще. Также данные отчетности могут быть не в реальном времени.
Подход 2 Источник событий / CQRS
Этот подход очень предпочтителен, поскольку ваши модели записи и чтения полностью разделены. Короче говоря, если события - это события, генерируемые вашими различными микроуслугами, также будет обновляться модель чтения, называемая материализованным представлением. Если у вас есть требование, когда ваши отчетные данные требуют данных почти в реальном времени, то это путь для продвижения вперед. Вы можете настроить свою модель отчетности по своему усмотрению и создать несколько моделей отчетности с использованием событий. Но это сложный подход и требует соответствующего дизайна приложения. Однако преимущества бесчисленны. Вы можете узнать больше о Event Sourcing и CQRS, если вы заинтересованы.
Подход 3 имеет реплики только для чтения
Если вы используете облачные сервисы, вы можете создавать реплики своих баз данных только для чтения и использовать их для составления отчетов. это общепринятый подход, поскольку вы не влияете на транзакционные базы данных. но это может быть дорого, так как вы платите за дополнительные базы данных.