Флинк использует термин параллелизм довольно стандартным способом - он относится к запуску нескольких копий одного и того же вычисления одновременно на нескольких процессорах, но с разными данными. Когда мы говорим о параллелизме по отношению к Flink, он может применяться к оператору с параллельными экземплярами или к конвейеру или заданию (состоящему из нескольких операторов).
В Flink несколько операторов могут работать по отдельности и одновременно. Например, в этом задании
source ---> map ---> sink
источник, карта и приемник могут работать одновременно в разных процессорах, но мы не будем называть это параллельным вычислением. (Распределенный, да.)
В типичном развертывании Flink число временных интервалов задач равно параллелизму задания, и каждый слот выполняет один полный параллельный фрагмент приложения. Каждый параллельный экземпляр цепочки операторов будет соответствовать задаче. Таким образом, в приведенном выше простом примере источник, карта и приемник могут быть объединены в цепочку и выполнены в одной задаче. Если вы развернете эту работу с параллелизмом два, тогда будет две задачи. Но вы можете отключить цепочку и запустить каждый оператор в отдельной задаче, в этом случае вы будете использовать шесть задач для выполнения задания с параллелизмом два.
Да, с KeyedStream, число различных ключей является верхней границей параллелизма.
CEP может работать параллельно, если он работает на KeyedStream (в этом случае сопоставление с образцом выполняется независимо для каждого ключа).