Может ли подчиненный процесс динамически выделяться в зависимости от нагрузки с использованием потока данных Spring Cloud?
В настоящее время мы используем Spring batch - дистанционное разделение на части для масштабирования процесса пакетной обработки. Думаете об использовании облачного потока данных, но хотели бы знать, могут ли динамически выделяться подчиненные устройства на основе нагрузки? мы развернуты в Google Cloud и, следовательно, хотим подумать об использовании поддержки потока данных Spring Cloud для kubernetes, если поток данных Cloud будет соответствовать нашим потребностям?
1 ответ
При использовании пакетных расширений Spring Cloud Task (особенно DeployerPartitionHandler
), рабочие запускаются динамически по мере необходимости. Тот PartitionHandler
позволяет настроить максимальное количество рабочих, а затем обрабатывать каждый раздел как независимый рабочий до этого максимума (обработка остальных разделов по мере того, как другие заканчивают работу). "Динамический" аспект действительно контролируется количеством разделов, возвращаемых Partitioner
, Чем больше разделов возвращено, тем больше рабочих запущено.
Вы можете увидеть простой пример, настроенный для использования CloudFoundry в этом репо: https://github.com/mminella/S3JDBC Основное различие между ним и тем, что вам нужно, заключается в том, что вы должны поменять местами CloudFoundryTaskLauncher
для KubernetesTaskLauncher
и это соответствующая конфигурация.