Представьте себе систему обработки, которая получает данные от других внутренних систем или от конечных точек REST, доступных в Интернете. После получения набор (фоновых) задач (вычисление ответа от ввода на основе базы данных или других веб-сервисов) работает с данными параллельно, некоторые последовательно друг за другом или некоторые задачи по завершении нескольких параллельных задач. Последняя (пограничная) задача может отправить результат на внешний веб-сервис или внести в таблицу базы данных.
Задачи могут быть спроектированы как простые службы, которые обрабатывают сообщения от message-queues
, доставленные ему другими такими службами, и отправляют результат в другую очередь для дальнейшей обработки. Вместо очереди система может использовать потоки для обработки. Я считаю, что этот подход (написание сервисов, связанных брокером сообщений) должен повторять обработку своих сценариев сбоя, масштабирования и пропускной способности.
Существуют ли какие-либо конкретные фреймворки (например, Flink, или Samza, или Storm, или Airflow, или Siddhi, или Hazelcast Jet) для реализации таких задач и их развертывания в кластере, который заботится о масштабировании и обработке сбоев, вместо того, чтобы реализовывать каждую задачу как подробные службы (например. весной) и масштабируйте их самостоятельно.