Вы можете рассматривать tasks
в качестве действующего экземпляра болта/носика. Это фиксировано (статическое) и никогда не может быть изменено во время работы топологии? Исполнители фактически являются потоками, которые можно изменять динамически.
если вы задали num tasks = 4 и executors = 2, то каждый поток будет запускать 2 задания. Но задачи выполняются поочередно по исполнителям (каждый поток запускает одну задачу за раз). В результате, даже если у вас есть 4 экземпляра болта, все они не запускаются за один раз. Так что же тогда использовать?
Создание нескольких задач для каждого исполнителя даст вам возможность изменить количество исполнителей с помощью команды rebalance
, не убивая топологию. Поэтому в будущем, если вы добавите дополнительный узел в кластер (или по какой-либо причине), вы можете легко изменить количество исполнителей на 4, чтобы теперь для каждой задачи был выделенный поток для обработки (причина, почему #threads <= #tasks
истинна, поскольку больше исполнителей, чем задача не даст никакой пользы). Таким образом, теперь каждые 4 экземпляра вашего желоба/болта (называемые компонентами) могут запускаться параллельно одновременно. Это то, как грозовые мазки.
Да, я согласен с вашими комментариями. Поэтому я имею в виду, что масштабирование имеет ограничение на количество задач. Если количество исполнителей становится равным числу задач, что означает, что у каждого исполнителя есть только одна задача, тогда нет никакого смысла масштабирования. На данный момент нам необходимо развернуть новую топологию. –
Задачи @HariprasadTaduru не всегда распределяются поровну между рабочими, штурм пытается, но если у вас есть нечетное число работников и четное количество задач: оно не может быть симметричным. Даже если вы не распределяете одинаково нагрузку на один тип болта/носика, основанный на всех болтах/носиках, он действительно разделен, и ваши работники разделяют нагрузку вашей топологии (иногда не очень хорошо в зависимости от количества задач/исполнителей) , Он масштабируется, если вы хотите лучше, просто используйте большее количество задач/исполнителей в зависимости от вашего числа работников, чтобы нагрузка могла быть лучше распределена в кластере. – zenbeni