Обычно каждый слот запускает один параллельный экземпляр вашего конвейера. Таким образом, параллелизм задания равен количеству слотов, необходимых для его выполнения. (Используя группы совместного использования слотов, вы можете принудительно задать указанные c задачи в их собственные слоты, что затем увеличит количество требуемых слотов.)
Каждая задача (которая состоит из одного или нескольких операторов, соединенных вместе) выполняется в один Java поток.
Менеджер задач может создать столько слотов, сколько вы хотите. В типичных конфигурациях используется 1 ядро ЦП на слот, но для конвейеров с высокими требованиями к обработке может потребоваться 2 или более ядер на слот, а для конвейеров, которые в основном простаивают, вы можете go в другом направлении и настроить несколько слотов на ядро .
Все задачи / потоки, работающие в диспетчере задач, будут просто конкурировать за ресурсы ЦП, которые диспетчер задач может получить от машины или контейнера, в котором он размещен.
Все состояния локальные к одному экземпляру оператора (задаче), который его использует, поэтому весь доступ происходит внутри этого одного потока. Единственное место, где гипотетически может быть условие гонки, - это обратные вызовы onTimer и processElement в ProcessFunction, но эти методы синхронизированы, поэтому вам не нужно об этом беспокоиться. Поскольку весь доступ к состоянию является локальным, это приводит к высокой пропускной способности, низкой задержке и высокой масштабируемости.
В вашем примере, если параллелизм равен двум, у вас будет два слота, независимо выполняющих один и тот же лог c на разных кусках ваших данных. Если они используют состояние, то это будет состояние с разделением ключей, которым управляет Flink, который можно рассматривать как хранилище ключей / значений.
В случае данных датчика во времени windows вам не нужно беспокоиться о многопоточности. KeyBy разделит данные так, что один экземпляр будет обрабатывать все события и windows для некоторых датчиков, а другой экземпляр (при условии, что их два) будет обрабатывать остальные.