1)
Поток данных не предлагает проверку промежуточных результатов. Если веб-интерфейс хочет большего прогресса в отношении элемента, обрабатываемого в конвейере потока данных, пользовательские отчеты о ходе выполнения должны быть встроены в трубопровод.
Одна из идей - записывать обновления прогресса в таблицу приемников и выводить молекулы в разные части конвейера. То есть есть приемник BigQuery, в котором вы пишете строки, такие как ["element_idX", "PHASE-1 DONE"]. Затем внешний интерфейс может запросить эти результаты. (Я бы не стал перезаписывать старые строки лично, но многие подходы могут работать).
Вы можете сделать это, используя PCollection как в новом приемнике, так и в следующем шаге вашего конвейера.
2)
Использует ли ваша микросервисная архитектура подход конвейерного стиля "Трубы и фильтры"? То есть каждый сервис читает из источника (Kafka / RabbitMQ) и записывает данные, затем следующий потребляет их?
Вероятно, лучший способ настроить несколько различных конвейеров потока данных и вывести их результаты с использованием приемника Pub / Sub или Kafka, а следующий конвейер потреблять этот приемник Pub / Sub. Вы также можете отправить их в другое место, например BigQuery / GCS, чтобы при необходимости вы могли запросить эти результаты еще раз.
Существует также возможность использовать облачные функции вместо Dataflow, которые имеют Pub / Sub и триггеры GCS . Микросервисная система может быть настроена с несколькими облачными функциями.